handleWebdavStop method

Future<void> handleWebdavStop(
  1. ArgResults argResults
)

Implementation

Future<void> handleWebdavStop(ArgResults argResults) async {
  print('\ud83d\uded1 Stopping WebDAV server...');
  final pid = await config.readWebdavPid();
  if (pid == null) {
    print('\u274c Server does not appear to be running.');
    exit(1);
  }

  try {
    final exists = await _isProcessRunning(pid);
    if (!exists) {
      print('\u26a0\ufe0f Process is not running. Cleaning up.');
      await config.clearWebdavPid();
      exit(0);
    }

    Process.killPid(pid, ProcessSignal.sigterm);
    await Future.delayed(Duration(milliseconds: 500));

    if (await _isProcessRunning(pid)) {
      Process.killPid(pid, ProcessSignal.sigkill);
      await Future.delayed(Duration(milliseconds: 200));
    }

    print('\u2705 Server stopped (PID: $pid).');
  } catch (e) {
    print('\u26a0\ufe0f Error terminating process: $e');
  }

  await config.clearWebdavPid();
}