From 8bd84c5af56037bb34c24d08918514079887d77f Mon Sep 17 00:00:00 2001 From: MeexReay Date: Wed, 19 Mar 2025 01:12:43 +0300 Subject: [PATCH] init commit --- app/hello/hello.js | 35 ++++++ app/hello/package.json | 8 ++ app/neofetch/neofetch.js | 82 ++++++++++++++ app/neofetch/package.json | 8 ++ app/posh/cd.js | 9 ++ app/posh/clear.js | 4 + app/posh/meow.js | 4 + app/posh/package.json | 8 ++ app/posh/posh.js | 93 ++++++++++++++++ app/posh/posh.json | 7 ++ app/ppm/package.json | 8 ++ app/ppm/ppm.js | 124 +++++++++++++++++++++ app/ppm/ppm.json | 5 + app/putils/bump.js | 5 + app/putils/cat.js | 8 ++ app/putils/cp.js | 55 ++++++++++ app/putils/ls.js | 12 ++ app/putils/mkdir.js | 5 + app/putils/mv.js | 55 ++++++++++ app/putils/package.json | 8 ++ app/putils/rm.js | 9 ++ app/reset/package.json | 8 ++ app/reset/reset.js | 18 +++ app/vget/package.json | 8 ++ app/vget/vget.js | 17 +++ font/terminus.ttf | Bin 0 -> 500668 bytes index.html | 77 +++++++++++++ sys/fs.js | 223 ++++++++++++++++++++++++++++++++++++++ sys/ppm.js | 128 ++++++++++++++++++++++ sys/system.js | 190 ++++++++++++++++++++++++++++++++ sys/terminal.js | 116 ++++++++++++++++++++ 31 files changed, 1337 insertions(+) create mode 100644 app/hello/hello.js create mode 100644 app/hello/package.json create mode 100644 app/neofetch/neofetch.js create mode 100644 app/neofetch/package.json create mode 100644 app/posh/cd.js create mode 100644 app/posh/clear.js create mode 100644 app/posh/meow.js create mode 100644 app/posh/package.json create mode 100644 app/posh/posh.js create mode 100644 app/posh/posh.json create mode 100644 app/ppm/package.json create mode 100644 app/ppm/ppm.js create mode 100644 app/ppm/ppm.json create mode 100644 app/putils/bump.js create mode 100644 app/putils/cat.js create mode 100644 app/putils/cp.js create mode 100644 app/putils/ls.js create mode 100644 app/putils/mkdir.js create mode 100644 app/putils/mv.js create mode 100644 app/putils/package.json create mode 100644 app/putils/rm.js create mode 100644 app/reset/package.json create mode 100644 app/reset/reset.js create mode 100644 app/vget/package.json create mode 100644 app/vget/vget.js create mode 100644 font/terminus.ttf create mode 100644 index.html create mode 100644 sys/fs.js create mode 100644 sys/ppm.js create mode 100644 sys/system.js create mode 100644 sys/terminal.js diff --git a/app/hello/hello.js b/app/hello/hello.js new file mode 100644 index 0000000..295624c --- /dev/null +++ b/app/hello/hello.js @@ -0,0 +1,35 @@ +/* + + Hello message + +*/ + +const message = `Приветствуем в PoshlostiOS!!!! + +Стандартные komandi: +* cd - перемещение по папкам +* hello - эт кодмана +* ls [dir] - посмотреть список файлов +* meow - чтото пробормотать +* posh [command] - типа херня которая команды обрабатывает +* vget - скачать файлы из интернетов +* clear - стереть терминал +* rm - удалить файл +* mv - переместить файл +* bump - создать файл +* cp - скопировать файл +* mkdir - создать папку +* reset - УНИЧТОЖИТЬ СИСТЕМУ, и установить заново :3 +* cat - показать содержимое файла +* ppm [package] - пакетный менеджер + +Планируется: +* сделать hex цвета +* прога Worldwide Objective Manuals (WOMan) которая пишет туторы по пакетам, написанию прог и описание стандартных прог +* прога чтото наподобе nano или vi +` + +async function main(args) { + writeStdout(message) + return 0 +} \ No newline at end of file diff --git a/app/hello/package.json b/app/hello/package.json new file mode 100644 index 0000000..40fa5af --- /dev/null +++ b/app/hello/package.json @@ -0,0 +1,8 @@ +{ + "name": "hello", + "version": "0.1.2", + "description": "Hello Message", + "author": "MeexReay", + "apps": [ "hello.js" ], + "configs": [] +} \ No newline at end of file diff --git a/app/neofetch/neofetch.js b/app/neofetch/neofetch.js new file mode 100644 index 0000000..f0f8e8a --- /dev/null +++ b/app/neofetch/neofetch.js @@ -0,0 +1,82 @@ +/* + + neofetch - neofetch + +*/ + +function getDurationString(start_time) { + const now = new Date(); + const diffMs = now - start_time; + + const seconds = Math.floor(diffMs / 1000); + const minutes = Math.floor(seconds / 60); + const hours = Math.floor(minutes / 60); + const days = Math.floor(hours / 24); + + const remainingHours = hours % 24; + const remainingMinutes = minutes % 60; + + let result = []; + + if (days > 0) result.push(`${days}d`); + if (remainingHours > 0) result.push(`${remainingHours}h`); + result.push(`${remainingMinutes}m`); + + return result.join(" "); +} + +// Function to get CPU, GPU, and memory information +function getSystemInfo() { + const cpuInfo = navigator.hardwareConcurrency; + + const memoryInfo = navigator.deviceMemory; + const totalJSHeap = performance.memory.totalJSHeapSize / (1024 * 1024); + + const canvas = document.createElement('canvas'); + const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); + let gpuInfo = null; + + if (gl) { + const debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); + if (debugInfo) { + gpuInfo = { + vendor: gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL), + renderer: gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) + }; + } + } + + return [ + cpuInfo + " cores", + memoryInfo ? memoryInfo * 1024 + ' MB' : 'Not supported', + totalJSHeap.toFixed(2) + ' MB', + gpuInfo ? `${gpuInfo.renderer}` : 'GPU Info not available' + ] +} + +async function main(args) { + let [cpu, max_mem, now_mem, gpu] = getSystemInfo() + + writeStdout(` + █████ user@poshlosti + ███░░░█ █ ------------------ + █░░█░░░██ OS: PoshlostiOS + █░█░░████ Uptime: ${getDurationString(start_date)} + █░███░░░░█ Packages: ${(await listPackages()).length} (ppm) + ██░░░░░░░█ Shell: posh ${(await getInstalledPackage("posh")).version} + █ █░░░░░░░██ Resolution: ${window.innerWidth}x${window.innerHeight} + █░░░░░░░░█ Memory: ${now_mem} / ${max_mem} + █░░░░░░░░█ CPU: ${cpu} + █░░░░░░░░░█ GPU: ${gpu} + ██░░░░░░░░███████ + █░░████████▓▓▓█ + █████████▓▓▓▓▓▓▓▓▓██ + █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ + █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ + ██▓▓▓▓▓▓▓▓▓▓▓▓▓█ + █▓▓▓▓▓▓▓▓▓█████ + ██████████ +`) + + return 0 +} \ No newline at end of file diff --git a/app/neofetch/package.json b/app/neofetch/package.json new file mode 100644 index 0000000..2caa673 --- /dev/null +++ b/app/neofetch/package.json @@ -0,0 +1,8 @@ +{ + "name": "neofetch", + "version": "0.1.1", + "description": "neofetch damn", + "author": "MeexReay", + "apps": [ "neofetch.js" ], + "configs": [] +} \ No newline at end of file diff --git a/app/posh/cd.js b/app/posh/cd.js new file mode 100644 index 0000000..a7a2c40 --- /dev/null +++ b/app/posh/cd.js @@ -0,0 +1,9 @@ +async function main(args) { + if (!hasFile(args[1])) { + writeStdout(`нет такой папки бро\n`) + return 1 + } + cwd = simplifyPath(args[1]) + writeStdout(`бро переместил тебя в ${args[1]} без б ваще обращайся\n`) + return 0 +} \ No newline at end of file diff --git a/app/posh/clear.js b/app/posh/clear.js new file mode 100644 index 0000000..aa0488b --- /dev/null +++ b/app/posh/clear.js @@ -0,0 +1,4 @@ +async function main(args) { + clearTerminal() + return 0 +} \ No newline at end of file diff --git a/app/posh/meow.js b/app/posh/meow.js new file mode 100644 index 0000000..4408e86 --- /dev/null +++ b/app/posh/meow.js @@ -0,0 +1,4 @@ +async function main(args) { + writeStdout(args.slice(1).join(" ")+"\n") + return 0 +} \ No newline at end of file diff --git a/app/posh/package.json b/app/posh/package.json new file mode 100644 index 0000000..b4ad6d0 --- /dev/null +++ b/app/posh/package.json @@ -0,0 +1,8 @@ +{ + "name": "posh", + "version": "0.1.1", + "description": "Poshlosti Shell", + "author": "MeexReay", + "apps": [ "posh.js", "meow.js", "cd.js", "clear.js" ], + "configs": [ "posh.json" ] +} \ No newline at end of file diff --git a/app/posh/posh.js b/app/posh/posh.js new file mode 100644 index 0000000..b0f63a0 --- /dev/null +++ b/app/posh/posh.js @@ -0,0 +1,93 @@ +/* + + PoSh - Poshlosti Shell + +*/ + +async function processCommand(command, args) { + let executable = command + if (!executable.startsWith("/")) { + if (executable.includes("/")) { + executable = cwd + "/" + executable + } else { + executable = "/app/" + executable + } + } + if (!hasFile(executable) && hasFile(executable+".js")) { + executable = executable + ".js" + } + executable = simplifyPath(executable) + + if (hasFile(executable)) { + try { + let code = await executeCommand([executable].concat(args)).promise + if (code != 0) { + await writeStdout("\nСтатус код: "+code+"\n") + } + } catch (e) { + console.log(e) + await writeStdout("Не запустилася\n") + } + } else { + await writeStdout("Твоя команда "+executable+" не найдена :3\n") + } +} + +async function main(args) { + if (args.length > 1) { + await processCommand(args[1], args.slice(2)) + } + + let history = [""] + let history_index = 0 + + let config = JSON.parse(readFile("/config/posh.json")) + let prompt = config["prompt"] + let startup = config["startup"] + + for (let command of startup) { + let args = command.split(" ") + await processCommand(args[0], args.slice(1)) + } + + while (true) { + await writeStdout(prompt.replace("{cwd}", cwd)) + + let command = await readLine((key, ctrl, alt, shift, content, pos) => { + console.log(history, content, pos, key) + + if (key == "ArrowDown") { + history_index = Math.max(0, history_index - 1) + return [history[history_index], history[history_index].length] + } + + if (key == "ArrowUp") { + history_index = Math.min(history.length-1, history_index + 1) + return [history[history_index], history[history_index].length] + } + + return [content, pos] + }) + + if (command.length > 0) { + history.splice(1, 0, command); + history_index = 0 + + let args = command.split(" ") + command = args[0] + args = args.slice(1) + + if (command == "exit") { + if (args.length == 0) { + return 0 + } else { + return parseInt(args[0]) + } + } else { + await processCommand(command, args) + } + } + } + + return 0 +} \ No newline at end of file diff --git a/app/posh/posh.json b/app/posh/posh.json new file mode 100644 index 0000000..f9ddf57 --- /dev/null +++ b/app/posh/posh.json @@ -0,0 +1,7 @@ +{ + "prompt": "[posh {cwd}]$ ", + "startup": [ + "hello", + "meow" + ] +} \ No newline at end of file diff --git a/app/ppm/package.json b/app/ppm/package.json new file mode 100644 index 0000000..da80131 --- /dev/null +++ b/app/ppm/package.json @@ -0,0 +1,8 @@ +{ + "name": "ppm", + "version": "0.1.3", + "description": "Poshliy Package Manager", + "author": "MeexReay", + "apps": [ "ppm.js" ], + "configs": [ "ppm.json" ] +} \ No newline at end of file diff --git a/app/ppm/ppm.js b/app/ppm/ppm.js new file mode 100644 index 0000000..3250ac7 --- /dev/null +++ b/app/ppm/ppm.js @@ -0,0 +1,124 @@ +/* + + PPM - Poshliy Package Manager + +*/ + +async function main(args) { + if (args.length == 3 && "iurs".includes(args[1])) { + let package = args[2] + + if (args[1] == "i") { + let config = JSON.parse(readFile("/config/ppm.json")) + + for (const repo of config["repositories"]) { + // await writeStdout(`Фетчим ${package} на репозитории ${repo}\n`) + + let status = await installPackage(repo+"/"+package) + + if (status == 0) { + let pkg = await getInstalledPackage(package) + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} установлен\n`) + return 0 + } else if (status == 1) { + await writeStdout("Пакет не установлен тк он уже установлен чувааак\n") + return 1 + } + } + } else if (args[1] == "u") { + let config = JSON.parse(readFile("/config/ppm.json")) + + for (const repo of config["repositories"]) { + let status = await updatePackage(package, repo+"/"+package) + + if (status == 0) { + let pkg = await getInstalledPackage(package) + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} обновлен\n`) + return 0 + } else if (status == 1) { + await writeStdout("Пакет не найден ты его установи сначала чел\n") + return 1 + } + } + + await writeStdout("обнова не прошла успешна\n") + return 1 + } else if (args[1] == "r") { + if (await removePackage(package)) { + await writeStdout(`Пакет ${package} удален\n`) + } else { + await writeStdout("Биспокойся произошла ошибко\n") + return 1 + } + } else if (args[1] == "s") { + let pkg = await getInstalledPackage(package) + for (const [key, value] of Object.entries(pkg)) { + await writeStdout(key.charAt(0).toUpperCase()+key.slice(1)+": "+value+"\n") + } + } + } else if (args.length == 2 && args[1] == "l") { + await writeStdout("ваши покеты:\n") + for (const package of (await listPackages())) { + await writeStdout("- "+package["name"]+"-"+package["version"]+"\n") + } + } else if (args.length == 2 && args[1] == "a") { + let config = JSON.parse(readFile("/config/ppm.json")) + + for (const package of (await listPackages())) { + for (const repo of config["repositories"]) { + // await writeStdout(`Фетчим ${package["name"]} на репозитории ${repo}\n`) + + let fetched = await fetchPackage(repo+"/"+package["name"]) + if (fetched != null) { + if (fetched["version"] == package["version"]) { + await writeStdout(`Пакет ${package['name']}-${package['version']} уже на последней версии\n`) + break + } + + let status = await updatePackage(package["name"], repo+"/"+package["name"]) + + if (status == 0) { + let pkg = await getInstalledPackage(package["name"]) + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} обновлен\n`) + break + } else if (status == 1) { + break + } + } + } + } + + await writeStdout("Обнова прошла успешна\n") + return 0 + } else if (args.length == 2 && args[1] == "A") { + let config = JSON.parse(readFile("/config/ppm.json")) + + for (const package of (await listPackages())) { + for (const repo of config["repositories"]) { + let status = await updatePackage(package["name"], repo+"/"+package["name"]) + + if (status == 0) { + let pkg = await getInstalledPackage(package["name"]) + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} обновлен\n`) + break + } else{ + console.log(status, repo, package) + } + } + } + + await writeStdout("Обнова прошла успешна\n") + return 0 + } else { + await writeStdout("Использование:\n") + await writeStdout(" ppm i <пакет> - установить пакет\n") + await writeStdout(" ppm u <пакет> - обновить пакет\n") + await writeStdout(" ppm r <пакет> - удалить пакет\n") + await writeStdout(" ppm s <пакет> - показать инфу о пакете\n") + await writeStdout(" ppm l - показать инфу о пакете\n") + await writeStdout(" ppm a - обновить все пакеты\n") + await writeStdout(" ppm A - обновить все пакеты принудительно\n") + } + + return 0 +} \ No newline at end of file diff --git a/app/ppm/ppm.json b/app/ppm/ppm.json new file mode 100644 index 0000000..578a53f --- /dev/null +++ b/app/ppm/ppm.json @@ -0,0 +1,5 @@ +{ + "repositories": [ + "https://poshlostios.meex.lol/app" + ] +} \ No newline at end of file diff --git a/app/putils/bump.js b/app/putils/bump.js new file mode 100644 index 0000000..536a7bc --- /dev/null +++ b/app/putils/bump.js @@ -0,0 +1,5 @@ +async function main(args) { + writeFile(args[1], "") + writeStdout(`все твой файл создан ${args[1]} такой же ты хотел жа\n`) + return 0 +} \ No newline at end of file diff --git a/app/putils/cat.js b/app/putils/cat.js new file mode 100644 index 0000000..68cd488 --- /dev/null +++ b/app/putils/cat.js @@ -0,0 +1,8 @@ +async function main(args) { + if (!hasFile(args[1])) { + writeStdout(`нет такой faila бро\n`) + return 1 + } + writeStdout(readFile(args[1])+"\n") + return 0 +} \ No newline at end of file diff --git a/app/putils/cp.js b/app/putils/cp.js new file mode 100644 index 0000000..8db38f9 --- /dev/null +++ b/app/putils/cp.js @@ -0,0 +1,55 @@ +async function main(args=["","",""]) { + let source = simplifyPath(args[1]) + let target = simplifyPath(args[2]) + + if (!hasFile(args[1])) { + writeStdout(`нет такой херни чо мне ты даешь долбан X нету :x: :regional_symbol_x: :cross:\n`) + return 1 + } + + if (isFolder(source)) { + if (!hasFile(target) || isFolder(target)) { + let create_dirs = hasFile(target) ? [] : [target] + let write_files = [] + + let recursive = (folder) => { + for (const file of listFiles(folder)) { + let path = folder+"/"+file + if (isFolder(path)) { + create_dirs.push(path) + recursive(path) + } else { + write_files.push(path) + } + } + } + + recursive(source) + + for (const dir of create_dirs) { + createFolder(target + dir.slice(source.length)) + } + + for (const file of write_files) { + let path = target + file.slice(source.length) + writeFile(path, readFile(file)) + } + } else { + writeStdout("ой сукаа я вахуе\n") + return 1 + } + } else { + if (isFolder(target)) { + target = target+"/"+source.split("/").reverse()[0] + } + + let content = readFile(source) + writeFile(target, content) + } + + removeFile(source) + + writeStdout(`все скопировано бро ${source} в ${target} скопировано спомощье команды CP (ЦП)\n`) + + return 0 +} \ No newline at end of file diff --git a/app/putils/ls.js b/app/putils/ls.js new file mode 100644 index 0000000..9a975a0 --- /dev/null +++ b/app/putils/ls.js @@ -0,0 +1,12 @@ +async function main(args) { + if (args.length < 2) { + writeStdout(listFiles(".").map(o => { + return (isFolder(o) ? "DIR " : "FILE") + " " + simplifyPath(o) + }).join("\n")+"\n") + } else { + writeStdout(listFiles(args[1]).map(o => { + return (isFolder(args[1]+"/"+o) ? "DIR " : "FILE") + " " + simplifyPath(args[1]+"/"+o) + }).join("\n")+"\n") + } + return 0 +} \ No newline at end of file diff --git a/app/putils/mkdir.js b/app/putils/mkdir.js new file mode 100644 index 0000000..00fcb3f --- /dev/null +++ b/app/putils/mkdir.js @@ -0,0 +1,5 @@ +async function main(args) { + createFolder(args[1]) + writeStdout(`папка создана ${args[1]}\n`) + return 0 +} \ No newline at end of file diff --git a/app/putils/mv.js b/app/putils/mv.js new file mode 100644 index 0000000..6f46048 --- /dev/null +++ b/app/putils/mv.js @@ -0,0 +1,55 @@ +async function main(args=["","",""]) { + let source = simplifyPath(args[1]) + let target = simplifyPath(args[2]) + + if (!hasFile(args[1])) { + writeStdout(`бро я б помог сделал что ты хочешь но сука нет такого файла бай бай\n`) + return 1 + } + + if (isFolder(source)) { + if (!hasFile(target) || isFolder(target)) { + let create_dirs = hasFile(target) ? [] : [target] + let write_files = [] + + let recursive = (folder) => { + for (const file of listFiles(folder)) { + let path = folder+"/"+file + if (isFolder(path)) { + create_dirs.push(path) + recursive(path) + } else { + write_files.push(path) + } + } + } + + recursive(source) + + for (const dir of create_dirs) { + createFolder(target + dir.slice(source.length)) + } + + for (const file of write_files) { + let path = target + file.slice(source.length) + writeFile(path, readFile(file)) + } + } else { + writeStdout("как по твоему я должен блять переместить папку в файл ты ебнутый сука\n") + return 1 + } + } else { + if (isFolder(target)) { + target = target+"/"+source.split("/").reverse()[0] + } + + let content = readFile(source) + writeFile(target, content) + } + + removeFile(source) + + writeStdout(`все перемещено чо надо то есть ${source} в ${target} ну изи получается\n`) + + return 0 +} \ No newline at end of file diff --git a/app/putils/package.json b/app/putils/package.json new file mode 100644 index 0000000..1cba82d --- /dev/null +++ b/app/putils/package.json @@ -0,0 +1,8 @@ +{ + "name": "putils", + "version": "0.1.0", + "description": "Poshliye Utiliti", + "author": "MeexReay", + "apps": [ "bump.js", "cat.js", "cp.js", "ls.js", "mkdir.js", "mv.js", "rm.js" ], + "configs": [] +} \ No newline at end of file diff --git a/app/putils/rm.js b/app/putils/rm.js new file mode 100644 index 0000000..a3b31b1 --- /dev/null +++ b/app/putils/rm.js @@ -0,0 +1,9 @@ +async function main(args) { + if (!hasFile(args[1])) { + writeStdout(`я вахуе ну ты же знаешь что такого файла нет нахуй ты это делаешь\n`) + return 1 + } + removeFile(args[1]) + writeStdout(`ну все твой файл ${args[1]} удален ДОВОЛЕН ЧТО ТЫ СДЕЛАЛ?\n`) + return 0 +} \ No newline at end of file diff --git a/app/reset/package.json b/app/reset/package.json new file mode 100644 index 0000000..ce69b49 --- /dev/null +++ b/app/reset/package.json @@ -0,0 +1,8 @@ +{ + "name": "reset", + "version": "0.1.0", + "description": "Resets system to a newborn", + "author": "MeexReay", + "apps": [ "reset.js" ], + "configs": [] +} \ No newline at end of file diff --git a/app/reset/reset.js b/app/reset/reset.js new file mode 100644 index 0000000..a02f7e4 --- /dev/null +++ b/app/reset/reset.js @@ -0,0 +1,18 @@ +async function main(args) { + await writeStdout("Ты уверен, что хочешь стереть систему, и установить снова?? (y/n) > ") + let confirm = (await readLine()).toLowerCase() == "y" + if (confirm) { + await new Promise(r => setTimeout(r, 100)); + await writeStdout("Прощай...") + await new Promise(r => setTimeout(r, 2000)); + await resetSystem() + document.location.reload() + for (const c of Array.from("\nвелосипе")) { + await writeStdout(c) + await new Promise(r => setTimeout(r, 30)); + } + await new Promise(r => setTimeout(r, 999999)); + } + + return 0 +} \ No newline at end of file diff --git a/app/vget/package.json b/app/vget/package.json new file mode 100644 index 0000000..0f2e0fe --- /dev/null +++ b/app/vget/package.json @@ -0,0 +1,8 @@ +{ + "name": "vget", + "version": "0.1.0", + "description": "Vulgar get", + "author": "MeexReay", + "apps": [ "vget.js" ], + "configs": [] +} \ No newline at end of file diff --git a/app/vget/vget.js b/app/vget/vget.js new file mode 100644 index 0000000..334bad5 --- /dev/null +++ b/app/vget/vget.js @@ -0,0 +1,17 @@ +/* + + VGet - Vulgar Get + +*/ + +async function main(args) { + if (args.length != 3) { + writeStdout("vget \n") + return 1 + } + + writeFile(args[2], await (await fetch(args[0])).text()) + writeStdout("Файл "+args[1]+" вставлен внутрь пути "+args[2]+"\n") + + return 0 +} \ No newline at end of file diff --git a/font/terminus.ttf b/font/terminus.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d125e6347fcd4fb5a0804598393d150aef5059c1 GIT binary patch literal 500668 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

