findCommand($cmd) === null) { $missing[] = $cmd; } } if (!empty($missing)) { return CheckResult::fail('missing system commands: ' . implode(', ', $missing), 'build-tools-bsd', [$missing]); } return CheckResult::ok(); } #[AsFixItem('build-tools-bsd')] public function fixBuildTools(array $missing): bool { if (get_current_user() !== 'root') { $prefix = 'sudo '; logger()->warning('Current user is not root, using sudo for running command'); } else { $prefix = ''; } try { shell(true)->exec("ASSUME_ALWAYS_YES=yes {$prefix}pkg install -y " . implode(' ', $missing)); } catch (RuntimeException) { return false; } return true; } }