mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
53 lines
1.8 KiB
Dart
53 lines
1.8 KiB
Dart
import 'package:fl_lib/fl_lib.dart';
|
|
|
|
enum SystemType {
|
|
linux(linuxSign),
|
|
bsd(bsdSign),
|
|
windows(windowsSign);
|
|
|
|
final String? value;
|
|
|
|
const SystemType([this.value]);
|
|
|
|
static const linuxSign = '__linux';
|
|
static const bsdSign = '__bsd';
|
|
static const windowsSign = '__windows';
|
|
|
|
/// Used for parsing system types from shell output.
|
|
///
|
|
/// This method looks for specific system signatures in the shell output
|
|
/// and returns the corresponding SystemType. If no signature is found,
|
|
/// it defaults to Linux but logs the detection failure for debugging.
|
|
static SystemType parse(String value) {
|
|
// Log the raw value for debugging purposes (truncated to avoid spam)
|
|
final truncatedValue = value.length > 100 ? '${value.substring(0, 100)}...' : value;
|
|
|
|
if (value.contains(windowsSign)) {
|
|
Loggers.app.info('System detected as Windows from signature in: $truncatedValue');
|
|
return SystemType.windows;
|
|
}
|
|
if (value.contains(bsdSign)) {
|
|
Loggers.app.info('System detected as BSD from signature in: $truncatedValue');
|
|
return SystemType.bsd;
|
|
}
|
|
|
|
// Log when falling back to Linux detection
|
|
if (value.trim().isEmpty) {
|
|
Loggers.app.warning(
|
|
'System detection received empty input, defaulting to Linux. '
|
|
'This may indicate a script execution issue.',
|
|
);
|
|
} else if (!value.contains(linuxSign)) {
|
|
Loggers.app.warning(
|
|
'System detection could not find any known signatures (Windows: $windowsSign, '
|
|
'BSD: $bsdSign, Linux: $linuxSign) in output: "$truncatedValue". '
|
|
'Defaulting to Linux, but this may cause incorrect parsing.',
|
|
);
|
|
} else {
|
|
Loggers.app.info('System detected as Linux from signature in: $truncatedValue');
|
|
}
|
|
|
|
return SystemType.linux;
|
|
}
|
|
}
|