class jssh { constructor(fs, working_dir, uid, input, h) { this.fs = fs; this.working_dir = working_dir; this.input = input; this.history = h; this.uid = uid; } set_wd(dir) { //let lwd = fs let wd = fs; let path = dir .split("/") .filter(function (e) { return e !== ""; }) .filter(function (e) { return e !== "."; }); for (let i in path) { if (path[i] == "..") { path.splice(i - 1, 2); } } for (let dir of path) { let found = false; //lwd = wd; if (dir != ".") { for (let i of wd) { if (i.name == dir && i.dir) { wd = i.content; found = true; break; } } if (!found) { return 1; } } } return wd; //return 1; } clean_path(path) { path = path .split("/") .filter(function (e) { return e !== ""; }) .filter(function (e) { return e.replace(" ", "") !== "."; }); for (let i = path.length; i != 0; i--) { if (path[i] == "..") { path.splice(i - 1, 2); } } if (path.includes("..")) path = []; return "/" + path.join("/"); } main() { for (let d of fs) { if (d.name == ".bashrc") { for (let line of d.content.split("\n")) { document.getElementById(this.input).value = line; this.ex(); } break; } } setInterval(() => { document.getElementById(this.input).focus(); }, 10); } ex() { let temp_working_dir = this.working_dir; document.getElementById(this.history).innerHTML += "λ " + document.getElementById(this.input).value + "
"; let com = document.getElementById(this.input).value; let stripped = com.split(" "); switch (stripped[0]) { case "jssh": this.main(); break; case "neofetch": let add = ""; add += "
\
,-.       _,---._ __   / \\ \n \
/  )    .-'       `./ /   \\ \n \
(  (   ,'            `/    /| \n \
\\  `-\"             '\\    / | \n \
`.              ,   \\ /   | \n \
/`.          ,'-`----Y   | \n \
(            ;        |   ' \n \
|  ,-.    ,-'         |  / \n \
|  | (   |            | / \n \
)  |  \\  `.___________|/ \n \
`--'   `--' 
"; //position this plz:) add += "
hello, i am grant, they/them
i am mostly a typescript and c++ dev, but
i can work in most languages
--
i enjoy manga, and coding in free time
contact me at grantsquires@disroot.org

"; let colors = ["#cdb4db", "#ffc8dd", "#ffafcc", "#bde0fe", "#a2d2ff"]; for (let co of colors) { add += "
";
        }
        add += "
"; colors = ["#a81d61", "#ff218e", "#fcd800", "#0194fc", "#007cd5"]; for (let co of colors) { add += "
";
        }

        add += "


"; document.getElementById(this.history).innerHTML += add; break; case "clear": document.getElementById(this.history).innerHTML = ""; break; case "echo": document.getElementById(this.history).innerHTML += com.substr(4) + "
"; break; case "help": document.getElementById(this.history).innerHTML += "jssh -- version 1.0.0 (dev)

commands: neofetch, help,
cat [path],pwd,
ls [path] [-a], cd [path],
clear, echo [str],jssh
"; break; case "cat": temp_working_dir += "/"; for (let i of stripped) { if (i != stripped[0] && i[0] != "-") { if (i[0] == "/") temp_working_dir = i; else temp_working_dir += i; break; } } let tt = temp_working_dir.split("/"); tt.splice(tt.length - 1, 1); let wa = this.set_wd(this.clean_path(tt.join("/"))); for (let a of wa) { if ( a.name == temp_working_dir.split("/")[ temp_working_dir.split("/").length - 1 ] && !a.dir ) { document.getElementById(this.history).innerHTML += a.content + "
"; document.getElementById(this.input).value = ""; return; } } document.getElementById(this.history).innerHTML += "jssh: " + this.clean_path(temp_working_dir) + " file or dir not found
"; break; case "pwd": document.getElementById(this.history).innerHTML += this.clean_path(temp_working_dir) + "
"; break; case "cd": if (temp_working_dir != "/") temp_working_dir += "/"; for (let i of stripped) { if (i != stripped[0] && i[0] != "-") { if (i[0] == "/") temp_working_dir = i + "/"; else temp_working_dir += i + "/"; break; } } let ww = this.set_wd(temp_working_dir); if (ww == 1) { document.getElementById(this.history).innerHTML += "jssh: `" + temp_working_dir + "` directory not found
"; return; } this.working_dir = this.clean_path(temp_working_dir); break; case "ls": if (temp_working_dir != "/") temp_working_dir += "/"; for (let i of stripped) { if (i != stripped[0] && i[0] != "-") { if (i[0] == "/") temp_working_dir = i + "/"; else temp_working_dir += i + "/"; break; } } let wd = this.set_wd(this.clean_path(temp_working_dir)); if (wd == 1) { document.getElementById(this.history).innerHTML += "jssh: `" + temp_working_dir + "` directory not found
"; return; } if (stripped.includes("-a")) { document.getElementById(this.history).innerHTML += "[.]
"; document.getElementById(this.history).innerHTML += "[..]
"; } for (let i of wd) { if ( (i.name[0] == "." && stripped.includes("-a")) || i.name[0] != "." ) { if (i.dir) document.getElementById(this.history).innerHTML += "[" + i.name + "]
"; else document.getElementById(this.history).innerHTML += i.name + "
"; } } break; default: document.getElementById(this.history).innerHTML += "jssh: " + stripped[0] + ": command not found or not implemented
"; break; } document.getElementById(this.input).value = ""; } }