Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let doLog = true;
- let logLevel = 1;
- let visited = ["home"];
- let finalList = [];
- let usePreciseNaming = false;
- let filterList = [];
- /** @param {NS} ns */
- export async function getAllServers(ns, filters, preciceNaming = false) {
- visited = ["home"];
- finalList = [];
- usePreciseNaming = preciceNaming;
- filterList = filters;
- await recurse(ns, "home");
- return finalList;
- }
- async function recurse(ns, root) {
- let list = ns.scan(root);
- if (await ignored(root, ns) == false) finalList.push(root);
- for (let server of list) {
- //termiate running scripts
- if (!visited.includes(server)) {
- //set we have visited it
- visited.push(server);
- //run contagious with that server as target
- await recurse(ns, server);
- }
- }
- }
- async function ignored(s, ns) {
- if (usePreciseNaming == false) {
- for (let i of filterList) {
- log(ns, "Comparing - " + s + " to " + i, 3);
- if (s.includes(i) || s == i) {
- log(ns, "In ignore list - " + s, 3);
- return true;
- }
- }
- } else {
- if (filterList.includes(s)) {
- log(ns, "[PM] - In ignore list - " + s, 3);
- return true;
- }
- }
- log(ns, "Not in ignore list - " + s, 3);
- return false;
- }
- function log(ns, s, level) {
- if (doLog && level <= logLevel) ns.tprint(s);
- }
- export async function sortArray(sortArray,sortFilter){
- for (let sort of sortFilter){
- sortArray = sortArray.sort((a,b) => (a[sort[0]] - b[sort[0]]) * sort[1]);
- }
- return sortArray;
- }
- //Takes an array of arrays and prints them in columns with spacing in between
- //example input Array:
- /*
- [
- ["Col A", "Col B"],
- ["Something", 23],
- ["More", 999999],
- ]
- */
- export function columnize(ns, array, spacing) {
- let cols = array[0].length;
- let longest = [];
- //initialize longest for each column as 0
- for (let i = 0; i < cols; i++) {
- longest[i] = 0;
- }
- for (let s of array) {
- //look for the longest string in each column
- for (let i = 0; i < cols; i++) {
- let entryLength = s[i].toString().length;
- if (entryLength > longest[i]) longest[i] = entryLength;
- }
- }
- for (let s of array){
- let str = " ";
- for (let i = 0; i < cols; i++) {
- str += s[i].toString();
- //add padding and spacing if not last entry
- if (i < cols - 1){
- let padding = longest[i] - s[i].toString().length;
- for (let p = 0; p < padding + spacing; p++){
- str += " ";
- }
- }
- }
- ns.tprint(str);
- }
- }
Add Comment
Please, Sign In to add comment