diff options
Diffstat (limited to 'commands/remove.js')
-rw-r--r-- | commands/remove.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/commands/remove.js b/commands/remove.js new file mode 100644 index 0000000..5643dd3 --- /dev/null +++ b/commands/remove.js @@ -0,0 +1,61 @@ +module.exports = async (argv, reinstalling) => { + if (reinstalling === undefined) { + reinstalling = false; + } + + const installed = JSON.parse(fs.readFileSync(home + "/installed.json").toString()); + if (!installed.map(i => i.id).includes(argv.package)) { + die(c.red("error: ") + "package '" + argv.package + "' is not installed"); + } + + let spinner = ora("Reading package lists...").start(); + let packages = JSON.parse(fs.readFileSync(home + "/repository/list.json").toString()); + spinner.succeed("Reading packages lists... done"); + let updated = false; + + let dir = argv.package.substring(0, 1).replace(/[^a-zA-Z0-9]/gm, "#"); + + if (!packages.includes(argv.package)) { + console.log(c.yellow("warn: ") + "package '" + argv.package + "' not in repository anymore"); + name = argv.package; + } else { + name = JSON.parse(fs.readFileSync(home + "/repository/" + dir + "/" + argv.package + ".json").toString()).name; + } + + instInfo = installed.filter(i => i.id === argv.package)[0]; + + console.log(" Uninstalling '" + name + "'...") + console.log(" version: " + instInfo.version); + console.log(" installed: " + moment(instInfo.date).fromNow()); + console.log(" size: " + require('../hooks/size.js')(argv.package)); + + if (reinstalling) { + try { + if (!(await prompts.confirm({ + message: "Reinstalling this package will delete all associated data. Are you sure you want to continue?", + initial: false + }))) { + die(); + } + } catch (e) { + die(); + } + } else { + try { + if (!(await prompts.confirm({ + message: "Uninstalling this package will also delete all associated data. Are you sure you want to continue?", + initial: false + }))) { + die(); + } + } catch (e) { + die(); + } + } + + spinner = ora("Removing package...").start(); + fs.rmSync(home + "/packages/" + argv.package, { recursive: true }); + delete installed[installed.map(i => i.id).indexOf(argv.package)]; + fs.writeFileSync(os.homedir() + "/.twilight/installed.json", JSON.stringify(installed)); + spinner.succeed("Removing package... done"); +}
\ No newline at end of file |