aboutsummaryrefslogtreecommitdiff
path: root/commands/installed.js
diff options
context:
space:
mode:
Diffstat (limited to 'commands/installed.js')
-rw-r--r--commands/installed.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/commands/installed.js b/commands/installed.js
new file mode 100644
index 0000000..577d071
--- /dev/null
+++ b/commands/installed.js
@@ -0,0 +1,68 @@
+module.exports = async () => {
+ let packages = JSON.parse(fs.readFileSync(home + "/repository/list.json").toString());
+ let installed = JSON.parse(fs.readFileSync(home + "/installed.json").toString()).map(i => i.id);
+ let installs = JSON.parse(fs.readFileSync(home + "/installed.json").toString());
+
+ let signs = {};
+ let dates = {};
+ let platforms = {};
+
+ for (let pkg of packages) {
+ let dir = pkg.substring(0, 1).replace(/[^a-zA-Z0-9]/gm, "#");
+ let pack = JSON.parse(fs.readFileSync(home + "/repository/" + dir + "/" + pkg + ".json").toString());
+
+ let signed = false;
+ let signInfo = "";
+ let verified = false;
+
+ if (pack.sign.signed) {
+ signed = true;
+ verified = pack.sign.verified;
+ if (pack.sign.signer.name && pack.sign.signer.email && pack.sign.key) {
+ signInfo = pack.sign.signer.name + " <" + pack.sign.signer.email + "> " + c.gray("(" + pack.sign.key + ")");
+ } else if (pack.sign.signer.name && pack.sign.key) {
+ signInfo = pack.sign.signer.name + c.gray(" (" + pack.sign.key + ")");
+ } else if (pkg.sign.signer.email && pkg.sign.key) {
+ signInfo = pkg.sign.signer.email + c.gray(" (" + pkg.sign.key + ")");
+ } else if (pkg.sign.key) {
+ signInfo = pkg.sign.key;
+ }
+ }
+
+ if (signed) {
+ if (verified) {
+ signs[pack.id] = c.green("verified");
+ } else {
+ signs[pack.id] = c.yellow("unverified");
+ }
+ } else {
+ signs[pack.id] = c.red("unsafe");
+ }
+
+ if (pack.platforms.windows === 2 && pack.platforms.linux === 2 && pack.platforms.mac === 2) {
+ platforms[pack.id] = c.blue("all");
+ } else if (pack.platforms.windows === 1 && pack.platforms.linux === 1 && pack.platforms.mac === 1) {
+ platforms[pack.id] = c.yellow("all");
+ } else {
+ platforms[pack.id] = "";
+ if (pack.platforms.windows === 1) { platforms[pack.id] += c.yellow("win32") + "," }
+ if (pack.platforms.windows === 2) { platforms[pack.id] += c.blue("win32") + "," }
+ if (pack.platforms.linux === 1) { platforms[pack.id] += c.yellow("linux") + "," }
+ if (pack.platforms.linux === 2) { platforms[pack.id] += c.blue("linux") + "," }
+ if (pack.platforms.mac === 1) { platforms[pack.id] += c.yellow("darwin") + "," }
+ if (pack.platforms.mac === 2) { platforms[pack.id] += c.blue("darwin") + "," }
+
+ if (platforms[pack.id].endsWith(",")) { platforms[pack.id] = platforms[pack.id].substring(0, platforms[pack.id].length - 1) }
+ }
+ }
+
+ for (let pkg of packages) {
+ let dir = pkg.substring(0, 1).replace(/[^a-zA-Z0-9]/gm, "#");
+ let pack = JSON.parse(fs.readFileSync(home + "/repository/" + dir + "/" + pkg + ".json").toString());
+
+ let add = "";
+ if (installed.includes(pack.id)) {
+ console.log(c.green(pack.id) + "/" + signs[pack.id] + " " + pack.verdata.latest + " " + platforms[pack.id] + add)
+ }
+ }
+} \ No newline at end of file