new Command("env", async function(term, argv) { if(argv.length === 1) { try { return await term.exec("printenv"); } catch(err) { term.print("Unexpected error while trying to run `printenv`: " + err + "\n") } } let quiet = false; if(argv.length === 3 && argv[1] === '-qt') { argv = [argv[0], argv[2]]; quiet = true; } /* make sure the binary exists: */ if(!(argv[1] in term.commands)) { if("PATH" in term.env) { const bins = term.env["PATH"].split(':'); for(let i=0; i { let dir = bins[i]; if (!dir.endsWith('/')) { dir += '/'; } if (argv[1] in Terminal.prototype.commands) { Terminal.prototype.commands[argv[1]].path = dir + argv[1]; console.log("Loaded command `" + argv[1] + "` from " + file['url']); } else { error("TODO: Implement"); } }, error: (xhr, ajaxOptions, thrownError) => { term.print("Filesystem error: Ajax query to sultanik.com failed while trying to ") term.print("download " + file['url'] + "\n"); console.log(thrownError); term.print("Please make sure you are connected to the Internet and try again later.\n"); failed = true; } }); if(failed) { return 127; } } } } } } if(quiet) { return 0; } let ret; if(argv[1] in term.commands) { try { ret = await term.commands[argv[1]].exec(term, argv.slice(1)); } catch(err) { term.print("env: command " + argv.slice(1) + " failed with an unexpected error:\n" + err.stack + "\n"); ret = -1; } } else { term.print("evansh: command not found: " + argv[1] + "\n"); ret = 127; } if(ret !== undefined && ret !== 0) { term.print("evansh: exit " + ret + "\n"); } return ret; });