rewrite ppm

This commit is contained in:
MeexReay 2025-05-25 19:35:56 +03:00
parent c2ba9da433
commit 6dad6847e3
10 changed files with 142 additions and 82 deletions

View File

@ -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" ]
}

8
app/poki/package.json Normal file
View File

@ -0,0 +1,8 @@
{
"name": "poki",
"version": "0.1.0",
"description": "Poki desktop deck",
"author": "MeexReay",
"apps": [ "poki.js" ],
"configs": [ "poki.json" ]
}

View File

@ -1,10 +1,4 @@
[
{
"id": "zhelp",
"title": "help page",
"icon": "app/mxwm/zhelp.png",
"script": ["/app/zhelp.js"]
},
{
"id": "zterm",
"title": "zterm - terminal emulator",

View File

@ -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 {

View File

@ -1,6 +1,6 @@
{
"name": "ppm",
"version": "0.1.6",
"version": "0.1.7",
"description": "Poshliy Package Manager",
"author": "MeexReay",
"apps": [ "ppm.js" ],

View File

@ -4,20 +4,102 @@
*/
async function main(args) {
if (args.length == 3 && "iurs".includes(args[1])) {
let package = args[2]
let config = JSON.parse(readFile("/config/ppm.json"))
if (args[1] == "i") {
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+"/"+package)
let status = await installPackage(repo+"/"+name)
if (status == 0) {
let pkg = await getInstalledPackage(package)
let pkg = await getInstalledPackage(name)
await installDepends(pkg)
await writeStdout(`Пакет ${pkg['name']}-${pkg['version']} установлен\n`)
return 0
} else if (status == 1) {
@ -25,83 +107,50 @@ async function main(args) {
return 1
}
}
return 1
}
async function main(args) {
if (args.length == 3 && "iurs".includes(args[1])) {
let package = args[2]
if (args[1] == "i") {
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
}

8
app/zterm/package.json Normal file
View File

@ -0,0 +1,8 @@
{
"name": "zterm",
"version": "0.1.0",
"description": "Zcom Terminal Emulator",
"author": "MeexReay",
"apps": [ "zterm.js" ],
"configs": [ ]
}

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB