import {
string_sanitise,
object_parse_arguments,
} from "nicoty.lib.no.netscript.js";
import {
array_get_servers,
} from "nicoty.lib.servers.js";
import {
void_kill_script_named_server_named,
} from "nicoty.lib.kill.js";
export const main = async (object_netscript) => {
const object_constants = {
string_script_this: object_netscript.getScriptName(),
object_argument_names: {
script: {
short: "c",
long: "script",
},
server: {
short: "e",
long: "server",
},
help: {
short: "h",
long: "help",
},
},
};
const void_print_help = () => {
const object_argument_names = object_constants.object_argument_names;
object_netscript.tprint(
string_sanitise(`
DESCRIPTION
Kill all running scripts.
Optionally, kill only named scripts instead.
Optionally, kill only scripts on named servers instead.
Optionally, kill only named scripts on named servers instead.
USAGE
run ${object_constants.string_script_this} [FLAGS ...] [OPTIONS ...]
FLAGS
-${object_argument_names.help.short}, --${object_argument_names.help.long}
Displays this message then exits.
OPTIONS
-${object_argument_names.script.short}, --${object_argument_names.script.long} <SCRIPT>
SCRIPT = The name of a script to kill.
-${object_argument_names.server.short}, --${object_argument_names.server.long} <SERVER>
SERVER = The name of a server on which scripts will be killed.`
)
);
};
const void_kill_scripts_named_server_named = ({
string_server: e,
array_scripts: c,
}) =>
c.forEach((string_script) =>
void_kill_script_named_server_named({
object_netscript: object_netscript,
string_server: e,
string_script: string_script,
})
);
const void_kill_scripts_named_servers_named = ({
array_servers: e,
array_scripts: c,
}) =>
e.forEach((string_server) =>
void_kill_scripts_named_server_named({
string_server: string_server,
array_scripts: c,
})
);
const void_kill_scripts_named = (array_scripts) =>
void_kill_scripts_named_servers_named({
array_servers: array_get_servers({ object_netscript: object_netscript }),
array_scripts: array_scripts,
});
const void_kill_scripts_server_named = (string_server) =>
object_netscript
.ps(string_server)
.forEach(
(object_script) =>
object_script.filename !== object_constants.string_script_this &&
object_netscript.kill(
object_script.filename,
string_server,
...object_script.args
)
);
const void_kill_scripts_servers_named = (array_servers) =>
array_servers.forEach(
(string_server) =>
void_kill_scripts_server_named(string_server)
);
const void_kill_scripts = () =>
void_kill_scripts_servers_named(
array_get_servers({ object_netscript: object_netscript })
);
const void_main = async () => {
const
array_servers = [],
array_scripts = [];
let boolean_print_help = !1;
const
object_argument_names = object_constants.object_argument_names,
object_arguments = object_parse_arguments({array_arguments: object_netscript.args});
for (const string_argument in object_arguments)
if (object_arguments.hasOwnProperty(string_argument)) {
const argument_value = object_arguments[string_argument];
switch (string_argument) {
case object_argument_names.script.short:
case object_argument_names.script.long:
"object" == typeof argument_value
? array_scripts.push(...argument_value)
: array_scripts.push(argument_value);
break;
case object_argument_names.server.short:
case object_argument_names.server.long:
"object" == typeof argument_value
? array_servers.push(...argument_value)
: array_servers.push(argument_value);
break;
case object_argument_names.help.short:
case object_argument_names.help.long:
boolean_print_help = argument_value;
break;
case "_":
continue;
default:
const string_message_error = `Unknown argument passed: \"${string_argument}\".`;
object_netscript.tprint(`ERROR: ${string_message_error}`);
throw new Error(string_message_error);
}
}
if (boolean_print_help)
return void_print_help(object_netscript);
array_scripts.length > 0
? array_servers.length > 0
? void_kill_scripts_named_servers_named({
array_servers: array_servers,
array_scripts: array_scripts,
})
: void_kill_scripts_named(array_scripts)
: array_servers.length > 0
? void_kill_scripts_servers_named(array_servers)
: void_kill_scripts();
};
await void_main();
};