mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-24 10:12:53 +02:00
Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev
This commit is contained in:
+116
-39
@@ -49,6 +49,7 @@ import {yesNoBoxCreate,
|
||||
import {post, hackProgressBarPost,
|
||||
hackProgressPost} from "./ui/postToTerminal";
|
||||
|
||||
import autosize from 'autosize';
|
||||
import * as JSZip from 'jszip';
|
||||
import * as FileSaver from 'file-saver';
|
||||
|
||||
@@ -65,8 +66,8 @@ $(document).keydown(function(event) {
|
||||
|
||||
if (event.keyCode === KEY.ENTER) {
|
||||
event.preventDefault(); //Prevent newline from being entered in Script Editor
|
||||
var command = $('input[class=terminal-input]').val();
|
||||
post(
|
||||
var command = terminalInput.value;
|
||||
post(
|
||||
"<span class='prompt'>[" +
|
||||
(FconfSettings.ENABLE_TIMESTAMPS ? getTimestamp() + " " : "") +
|
||||
Player.getCurrentServer().hostname +
|
||||
@@ -523,9 +524,18 @@ let Terminal = {
|
||||
commandHistoryIndex: 0,
|
||||
|
||||
resetTerminalInput: function() {
|
||||
document.getElementById("terminal-input-td").innerHTML =
|
||||
"<div id='terminal-input-header' class='prompt'>[" + Player.getCurrentServer().hostname + " ~]" + "$ </div>" +
|
||||
'<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1"/>';
|
||||
if (FconfSettings.WRAP_INPUT) {
|
||||
document.getElementById("terminal-input-td").innerHTML =
|
||||
"<div id='terminal-input-header' class='prompt'>[" + Player.getCurrentServer().hostname + " ~]" + "$ </div>" +
|
||||
'<textarea type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1"/>';
|
||||
|
||||
//Auto re-size the line element as it wraps
|
||||
autosize(document.getElementById("terminal-input-text-box"));
|
||||
} else {
|
||||
document.getElementById("terminal-input-td").innerHTML =
|
||||
"<div id='terminal-input-header' class='prompt'>[" + Player.getCurrentServer().hostname + " ~]" + "$ </div>" +
|
||||
'<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1"/>';
|
||||
}
|
||||
var hdr = document.getElementById("terminal-input-header");
|
||||
hdr.style.display = "inline";
|
||||
},
|
||||
@@ -762,7 +772,56 @@ let Terminal = {
|
||||
$('input[class=terminal-input]').prop('disabled', false);
|
||||
},
|
||||
|
||||
executeCommand: function(command) {
|
||||
writeToScriptFile : function(server, fn, code) {
|
||||
var ret = {success: false, overwritten: false};
|
||||
if (!isScriptFilename(fn) || !(server instanceof Server)) { return ret; }
|
||||
|
||||
//Check if the script already exists, and overwrite it if it does
|
||||
for (let i = 0; i < server.scripts.length; ++i) {
|
||||
if (fn === server.scripts[i].filename) {
|
||||
let script = server.scripts[i];
|
||||
script.code = code;
|
||||
script.updateRamUsage();
|
||||
script.module = "";
|
||||
ret.overwritten = true;
|
||||
ret.success = true;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
//Otherwise, create a new script
|
||||
var newScript = new Script();
|
||||
newScript.filename = fn;
|
||||
newScript.code = code;
|
||||
newScript.updateRamUsage();
|
||||
newScript.server = server.ip;
|
||||
server.scripts.push(newScript);
|
||||
ret.success = true;
|
||||
return ret;
|
||||
},
|
||||
|
||||
writeToTextFile : function(server, fn, txt) {
|
||||
var ret = {success: false, overwritten: false};
|
||||
if (!fn.endsWith("txt") || !(server instanceof Server)) { return ret; }
|
||||
|
||||
//Check if the text file already exists, and overwrite if it does
|
||||
for (let i = 0; i < server.textFiles.length; ++i) {
|
||||
if (server.textFiles[i].fn === fn) {
|
||||
ret.overwritten = true;
|
||||
server.textFiles[i].text = txt;
|
||||
ret.success = true;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
//Otherwise create a new text file
|
||||
var newFile = new TextFile(fn, txt);
|
||||
server.textFiles.push(newFile);
|
||||
ret.success = true;
|
||||
return ret;
|
||||
},
|
||||
|
||||
executeCommand : function(command) {
|
||||
command = command.trim();
|
||||
//Replace all extra whitespace in command with a single space
|
||||
command = command.replace(/\s\s+/g, ' ');
|
||||
@@ -1384,8 +1443,7 @@ let Terminal = {
|
||||
}
|
||||
}
|
||||
destServer.messages.push(scriptname);
|
||||
post(scriptname + " copied over to " + destServer.hostname);
|
||||
return;
|
||||
return post(scriptname + " copied over to " + destServer.hostname);
|
||||
}
|
||||
|
||||
//Scp for txt files
|
||||
@@ -1401,18 +1459,15 @@ let Terminal = {
|
||||
|
||||
if (!found) {return post("Error: no such file exists!");}
|
||||
|
||||
for (var i = 0; i < destServer.textFiles.length; ++i) {
|
||||
if (destServer.textFiles[i].fn === scriptname) {
|
||||
//Overwrite
|
||||
destServer.textFiles[i].text = txtFile.text;
|
||||
post("WARNING: " + scriptname + " already exists on " + destServer.hostname +
|
||||
"and will be overwriten");
|
||||
return post(scriptname + " copied over to " + destServer.hostname);
|
||||
}
|
||||
let tRes = Terminal.writeToTextFile(destServer, txtFile.fn, txtFile.text);
|
||||
if (!tRes.success) {
|
||||
return post("Error: scp failed");
|
||||
}
|
||||
var newFile = new TextFile(txtFile.fn, txtFile.text);
|
||||
destServer.textFiles.push(newFile);
|
||||
return post(scriptname + " copied over to " + destServer.hostname);
|
||||
if (tRes.overwritten) {
|
||||
post(`WARNING: ${scriptname} already exists on ${destServer.hostname} and will be overwriten`);
|
||||
return post(`${scriptname} overwritten on ${destServer.hostname}`);
|
||||
}
|
||||
return post(`${scriptname} copied over to ${destServer.hostname}`);
|
||||
}
|
||||
|
||||
//Get the current script
|
||||
@@ -1428,27 +1483,16 @@ let Terminal = {
|
||||
return;
|
||||
}
|
||||
|
||||
//Overwrite script if it exists
|
||||
for (var i = 0; i < destServer.scripts.length; ++i) {
|
||||
if (scriptname == destServer.scripts[i].filename) {
|
||||
post("WARNING: " + scriptname + " already exists on " + destServer.hostname + " and will be overwritten");
|
||||
var oldScript = destServer.scripts[i];
|
||||
oldScript.code = sourceScript.code;
|
||||
oldScript.ramUsage = sourceScript.ramUsage;
|
||||
oldScript.module = "";
|
||||
post(scriptname + " overwriten on " + destServer.hostname);
|
||||
return;
|
||||
}
|
||||
let sRes = Terminal.writeToScriptFile(destServer, scriptname, sourceScript.code);
|
||||
if (!sRes.success) {
|
||||
return post(`Error: scp failed`);
|
||||
}
|
||||
|
||||
var newScript = new Script();
|
||||
newScript.filename = scriptname;
|
||||
newScript.code = sourceScript.code;
|
||||
newScript.ramUsage = sourceScript.ramUsage;
|
||||
newScript.destServer = ip;
|
||||
destServer.scripts.push(newScript);
|
||||
post(scriptname + " copied over to " + destServer.hostname);
|
||||
break;
|
||||
if (sRes.overwritten) {
|
||||
post(`WARNING: ${scriptname} already exists on ${destServer.hostname} and will be overwritten`);
|
||||
return post(`${scriptname} overwritten on ${destServer.hostname}`);
|
||||
}
|
||||
post(`${scriptname} copied over to ${destServer.hostname}`);
|
||||
break;
|
||||
case "sudov":
|
||||
if (commandArray.length != 1) {
|
||||
post("Incorrect number of arguments. Usage: sudov"); return;
|
||||
@@ -1571,6 +1615,38 @@ let Terminal = {
|
||||
post("No such alias exists");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "wget":
|
||||
if (commandArray.length !== 2) {
|
||||
return post("Incorrect usage of wget command. Usage: wget [url] [target file]");
|
||||
}
|
||||
var args = commandArray[1].split(" ");
|
||||
if (args.length !== 2) {
|
||||
return post("Incorrect usage of wget command. Usage: wget [url] [target file]");
|
||||
}
|
||||
|
||||
let url = args[0];
|
||||
let target = args[1];
|
||||
if (!isScriptFilename(target) && !target.endsWith(".txt")) {
|
||||
return post(`wget failed: Invalid target file. Target file must be script or text file`);
|
||||
}
|
||||
$.get(url, function(data) {
|
||||
let res;
|
||||
if (isScriptFilename(target)) {
|
||||
res = Terminal.writeToScriptFile(s, target, data);
|
||||
} else {
|
||||
res = Terminal.writeToTextFile(s, target, data);
|
||||
}
|
||||
if (!res.success) {
|
||||
return post("wget failed");
|
||||
}
|
||||
if (res.overwritten) {
|
||||
return post(`wget successfully retrieved content and overwrote ${target}`);
|
||||
}
|
||||
return post(`wget successfully retrieved content to new file ${target}`);
|
||||
}, 'text').fail(function(e) {
|
||||
return post("wget failed: " + JSON.stringify(e));
|
||||
})
|
||||
break;
|
||||
default:
|
||||
post("Command not found");
|
||||
@@ -2048,6 +2124,7 @@ let Terminal = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
post("ERROR: No such script");
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user