Added rm.js
This commit is contained in:
39
scripts/rm.js
Normal file
39
scripts/rm.js
Normal file
@ -0,0 +1,39 @@
|
||||
import {ArgParser} from '/scripts/lib/arg-parser';
|
||||
|
||||
/**
|
||||
* Recursively delete files inside a path. Equivalent to the Unix "rm -r".
|
||||
* @param {NS} ns - BitBurner API
|
||||
*/
|
||||
export function main(ns) {
|
||||
// Setup
|
||||
ns.disableLog('ALL');
|
||||
const argParser = new ArgParser('rm.js', 'Recursively delete files inside a directory', [
|
||||
{name: 'path', desc: 'Path to recursively search'},
|
||||
{name: 'server', desc: 'Run on remote server', optional: true, default: ns.getHostname()},
|
||||
{name: 'force', desc: 'Remove game files (.exe, .lit, .msg)', flags: ['-f', '--force'], default: false},
|
||||
{name: 'recursive', desc: 'Delete everything inside directory', flags: ['-r', '--recursive'], default: true}
|
||||
]);
|
||||
const args = argParser.parse(ns.args);
|
||||
|
||||
// Help
|
||||
if(args['help'] || args['_error'].length)
|
||||
return ns.tprint(argParser.help(args['help'] ? null : args['_error'][0], args['_command']));
|
||||
|
||||
// Run
|
||||
ns.ls(args['server'], args['path'])
|
||||
.filter(f => new RegExp(/\.(exe|lit|msg)$/g).test(f) ? args['force'] : true)
|
||||
.forEach(f => ns.rm(f, args['server']));
|
||||
}
|
||||
|
||||
/**
|
||||
* BitBurner autocomplete.
|
||||
*
|
||||
* @param {{servers: string[], txts: string[], scripts: string[], flags: string[]}} data - Contextual information
|
||||
* @returns {string[]} - Pool of autocomplete options
|
||||
*/
|
||||
export function autocomplete(data) {
|
||||
return [...data.txts, ...data.scripts]
|
||||
.map(file => file.split('/').slice(0, -1).join('/'))
|
||||
.filter((path, i, arr) => arr.indexOf(path) == i)
|
||||
.concat(data.txts, data.scripts);
|
||||
}
|
Reference in New Issue
Block a user