SamuelGalaxys's picture
Upload 1921 files
e4a10af
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const minimist = require("minimist");
const Path = require("path");
const util_1 = require("util");
const _1 = require(".");
const specFromJSON_1 = require("./specFromJSON");
const { stderr, stdout } = process;
const pkg = require("../package.json");
let showedHelp = false;
function nop() {
// Does nothing whatsoever.
}
function showNormalWarning(e) {
stderr.write(`${e}\n`);
}
function showVerboseWarning(e) {
stderr.write(`${util_1.inspect(e, undefined, undefined, true)}\n`);
}
function showHelp(onStderr = true) {
showedHelp = true;
(onStderr ? stderr : stdout).write(`Add a license agreement to a Mac disk image.
Usage: dmg-license [options…] <json-path> <dmg-path>
dmg-license --show-languages [--no-header-row]
json-path: Path to a JSON license specification file.
dmg-path: Path to a disk image (.dmg) file.
Options:
-v, --verbose
Show stack traces for warnings and errors.
-q, --quiet
Don't show warnings at all.
-h, -?, --help
Show this help, without doing anything else.
-V, --version
Show version.
--show-languages
Output a tab-separated table of all recognized languages.
`);
}
function showVersion(onStderr = true) {
(onStderr ? stderr : stdout).write(`${pkg.name} ${pkg.version}\n`);
}
function wrongUsage() {
if (!showedHelp)
showHelp();
return 64;
}
async function main() {
let showError = showVerboseWarning;
let showWarning = showNormalWarning;
try {
const args = minimist(process.argv.slice(2), {
alias: {
["?"]: "help",
V: "version",
h: "help",
q: "quiet",
v: "verbose"
},
boolean: ["verbose", "quiet", "help", "version", "show-languages"],
unknown(arg) {
if (arg.startsWith("-")) {
stderr.write(`Invalid option ‘${arg}’.\n`);
throw wrongUsage();
}
else
return true;
}
});
if (args.quiet) {
showWarning = nop;
showError = showNormalWarning;
}
else if (args.verbose) {
showWarning = showVerboseWarning;
showError = showVerboseWarning;
}
if (args.help) {
showHelp(false);
if (args.version)
showVersion(false);
return;
}
if (args.version) {
if (args._.length)
showVersion();
else {
showVersion(false);
return;
}
}
if (args["show-languages"]) {
stdout.write("Language ID\tLanguage tag\tNative charset\tName\n");
for (const language of _1.Language.byID)
if (language) {
if (language.langTags.length) {
for (const languageTag of language.langTags)
stdout.write(`${language.languageID}\t${languageTag}\t${language.charset}\t${language.englishName}\n`);
}
else
stdout.write(`${language.languageID}\t\t${language.charset}\t${language.englishName}\n`);
}
return;
}
if (args._.length !== 2) {
stderr.write("Wrong number of parameters.\n");
throw wrongUsage();
}
const jsonText = await fs_1.promises.readFile(args._[0], { encoding: "utf8" }).catch(e => {
stderr.write("Couldn't read JSON specification file: ");
showError(e);
throw 66;
});
const jsonDirName = Path.dirname(args._[0]);
try {
await _1.dmgLicenseFromJSON(args._[1], jsonText, {
resolvePath(path) {
return Path.resolve(jsonDirName, path);
},
onNonFatalError: showWarning
});
}
catch (e) {
if (e instanceof specFromJSON_1.BadJSONLicenseSpecError) {
showError(e);
throw 65;
}
else
throw e;
}
}
catch (e) {
if (typeof e === "number")
process.exit(e);
else {
showError(e);
process.exit(70);
}
}
}
exports.main = main;
//# sourceMappingURL=cli.js.map