From b8ed7ec39edbc48e6284cee4413b401b1846fb2a Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 25 Apr 2020 01:42:20 -0400 Subject: [PATCH] Add add cli command and make cli more defensive --- experiments/skin-database/cli.js | 98 ++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/experiments/skin-database/cli.js b/experiments/skin-database/cli.js index 395f10ac..15b351c3 100755 --- a/experiments/skin-database/cli.js +++ b/experiments/skin-database/cli.js @@ -10,61 +10,71 @@ const Skins = require("./data/skins"); const db = require("./db"); const Discord = require("discord.js"); const tweet = require("./tasks/tweet"); +const { addSkinFromBuffer } = require("./addSkin"); async function main() { const client = new Discord.Client(); // The Winston transport logs in the client. await DiscordWinstonTransport.addToLogger(client, logger); - switch (argv._[0]) { - case "image-hash": - const hashes = new Map(); + try { + switch (argv._[0]) { + case "image-hash": + const hashes = new Map(); - fs.readFileSync(path.join(__dirname, "./hash.txt"), "utf8") - .split("\n") - .forEach(line => { - const [md5, imgHash] = line.split(" "); - hashes.set(md5, imgHash); - }); + fs.readFileSync(path.join(__dirname, "./hash.txt"), "utf8") + .split("\n") + .forEach((line) => { + const [md5, imgHash] = line.split(" "); + hashes.set(md5, imgHash); + }); - for (const [md5, imgHash] of hashes.entries()) { - await Skins.setImageHash(md5, imgHash); - process.stderr.write("."); + for (const [md5, imgHash] of hashes.entries()) { + await Skins.setImageHash(md5, imgHash); + process.stderr.write("."); + } + break; + + case "tweet": + await tweet(client); + break; + case "fetch-metadata": + console.log("Going to download metadata from the Internet Archive"); + await fetchInternetArchiveMetadata(); + break; + + case "ensure-md5s": + await ensureInternetArchiveItemsIndexByMd5(); + break; + case "metadata": { + const hash = argv._[1]; + console.log(await Skins.getInternetArchiveUrl(hash)); + break; } - break; - - case "tweet": - await tweet(client); - break; - case "fetch-metadata": - console.log("Going to download metadata from the Internet Archive"); - await fetchInternetArchiveMetadata(); - break; - - case "ensure-md5s": - await ensureInternetArchiveItemsIndexByMd5(); - break; - case "metadata": { - const hash = argv._[1]; - console.log(await Skins.getInternetArchiveUrl(hash)); - break; + case "reconcile": { + await Skins.reconcile(); + break; + } + case "skin": { + const hash = argv._[1]; + logger.info({ hash }); + console.log(await Skins.getSkinByMd5(hash)); + break; + } + case "add": { + const filePath = argv._[1]; + const buffer = fs.readFileSync(filePath); + console.log(await addSkinFromBuffer(buffer, filePath, "cli-user")); + break; + } + default: + console.log(`Unknown command ${argv._[0]}`); } - case "reconcile": { - await Skins.reconcile(); - break; - } - case "skin": { - const hash = argv._[1]; - logger.info({ hash }); - console.log(await Skins.getSkinByMd5(hash)); - break; - } - default: - console.log(`Unknown command ${argv._[0]}`); + } finally { + logger.close(); + client.destroy(); + await db.close(); } - logger.close(); - client.destroy(); - await db.close(); } main();