mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-27 16:37:33 +01:00
aa80cf6451
Reverted ToastVariant back to an enum internally. Still exposed to player as just possible strings. Changed all 1-line documentation comments to actually be 1-line. Moved some because they were not providing documentation for the thing they were trying to.
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
/**
|
|
* Helper functions that implement "directory" functionality in the Terminal.
|
|
* These aren't "real" directories, it's more of a pseudo-directory implementation
|
|
* that uses mainly string manipulation.
|
|
*
|
|
* This file contains function that deal with Server-related directory things.
|
|
* Functions that deal with the string manipulation can be found in
|
|
* ./DirectoryHelpers.ts
|
|
*/
|
|
import { isValidDirectoryPath, isInRootDirectory, getFirstParentDirectory } from "./DirectoryHelpers";
|
|
import { BaseServer } from "../Server/BaseServer";
|
|
|
|
/**
|
|
* Given a directory (by the full directory path) and a server, returns all
|
|
* subdirectories of that directory. This is only for FIRST-LEVEl/immediate subdirectories
|
|
*/
|
|
export function getSubdirectories(serv: BaseServer, dir: string): string[] {
|
|
const res: string[] = [];
|
|
|
|
if (!isValidDirectoryPath(dir)) {
|
|
return res;
|
|
}
|
|
|
|
let t_dir = dir;
|
|
if (!t_dir.endsWith("/")) {
|
|
t_dir += "/";
|
|
}
|
|
|
|
function processFile(fn: string): void {
|
|
if (t_dir === "/" && isInRootDirectory(fn)) {
|
|
const subdir = getFirstParentDirectory(fn);
|
|
if (subdir !== "/" && !res.includes(subdir)) {
|
|
res.push(subdir);
|
|
}
|
|
} else if (fn.startsWith(t_dir)) {
|
|
const remaining = fn.slice(t_dir.length);
|
|
const subdir = getFirstParentDirectory(remaining);
|
|
if (subdir !== "/" && !res.includes(subdir)) {
|
|
res.push(subdir);
|
|
}
|
|
}
|
|
}
|
|
|
|
for (const script of serv.scripts) {
|
|
processFile(script.filename);
|
|
}
|
|
|
|
for (const txt of serv.textFiles) {
|
|
processFile(txt.fn);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
/** Returns true, if the server's directory itself or one of its subdirectory contains files. */
|
|
export function containsFiles(server: BaseServer, dir: string): boolean {
|
|
const dirWithTrailingSlash = dir + (dir.slice(-1) === "/" ? "" : "/");
|
|
|
|
return [...server.scripts.map((s) => s.filename), ...server.textFiles.map((t) => t.fn)].some((filename) =>
|
|
filename.startsWith(dirWithTrailingSlash),
|
|
);
|
|
}
|