mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-22 15:43:49 +01:00
Add support for the mv command in NS
This commit is contained in:
parent
e9db656e13
commit
bedea0ac73
20
dist/bitburner.d.ts
vendored
20
dist/bitburner.d.ts
vendored
@ -4099,6 +4099,26 @@ export declare interface NS extends Singularity {
|
||||
*/
|
||||
atExit(f: () => void): void;
|
||||
|
||||
/**
|
||||
* Move a file on the target server.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* NS2 exclusive
|
||||
*
|
||||
* Move the source file to the specified destination on the target server.
|
||||
*
|
||||
* This command only works for scripts and text files (.txt). It cannot, however, be used
|
||||
* to convert from script to text file, or vice versa.
|
||||
*
|
||||
* This function can also be used to rename files.
|
||||
*
|
||||
* @param host - Host of target server.
|
||||
* @param source - Filename of the source file.
|
||||
* @param destination - Filename of the destination file.
|
||||
*/
|
||||
mv(host: string, source: string, destination: string): void;
|
||||
|
||||
/**
|
||||
* Parse command line flags.
|
||||
* @remarks
|
||||
|
38
markdown/bitburner.ns.mv.md
Normal file
38
markdown/bitburner.ns.mv.md
Normal file
@ -0,0 +1,38 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [NS](./bitburner.ns.md) > [atExit](./bitburner.ns.atexit.md)
|
||||
|
||||
## NS.mv() method
|
||||
|
||||
Move a file on the target server.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
mv(host: string, source: string, destination: string): void;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| host | string | Host of target server. |
|
||||
| source | string | Filename of the source file. |
|
||||
| destination | string | Filename of the destination file. |
|
||||
|
||||
<b>Returns:</b>
|
||||
|
||||
void
|
||||
|
||||
## Remarks
|
||||
|
||||
RAM cost: 0 GB
|
||||
|
||||
NS2 exclusive
|
||||
|
||||
Move the source file to the specified destination on the target server.
|
||||
|
||||
This command only works for scripts and text files (.txt). It cannot, however, be used
|
||||
to convert from script to text file, or vice versa.
|
||||
|
||||
This function can also be used to rename files.
|
@ -207,6 +207,7 @@ export const RamCosts: IMap<any> = {
|
||||
wget: 0,
|
||||
getFavorToDonate: RamCostConstants.ScriptGetFavorToDonate,
|
||||
getPlayer: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
mv: 0,
|
||||
getOwnedSourceFiles: RamCostConstants.ScriptGetOwnedSourceFiles,
|
||||
|
||||
// Singularity Functions
|
||||
|
@ -697,8 +697,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
workerScript.log(
|
||||
"weaken",
|
||||
() =>
|
||||
`'${server.hostname}' security level weakened to ${
|
||||
server.hackDifficulty
|
||||
`'${server.hostname}' security level weakened to ${server.hackDifficulty
|
||||
}. Gained ${numeralWrapper.formatExp(expGain)} hacking exp (t=${numeralWrapper.formatThreads(threads)})`,
|
||||
);
|
||||
workerScript.scriptRef.onlineExpGained += expGain;
|
||||
@ -2264,6 +2263,64 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
}
|
||||
workerScript.atExit = f;
|
||||
},
|
||||
mv: function (host: string, source: string, destination: string): void {
|
||||
updateDynamicRam("mv", getRamCost(Player, "mv"));
|
||||
|
||||
if (arguments.length != 3) throw makeRuntimeErrorMsg("mv", "Takes 3 argument.");
|
||||
|
||||
if (!isValidFilePath(source)) throw makeRuntimeErrorMsg("mv", `Invalid filename: '${source}'`);
|
||||
if (!isValidFilePath(destination)) throw makeRuntimeErrorMsg("mv", `Invalid filename: '${destination}'`);
|
||||
|
||||
const source_is_txt = source.endsWith(".txt");
|
||||
const dest_is_txt = destination.endsWith(".txt");
|
||||
|
||||
if (!isScriptFilename(source) && !source_is_txt) throw makeRuntimeErrorMsg("mv", `'mv' can only be used on scripts and text files (.txt)`);
|
||||
if (source_is_txt != dest_is_txt) throw makeRuntimeErrorMsg("mv", `Source and destination files must have the same type`);
|
||||
|
||||
if (source === destination) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This will throw if the server is not found, we do not need to validate result.
|
||||
const destServer: BaseServer | null = safeGetServer(host, "mv");
|
||||
|
||||
if (!source_is_txt && destServer.isRunning(source)) throw makeRuntimeErrorMsg("mv", `Cannot use 'mv' on a script that is running`)
|
||||
|
||||
interface File {
|
||||
filename: string;
|
||||
}
|
||||
|
||||
const files = source_is_txt ? destServer.textFiles : destServer.scripts;
|
||||
let source_file: File | null = null;
|
||||
let dest_file: File | null = null;
|
||||
|
||||
for (let i = 0; i < files.length; ++i) {
|
||||
const file = files[i];
|
||||
if (file.filename === source) {
|
||||
source_file = file;
|
||||
} else if (file.filename === destination) {
|
||||
dest_file = file;
|
||||
}
|
||||
}
|
||||
|
||||
if (source_file == null) throw makeRuntimeErrorMsg("mv", `Source file ${source} does not exist`)
|
||||
|
||||
if (dest_file != null) {
|
||||
if (dest_file instanceof TextFile && source_file instanceof TextFile) {
|
||||
dest_file.text = source_file.text;
|
||||
} else if (dest_file instanceof Script && source_file instanceof Script) {
|
||||
dest_file.code = source_file.code;
|
||||
dest_file.markUpdated();
|
||||
}
|
||||
|
||||
destServer.removeFile(source);
|
||||
} else {
|
||||
source_file.filename = destination;
|
||||
if (source_file instanceof Script) {
|
||||
source_file.markUpdated();
|
||||
}
|
||||
}
|
||||
},
|
||||
flags: Flags(workerScript.args),
|
||||
};
|
||||
|
||||
|
20
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
20
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -5813,6 +5813,26 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
atExit(f: () => void): void;
|
||||
|
||||
/**
|
||||
* Move a file on the target server.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* NS2 exclusive
|
||||
*
|
||||
* Move the source file to the specified destination on the target server.
|
||||
*
|
||||
* This command only works for scripts and text files (.txt). It cannot, however, be used
|
||||
* to convert from script to text file, or vice versa.
|
||||
*
|
||||
* This function can also be used to rename files.
|
||||
*
|
||||
* @param host - Host of target server.
|
||||
* @param source - Filename of the source file.
|
||||
* @param destination - Filename of the destination file.
|
||||
*/
|
||||
mv(host: string, source: string, destination: string): void;
|
||||
|
||||
/**
|
||||
* Parse command line flags.
|
||||
* @remarks
|
||||
|
@ -17,6 +17,20 @@ export class TextFile {
|
||||
*/
|
||||
text: string;
|
||||
|
||||
/**
|
||||
* The full file name.
|
||||
*/
|
||||
get filename(): string {
|
||||
return this.fn;
|
||||
}
|
||||
|
||||
/**
|
||||
* The full file name.
|
||||
*/
|
||||
set filename(value: string) {
|
||||
this.fn = value;
|
||||
}
|
||||
|
||||
constructor(fn = "", txt = "") {
|
||||
this.fn = (fn.endsWith(".txt") ? fn : `${fn}.txt`).replace(/\s+/g, "");
|
||||
this.text = txt;
|
||||
|
Loading…
Reference in New Issue
Block a user