handleWebdavStart method
Future<void>
handleWebdavStart(
- ArgResults argResults
)
Implementation
Future<void> handleWebdavStart(ArgResults argResults) async {
final bool background = argResults['background'] ?? false;
final bool isDaemon = argResults['daemon'] ?? false;
final int port = int.tryParse(argResults['port'] ?? '8080') ?? 8080;
if (isDaemon) {
await handleMount(argResults);
return;
}
final existingPid = await config.readWebdavPid();
if (existingPid != null) {
final isRunning = await _isProcessRunning(existingPid);
if (isRunning) {
stderr.writeln(
'\u274c WebDAV server is already running (PID: $existingPid).');
exit(1);
} else {
await config.clearWebdavPid();
}
}
if (background) {
print('\ud83d\ude80 Starting WebDAV server in background...');
try {
final process = await Process.start(
Platform.executable,
[
Platform.script.toFilePath(),
'webdav-start',
'--daemon',
'--port=$port'
],
mode: ProcessStartMode.detached,
);
await Future.delayed(Duration(milliseconds: 1000));
final isRunning = await _isProcessRunning(process.pid);
if (!isRunning) {
stderr.writeln('\u274c Failed to start background process');
await config.clearWebdavPid();
exit(1);
}
await config.saveWebdavPid(process.pid);
print('\u2705 WebDAV server started (PID: ${process.pid})');
print(' URL: http://localhost:$port/');
print(' User: filen / Pass: filen-webdav');
exit(0);
} catch (e) {
stderr.writeln('\u274c Failed to start background process: $e');
exit(1);
}
}
print('\ud83d\ude80 Starting WebDAV server in foreground...');
print(' (Press Ctrl+C to stop)');
await handleMount(argResults);
}