Add add cli command and make cli more defensive

This commit is contained in:
Jordan Eldredge 2020-04-25 01:42:20 -04:00
parent 53c5473da8
commit b8ed7ec39e

View file

@ -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();