A} 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 + + + + + PoshlostiOS + + + + + + + + + + + _ + + + + + + + diff --git a/sys/fs.js b/sys/fs.js new file mode 100644 index 0000000..c549aeb --- /dev/null +++ b/sys/fs.js @@ -0,0 +1,223 @@ +var fs_mapping = {} + +function saveMapping() { + localStorage.setItem("fs_mapping", JSON.stringify(fs_mapping)) +} + +function loadMapping() { + if (localStorage.getItem("fs_mapping") == null) { + fs_mapping = {} + } else { + fs_mapping = JSON.parse(localStorage.getItem("fs_mapping")) + } +} + +loadMapping() + +function getMappingCode(path) { + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (Object.keys(now).includes(part)) { + if (index == parts.length-1) { + return "file_"+now[part] + } else { + now = now[part] + } + } else { + return null + } + index++ + } + return null +} + +function createMappingCode(path) { + if (path.length === 0) return null + + let code = 0, i, chr + + for (i = 0; i < path.length; i++) { + chr = path.charCodeAt(i) + code = ((code << 5) - code) + chr + code |= 0 + } + + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (index == parts.length-1) { + now[part] = code + } else if (Object.keys(now).includes(part)) { + now = now[part] + } else { + return null + } + index++ + } + saveMapping() + + return "file_"+code +} + +function createMappingFolder(path) { + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (index == parts.length-1) { + now[part] = {} + } else if (Object.keys(now).includes(part)) { + now = now[part] + } else { + return null + } + index++ + } + saveMapping() + return null +} + +function listMappingFolder(path) { + if (path == "/") return Object.keys(fs_mapping) + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (Object.keys(now).includes(part)) { + if (index == parts.length-1) { + return Object.keys(now[part]) + } else { + now = now[part] + } + } else { + return null + } + index++ + } + return null +} + +function isMappingFolder(path) { + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (Object.keys(now).includes(part)) { + if (index == parts.length-1) { + return typeof now[part] === "object" + } else { + now = now[part] + } + } else { + return null + } + index++ + } + return null +} + +function removeMappingEntry(path) { + let parts = (path.startsWith("/") ? path.slice(1) : path).split("/") + let now = fs_mapping + + let index = 0 + for (const part of parts) { + if (Object.keys(now).includes(part)) { + if (index == parts.length-1) { + delete now[part] + + saveMapping() + } else { + now = now[part] + } + } else { + return null + } + index++ + } + return null +} + +function readFile(path) { + path = simplifyPath(path) + return localStorage.getItem(getMappingCode(path)) +} + +function writeFile(path, content) { + path = simplifyPath(path) + let code = getMappingCode(path) + if (code == null) code = createMappingCode(path) + localStorage.setItem(code, content) +} + +function hasFile(path) { + path = simplifyPath(path) + return getMappingCode(path) != null +} + +function listFiles(path) { + path = simplifyPath(path) + return listMappingFolder(path) +} + +function createFolder(path) { + createMappingFolder(simplifyPath(path)) +} + +function removeFile(path) { + path = simplifyPath(path) + if (!isFolder(path)) { + localStorage.removeItem(getMappingCode(path)) + } + removeMappingEntry(path) +} + +function isFolder(path) { + path = simplifyPath(path) + return isMappingFolder(path) +} + +function simplifyPath(path) { + if (!path.startsWith("/")) path = cwd+"/" + path; + + const segments = path.split('/'); + const stack = []; + + for (let segment of segments) { + if (segment === '' || segment === '.') { + continue; + } else if (segment === '..') { + if (stack.length > 0) { + stack.pop(); + } + } else { + stack.push(segment); + } + } + + const simplifiedPath = '/' + stack.join('/'); + return simplifiedPath; +} + +function clearFileSystem() { + let callback = (x) => { + for (const o of Object.values(x)) { + if (typeof o === "object") { + callback(o) + } else { + localStorage.removeItem("file_"+o) + } + } + } + callback(fs_mapping) + fs_mapping = {} + saveMapping() +} \ No newline at end of file diff --git a/sys/ppm.js b/sys/ppm.js new file mode 100644 index 0000000..5453d2a --- /dev/null +++ b/sys/ppm.js @@ -0,0 +1,128 @@ +async function fetchPackage(url) { + try { + return await fetchJson(url+"/package.json") + } catch (error) { + return null + } +} + +async function getInstalledPackage(name) { + if (!hasFile("/etc/ppm/"+name)) { + return null + } + + return JSON.parse(readFile("/etc/ppm/"+name)) +} + +async function listPackages() { + let packages = [] + for (const name of listFiles("/etc/ppm")) { + packages.push(JSON.parse(readFile("/etc/ppm/"+name))) + } + return packages +} + +async function fetchJson(url) { + for (let i = 0; i < 10; i++) { + try { + return await fetch(url).then(o => o.json()) + } catch (error) { + continue + } + } + return null +} + +async function fetchText(url) { + for (let i = 0; i < 10; i++) { + try { + return await fetch(url).then(o => o.text()) + } catch (error) { + continue + } + } + return null +} + +async function installPackage(url) { + let package + try { + package = await fetch(url+"/package.json").then(o => o.json()) + } catch (error) { + return 2 + } + + if (!hasFile("/etc/ppm")) { + createFolder("/etc/ppm") + } + + if (hasFile("/etc/ppm/"+package["name"])) { + return 1 + } + + if ("apps" in package) { + for (const app of package.apps) { + writeFile("/app/"+app, await fetchText(url+"/"+app)) + } + } + + if ("configs" in package) { + for (const config of package.configs) { + writeFile("/config/"+config, await fetchText(url+"/"+config)) + } + } + + writeFile("/etc/ppm/"+package["name"], JSON.stringify(package)) + + return 0 +} + +async function removePackage(name) { + let package = await getInstalledPackage(name) + + if (package == null) return false + + if ("apps" in package) { + for (const app of package.apps) { + removeFile("/app/"+app) + } + } + + if ("configs" in package) { + for (const config of package.configs) { + removeFile("/config/"+config) + } + } + + removeFile("/etc/ppm/"+name) + + return true +} + +async function updatePackage(name, url) { + let package = await getInstalledPackage(name) + + if (package == null) return 1 + + if ("apps" in package) { + for (const app of package.apps) { + removeFile("/app/"+app) + } + } + + try { + package = await fetch(url+"/package.json").then(o => o.json()) + } catch (error) { + return 2 + } + + if ("apps" in package) { + for (const app of package.apps) { + writeFile("/app/"+app, await fetchText(url+"/"+app)) + } + } + + writeFile("/etc/ppm/"+name, JSON.stringify(package)) + + return 0 +} \ No newline at end of file diff --git a/sys/system.js b/sys/system.js new file mode 100644 index 0000000..8370012 --- /dev/null +++ b/sys/system.js @@ -0,0 +1,190 @@ +var cwd = "/home" + +var stdout = "" +var stdin = "" + +var disable_stdin = true +var silent_stdin = false + +var processes = [] + +const RENDER_STDIN = 1 +const SILENT_STDIN = 2 +const DISABLE_STDIN = 3 +const ENABLE_STDIN = 4 + +async function readLine(on_key=(key, ctrl, alt, shift, content, pos) => [content, pos]) { + setStdinFlag(ENABLE_STDIN) + + let start_cursor_pos = getCursor() + + let pos = 0 + let content = "" + while (true) { + let event = await pollStdinEvent() + + if (event.type == "key") { + if (event.key == "Backspace") { + if (content.length >= 1) { + content = content.substring(0, content.length-1) + trimTerminal(1) + } + } else if (event.key == "ArrowLeft") { + let cursor = getCursor() + if (cursor[0] > start_cursor_pos[0]) { + setCursor(cursor[0]-1, cursor[1]) + pos -= 1 + } + } else if (event.key == "ArrowRight") { + let cursor = getCursor() + if (cursor[0] < start_cursor_pos[0] + content.length) { + setCursor(cursor[0]+1, cursor[1]) + pos += 1 + } + } else { + let res = on_key(key, is_ctrl, is_alt, is_shift, content, pos) + terminal_text = terminal_text.slice(0, terminal_text.length - content.length) + res[0] + updateTerminal() + setCursor(start_cursor_pos[0] + res[1], start_cursor_pos[1]) + content = res[0] + pos = res[1] + } + + continue + } else if (event.type == "char") { + if (event.char == "\n") break + + content = content.slice(0, pos) + event.char + content.slice(pos) + pos += 1 + } + } + + setStdinFlag(DISABLE_STDIN) + + return content +} + +async function pollStdinEvent() { + let char = await readStdin() + + if (char == "\r") { + let key = "" + char = await readStdin() + while (char != "\r") { + key += char + char = await readStdin() + } + + let is_ctrl = key.charAt(0) == "1" + let is_alt = key.charAt(1) == "1" + let is_shift = key.charAt(2) == "1" + key = key.slice(3) + + return { + "type": "key", + "ctrl": is_ctrl, + "alt": is_alt, + "shift": is_shift, + "key": key + } + } + + return { + "type": "char", + "char": char + } +} + +async function readStdin() { + while (stdin.length == 0) { + await new Promise(resolve => setTimeout(resolve, 10)) + } + let was_stdin = stdin.charAt(0) + stdin = stdin.slice(1) + return was_stdin +} + +async function writeStdout(content) { + stdout += content + writeTerminal(content) +} + +function setStdinFlag(flag) { + if (flag == 1) { + silent_stdin = true + } else if (flag == 2) { + silent_stdin = false + } else if (flag == 3) { + disable_stdin = true + } else if (flag == 4) { + disable_stdin = false + } +} + +function executeCommand(args, read=readStdin, write=writeStdout) { + let id = new Date().getMilliseconds().toString()+(Math.random()*100) + let func_content = readFile(args[0]) + if (func_content == null || !func_content.includes("function main")) return + let func = new Function("args", "readStdin", "writeStdout", func_content+"\n\nreturn main(args)") + let process = { + "id": id, + "name": args.join(" "), + "promise": new Promise((resolve, reject) => { + setTimeout(() => { + try { + resolve(func(args, read, write)) + } catch (e) { + console.log(e) + reject(e) + } + }, 0) + }).then(o => { + processes = processes.filter(x => x.id != id) + return o + }) + } + processes.push(process) + return process +} + +function loadApp(name) { + fetch("app/"+name+".js") + .then(o => o.text()) + .then(o => { + writeFile("/app/"+name+".js", o) + }) +} + +function loadAppAndExecute(name) { + fetch("app/"+name+".js") + .then(o => o.text()) + .then(o => { + writeFile("/app/"+name+".js", o) + }) +} + +async function resetSystem() { + clearFileSystem() + + createFolder("/") + createFolder("/home") + createFolder("/app") + createFolder("/config") + createFolder("/temp") + createFolder("/etc") + + await installPackage("app/hello") + await installPackage("app/posh") + await installPackage("app/ppm") + await installPackage("app/putils") + await installPackage("app/reset") + await installPackage("app/vget") +} + +if (Object.keys(fs_mapping).length == 0) { + resetSystem() +} + +executeCommand(["/app/posh.js"]) + +var start_date = new Date() \ No newline at end of file diff --git a/sys/terminal.js b/sys/terminal.js new file mode 100644 index 0000000..cd30c88 --- /dev/null +++ b/sys/terminal.js @@ -0,0 +1,116 @@ +const CHAR_SIZE = [10, 22] +const CURSOR_OFFSET = [10, 10] + +var terminal = document.getElementById("terminal") +var terminal_text = "" +var last_stdin_length = 0 + +function writeTerminalAtCursor(content) { + let cursor_index = getCursorIndex() + terminal_text = terminal_text.slice(0, cursor_index) + content + terminal_text.slice(cursor_index) + setCursor(cursor_pos[0]+1, cursor_pos[1]) + last_stdin_length += 1 + updateTerminalWOCursor() +} + +function writeTerminal(content) { + terminal_text += content + last_stdin_length = 0 + updateTerminal() +} + +function replaceTerminal(content) { + terminal_text = content + updateTerminal() +} + +function trimTerminal(length) { + terminal_text = terminal_text.substring(0, terminal_text.length-length) + updateTerminal() +} + +function clearTerminal() { + terminal_text = "" + updateTerminal() +} + +function updateTerminalWOCursor() { + terminal.innerText = terminal_text +} + +function updateTerminal() { + setCursor( + terminal_text.split("\n").reverse()[0].length, + terminal_text.split("\n").length-1 + ) + updateTerminalWOCursor() +} + +var cursor = document.getElementById("cursor") +var cursor_pos = [0, 0] + +function getCursorIndex() { + let lines = terminal_text.split("\n") + let index = 0 + for (let y = 0; y < lines.length; y++) { + const line = lines[y]; + const length = line.length + + if (y == cursor_pos[1]) { + return index + cursor_pos[0] + } + + index += length + 1 + } + return 0 +} + +function getCursor() { + return cursor_pos +} + +function setCursor(x, y) { + cursor_pos = [x, y] + updateCursor() +} + +function updateCursor() { + cursor.style["top"] = cursor_pos[1] * CHAR_SIZE[1] + CURSOR_OFFSET[1] + "px" + cursor.style["left"] = cursor_pos[0] * CHAR_SIZE[0] + CURSOR_OFFSET[0] + "px" + cursor.scrollIntoView({behavior: "smooth", inline: "end"}) +} + +document.onkeydown = (e) => { + let key = e.key; + if (!disable_stdin) { + if (key == "Enter") { + stdin += "\n" + if (!silent_stdin) { + writeTerminal("\n") + } + } else if (key.length == 1) { + if (e.ctrlKey && key == "v") return + stdin += key + if (!silent_stdin) { + writeTerminalAtCursor(key) + } + } else { + stdin += "\r"+(e.ctrlKey ? "1" : "0")+(e.altKey ? "1" : "0")+(e.shiftKey ? "1" : "0")+e.key+"\r" + } + } +} + +var clipboard_collect = document.getElementById("clipboard-collect") + +setInterval(() => { + clipboard_collect.focus() +}); + +clipboard_collect.onpaste = (e) => { + let paste = (e.clipboardData || window.clipboardData).getData("text"); + + if (paste != null) { + stdin += paste.replace("\r", "") + writeTerminal(paste) + } +} \ No newline at end of file