aboutsummaryrefslogtreecommitdiff
path: root/commands/upgrade.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-02-12 17:20:52 +0100
committerMinteck <contact@minteck.org>2022-02-12 17:20:52 +0100
commitc9b8915a23a883b5b76868c227fcc58ae6ed694d (patch)
treeaefbe35265e85b674488f1f84a721dac049fe68c /commands/upgrade.js
parent3eec02fd314dae41ac82d7b01f05e95cc80e1282 (diff)
downloadtwilight-c9b8915a23a883b5b76868c227fcc58ae6ed694d.tar.gz
twilight-c9b8915a23a883b5b76868c227fcc58ae6ed694d.tar.bz2
twilight-c9b8915a23a883b5b76868c227fcc58ae6ed694d.zip
Update
Diffstat (limited to 'commands/upgrade.js')
-rw-r--r--commands/upgrade.js99
1 files changed, 63 insertions, 36 deletions
diff --git a/commands/upgrade.js b/commands/upgrade.js
index 7dcdb4a..18e5adc 100644
--- a/commands/upgrade.js
+++ b/commands/upgrade.js
@@ -5,6 +5,7 @@ module.exports = async (argv) => {
let packages = JSON.parse(fs.readFileSync(home + "/repository/list.json").toString());
spinner.succeed("Reading packages lists... done");
let updated = false;
+ let affected = false;
for (let pack of installed) {
if (!packages.includes(pack.id)) {
@@ -15,40 +16,6 @@ module.exports = async (argv) => {
let pkg = JSON.parse(fs.readFileSync(home + "/repository/" + dir + "/" + pack.id + ".json").toString());
if ((argv.package !== undefined && argv.package === pack.id) || argv.package === undefined) {
updated = true;
- if (os.platform() === "win32" && pkg.platforms.windows === 0) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'win32' anymore");
- installable = false;
- } else if (os.platform() === "linux" && pkg.platforms.linux === 0) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'linux' anymore");
- installable = false;
- } else if (os.platform() === "darwin" && pkg.platforms.mac === 0) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'macos' anymore");
- installable = false;
- }
-
- if (os.platform() === "win32" && pkg.platforms.windows === 1) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'win32'");
- } else if (os.platform() === "linux" && pkg.platforms.linux === 1) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'linux'");
- } else if (os.platform() === "darwin" && pkg.platforms.mac === 1) {
- console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'macos'");
- }
-
- spinner = ora("Checking dependencies...").start();
- for (let dependency of pkg.depends) {
- let cmd = "which";
- if (os.platform() === "win32") { cmd = "where"; }
- try {
- if (require('child_process').spawnSync(cmd, [dependency]).status !== 0) {
- spinner.fail("Checking dependencies... failed")
- die(c.red("error: ") + "package '" + pack.id + "' depends on '" + dependency + "' which is not installed");
- }
- } catch (e) {
- spinner.fail("Checking dependencies... failed")
- die(c.red("error: ") + "unable to check for '" + dependency + "'");
- }
- }
- spinner.succeed("Checking dependencies... done")
if (installable) {
let version = pkg.verdata.latest;
@@ -75,6 +42,43 @@ module.exports = async (argv) => {
}
if (pack.version !== version) {
+ let affected = true;
+
+ if (os.platform() === "win32" && pkg.platforms.windows === 0) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'win32' anymore");
+ installable = false;
+ } else if (os.platform() === "linux" && pkg.platforms.linux === 0) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'linux' anymore");
+ installable = false;
+ } else if (os.platform() === "darwin" && pkg.platforms.mac === 0) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' not available on platform 'macos' anymore");
+ installable = false;
+ }
+
+ if (os.platform() === "win32" && pkg.platforms.windows === 1) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'win32'");
+ } else if (os.platform() === "linux" && pkg.platforms.linux === 1) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'linux'");
+ } else if (os.platform() === "darwin" && pkg.platforms.mac === 1) {
+ console.log(c.yellow("warn: ") + "package '" + pack.id + "' is experimental on platform 'macos'");
+ }
+
+ spinner = ora("Checking dependencies...").start();
+ for (let dependency of pkg.depends) {
+ let cmd = "which";
+ if (os.platform() === "win32") { cmd = "where"; }
+ try {
+ if (require('child_process').spawnSync(cmd, [dependency]).status !== 0) {
+ spinner.fail("Checking dependencies... failed")
+ die(c.red("error: ") + "package '" + pack.id + "' depends on '" + dependency + "' which is not installed");
+ }
+ } catch (e) {
+ spinner.fail("Checking dependencies... failed")
+ die(c.red("error: ") + "unable to check for '" + dependency + "'");
+ }
+ }
+ spinner.succeed("Checking dependencies... done")
+
console.log(" Installing '" + pkg.name + "'...")
console.log(" version: " + pack.version + " -> " + version);
console.log(" release: " + date);
@@ -120,12 +124,31 @@ module.exports = async (argv) => {
fs.writeFileSync(os.homedir() + "/.twilight/installed.json", JSON.stringify(installed));
spinner.succeed("Extracting package... done");
console.log(" Size change: " + change);
+
+ if (os.platform() === "win32" && typeof pkg.executable.windows === "string") {
+ fs.writeFileSync(os.homedir() + "/.twilight/binaries/" + pkg.id + ".bat", pkg.executable.windows);
+ } else if (os.platform() === "linux" && typeof pkg.executable.linux === "string") {
+ fs.writeFileSync(os.homedir() + "/.twilight/binaries/" + pkg.id + ".sh", pkg.executable.linux);
+ } else if (os.platform() === "darwin" && typeof pkg.executable.mac === "string") {
+ fs.writeFileSync(os.homedir() + "/.twilight/binaries/" + pkg.id + ".sh", pkg.executable.mac);
+ }
+
+ let postinstall = [];
+ if (os.platform() === "win32") postinstall = pkg.postinstall.windows;
+ if (os.platform() === "linux") postinstall = pkg.postinstall.linux;
+ if (os.platform() === "darwin") postinstall = pkg.postinstall.mac;
+
+ if (postinstall.length > 0) {
+ spinner = ora("Running post-install hooks...").start();
+ for (let hook of postinstall) {
+ require('child_process').execSync(hook, { stdio: "inherit" })
+ }
+ spinner.succeed("Running post-install hooks... done");
+ }
})
}
} else if (argv.package !== undefined && argv.package === pack.id) {
die(c.red("error: ") + "package '" + argv.package + "' is up to date");
- } else {
- console.log(" up to date");
}
} else if (argv.package !== undefined && argv.package === pack.id) {
die(c.red("error: ") + "package '" + argv.package + "' cannot be updated");
@@ -137,4 +160,8 @@ module.exports = async (argv) => {
if (!updated) {
die(c.red("error: ") + "package '" + argv.package + "' not installed");
}
+
+ if (!affected) {
+ die("All packages are up to date");
+ }
} \ No newline at end of file