The3vilM0nk3y

apis/helpers.js

Apr 20th, 2022 (edited)
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. let doLog = true;
  2. let logLevel = 1;
  3. let visited = ["home"];
  4. let finalList = [];
  5. let usePreciseNaming = false;
  6. let filterList = [];
  7. /** @param {NS} ns */
  8. export async function getAllServers(ns, filters, preciceNaming = false) {
  9.  
  10. visited = ["home"];
  11. finalList = [];
  12. usePreciseNaming = preciceNaming;
  13. filterList = filters;
  14.  
  15. await recurse(ns, "home");
  16. return finalList;
  17. }
  18. async function recurse(ns, root) {
  19. let list = ns.scan(root);
  20. if (await ignored(root, ns) == false) finalList.push(root);
  21. for (let server of list) {
  22. //termiate running scripts
  23. if (!visited.includes(server)) {
  24. //set we have visited it
  25. visited.push(server);
  26. //run contagious with that server as target
  27. await recurse(ns, server);
  28. }
  29. }
  30. }
  31. async function ignored(s, ns) {
  32. if (usePreciseNaming == false) {
  33. for (let i of filterList) {
  34. log(ns, "Comparing - " + s + " to " + i, 3);
  35. if (s.includes(i) || s == i) {
  36. log(ns, "In ignore list - " + s, 3);
  37. return true;
  38. }
  39. }
  40. } else {
  41. if (filterList.includes(s)) {
  42. log(ns, "[PM] - In ignore list - " + s, 3);
  43. return true;
  44. }
  45. }
  46. log(ns, "Not in ignore list - " + s, 3);
  47. return false;
  48. }
  49. function log(ns, s, level) {
  50. if (doLog && level <= logLevel) ns.tprint(s);
  51. }
  52. export async function sortArray(sortArray,sortFilter){
  53. for (let sort of sortFilter){
  54. sortArray = sortArray.sort((a,b) => (a[sort[0]] - b[sort[0]]) * sort[1]);
  55. }
  56. return sortArray;
  57. }
  58.  
  59. //Takes an array of arrays and prints them in columns with spacing in between
  60. //example input Array:
  61. /*
  62. [
  63. ["Col A", "Col B"],
  64. ["Something", 23],
  65. ["More", 999999],
  66. ]
  67. */
  68. export function columnize(ns, array, spacing) {
  69. let cols = array[0].length;
  70. let longest = [];
  71. //initialize longest for each column as 0
  72. for (let i = 0; i < cols; i++) {
  73. longest[i] = 0;
  74. }
  75. for (let s of array) {
  76. //look for the longest string in each column
  77. for (let i = 0; i < cols; i++) {
  78. let entryLength = s[i].toString().length;
  79. if (entryLength > longest[i]) longest[i] = entryLength;
  80. }
  81. }
  82. for (let s of array){
  83. let str = " ";
  84. for (let i = 0; i < cols; i++) {
  85. str += s[i].toString();
  86. //add padding and spacing if not last entry
  87. if (i < cols - 1){
  88. let padding = longest[i] - s[i].toString().length;
  89. for (let p = 0; p < padding + spacing; p++){
  90. str += " ";
  91. }
  92. }
  93. }
  94. ns.tprint(str);
  95. }
  96. }
Add Comment
Please, Sign In to add comment