true, 'version' => $version] : ['installed' => false]; } public static function service($name, $action = 'restart') { exec(self::get_super_user_bin . 'service ' . safe_cmd($name, $action), $output, $exit_code); display($output); check_for_error($exit_code, "Unable to {$action} Service called: {$name}"); return $exit_code; } public static function systemctl($name, $action = 'enable') { exec(self::get_bin . 'systemctl ' . safe_cmd($action, $name), $output, $exit_code); check_for_error($exit_code, "Unable to {$action} Service called: {$name}"); return $exit_code; } public static function upgrade($prog) { exec(self::get_user_bin . 'apt-get upgrade -y ' . safe_cmd_quotes($prog) . stderr(), $output, $exit_code); display($output); check_for_error($exit_code, "Unable to upgrade: {$prog}"); return $exit_code; } public static function install($prog) { exec(self::get_user_bin . 'apt-get install -y ' . safe_cmd_quotes($prog) . stderr(), $output, $exit_code); display($output); check_for_error($exit_code, "Unable to install: {$prog}"); return $exit_code; } public static function uninstall($prog) { exec(self::get_user_bin . 'apt-get remove -y ' . safe_cmd_quotes($prog) . stderr(), $output, $exit_code); display($output); check_for_error($exit_code, "Unable to uninstall: {$prog}"); return $exit_code; } public static function add_repo($repo) { exec(self::get_user_bin . 'add-apt-repository -y -u ' . safe_cmd_quotes($repo) . stderr(), $output, $exit_code); display($output); // -u = DO UPDATE once done... check_for_error($exit_code, "Unable to uninstall: {$repo}"); return $exit_code; } public static function update() { exec(self::get_user_bin . 'apt-get update -y ' . stderr(), $output, $exit_code); display($output); return $exit_code; } public static function full_update() { exec(self::get_user_bin . 'apt-get update -y && '. self::get_user_bin . 'apt-get upgrade -y && ' . self::get_user_bin . 'apt-get autoremove -y && ' . self::get_user_bin . 'apt-get autoclean -y' . stderr(), $output, $exit_code); display($output); return $exit_code; } public static function chmod_on_folders($dir, $kind) { if (!is_dir($dir)) { $exit_code = false; } else { $perm = get_perms($kind); exec(self::get_user_bin . 'find ' . safe_cmd($dir) . ' -type d -exec ' . self::get_bin . 'chmod ' . $perm . ' {} \;', $output, $exit_code); } check_for_error($exit_code, "Unable to chmod folders in: {$dir}"); return $exit_code; } public static function chmod_on_files($dir, $kind) { if (!is_dir($dir)) { $exit_code = false; } else { $perm = get_perms($kind); exec(self::get_user_bin . 'find ' . safe_cmd($dir) . ' -type f -exec ' . self::get_bin . 'chmod ' . $perm . ' {} \;', $output, $exit_code); } check_for_error($exit_code, "Unable to chmod files in: {$dir}"); return $exit_code; } public static function write_protect_file($file) { if (!is_file($file)) { $exit_code = false; } else { exec(self::get_user_bin . 'chattr +i ' . safe_cmd($file), $output, $exit_code); } check_for_error($exit_code, "Unable to write protect: {$file}"); return $exit_code; } public static function unwrite_protect_file($file) { if (!is_file($file)) { $exit_code = false; } else { exec(self::get_user_bin . 'chattr -i ' . safe_cmd($file), $output, $exit_code); } check_for_error($exit_code, "Unable to un-write protect: {$file}"); return $exit_code; } } // end of neato installer commands