diff --git a/app/mxwm/package.json b/app/mxwm/package.json index 34ba22c..7199abc 100644 --- a/app/mxwm/package.json +++ b/app/mxwm/package.json @@ -3,6 +3,7 @@ "version": "0.1.2", "description": "Mega eXtreme Window Manager", "author": "MeexReay", - "apps": [ "zcom.js", "startz.js", "zterm.js", "poki.js", "zhelp.js" ], - "configs": [ "poki.json" ] + "apps": [ "zcom.js", "startz.js", "zhelp.js" ], + "configs": [], + "depends": [ "poki", "zterm" ] } diff --git a/app/poki/package.json b/app/poki/package.json new file mode 100644 index 0000000..ed292da --- /dev/null +++ b/app/poki/package.json @@ -0,0 +1,8 @@ +{ + "name": "poki", + "version": "0.1.0", + "description": "Poki desktop deck", + "author": "MeexReay", + "apps": [ "poki.js" ], + "configs": [ "poki.json" ] +} diff --git a/app/mxwm/poki.js b/app/poki/poki.js similarity index 100% rename from app/mxwm/poki.js rename to app/poki/poki.js diff --git a/app/mxwm/poki.json b/app/poki/poki.json similarity index 53% rename from app/mxwm/poki.json rename to app/poki/poki.json index 9637993..79310ec 100644 --- a/app/mxwm/poki.json +++ b/app/poki/poki.json @@ -1,10 +1,4 @@ [ - { - "id": "zhelp", - "title": "help page", - "icon": "app/mxwm/zhelp.png", - "script": ["/app/zhelp.js"] - }, { "id": "zterm", "title": "zterm - terminal emulator", diff --git a/app/posh/posh.js b/app/posh/posh.js index b490d83..beefc6c 100644 --- a/app/posh/posh.js +++ b/app/posh/posh.js @@ -25,7 +25,7 @@ async function processCommand(command, args) { await writeStdout("\nСтатус код: "+code+"\n") } } catch (e) { - console.log(e.toString()) + console.log(e) await writeStdout("Не запустилася\n") } } else { diff --git a/app/ppm/package.json b/app/ppm/package.json index 2e1f9f6..c4b8e57 100644 --- a/app/ppm/package.json +++ b/app/ppm/package.json @@ -1,6 +1,6 @@ { "name": "ppm", - "version": "0.1.6", + "version": "0.1.7", "description": "Poshliy Package Manager", "author": "MeexReay", "apps": [ "ppm.js" ], diff --git a/app/ppm/ppm.js b/app/ppm/ppm.js index e14af52..129a023 100644 --- a/app/ppm/ppm.js +++ b/app/ppm/ppm.js @@ -4,104 +4,153 @@ */ +let config = JSON.parse(readFile("/config/ppm.json")) + +async function remove(name) { + let pkg = await getInstalledPackage(name) + if (pkg != null) { + await removePackage(name) + + await writeStdout(`Пакет ${pkg['name']} удален и все его конфиги тоже\n`) + if ("depends" in pkg) { + await writeStdout(`Вот пакеты от которых он зависил которые не удалены: \n${pkg["depends"]}\n`) + } + + return 0 + } + + await writeStdout("Биспокойся произошла ошибко\n") + return 1 +} + +async function listInstalled() { + return (await listPackages()) +} + +async function listOutdated() { + let packages = [] + + for (const pkg of (await listPackages())) { + for (const repo of config["repositories"]) { + let fetched = await fetchPackage(repo+"/"+pkg["name"]) + if (fetched != null) { + if (fetched["version"] == pkg["version"]) { + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} уже на последней версии\n`) + break + } + + packages.push(pkg) + } + } + } + + return packages +} + +async function update(name) { + for (const repo of config["repositories"]) { + let status = await updatePackage(name, repo+"/"+name) + + if (status == 0) { + let pkg = await getInstalledPackage(name) + + await installDepends(pkg) + + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} обновлен\n`) + return 0 + } else if (status == 1) { + await writeStdout("чувак пакет не найден\n") + return 1 + } + } + await writeStdout("чувак пакет не может быть обновлен\n") + return 1 +} + +async function installDepends(pkg) { + if ("depends" in pkg) { + for (const dep of pkg.depends) { + let status = await updateOrInstall(dep) + + if (status != 0) { + return status + } + } + } + + return 0 +} + +async function updateOrInstall(name) { + if (await getInstalledPackage(name) == null) { + return await install(name) + } else { + return await update(name) + } +} + +async function install(name) { + for (const repo of config["repositories"]) { + // await writeStdout(`Фетчим ${package} на репозитории ${repo}\n`) + + let status = await installPackage(repo+"/"+name) + + if (status == 0) { + let pkg = await getInstalledPackage(name) + + await installDepends(pkg) + + await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} установлен\n`) + return 0 + } else if (status == 1) { + await writeStdout("Пакет не установлен тк он уже установлен чувааак\n") + return 1 + } + } + + return 1 +} + 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 - } - } + return await install(package) } 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 + return await update(package) } else if (args[1] == "r") { - if (await removePackage(package)) { - await writeStdout(`Пакет ${package} удален\n`) - } else { - await writeStdout("Биспокойся произошла ошибко\n") - return 1 - } + return await remove(package) } 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") } + return 0 } } else if (args.length == 2 && args[1] == "l") { await writeStdout("ваши покеты:\n") for (const package of (await listPackages())) { await writeStdout("- "+package["name"]+"-"+package["version"]+"\n") } + return 0 } else if (args.length == 2 && args[1] == "a") { - let config = JSON.parse(readFile("/config/ppm.json")) + for (let pkg of (await listOutdated())) { + let status = await update(pkg["name"]) - 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 - } - } + if (status != 0) { + return status } } await writeStdout("Обнова прошла успешна\n") return 0 } else if (args.length == 2 && args[1] == "A") { - let config = JSON.parse(readFile("/config/ppm.json")) + for (let pkg of (await listPackages())) { + let status = await update(pkg["name"]) - 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 - } + if (status != 0) { + return status } } @@ -118,5 +167,5 @@ async function main(args) { await writeStdout(" ppm A - обновить все пакеты принудительно\n") } - return 0 + return 1 } \ No newline at end of file diff --git a/app/zterm/package.json b/app/zterm/package.json new file mode 100644 index 0000000..c0d5320 --- /dev/null +++ b/app/zterm/package.json @@ -0,0 +1,8 @@ +{ + "name": "zterm", + "version": "0.1.0", + "description": "Zcom Terminal Emulator", + "author": "MeexReay", + "apps": [ "zterm.js" ], + "configs": [ ] +} diff --git a/app/mxwm/zterm.js b/app/zterm/zterm.js similarity index 100% rename from app/mxwm/zterm.js rename to app/zterm/zterm.js diff --git a/app/mxwm/zterm.png b/app/zterm/zterm.png similarity index 100% rename from app/mxwm/zterm.png rename to app/zterm/zterm.png