git-cat-file
Version:
Pure JavaScript `git cat-file -p` for node.js
55 lines (54 loc) • 1.51 kB
JavaScript
;
/**
* https://github.com/kawanet/git-cat-file
*/
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
const fs_1 = require("fs");
const cli_lib_1 = require("../lib/cli-lib");
const longParams = {
help: true,
};
const shortParams = {
C: "path",
h: true, // show help
};
async function CLI(args) {
const options = (0, cli_lib_1.parseOptions)({
long: longParams,
short: shortParams,
args: args,
});
args = options.args;
const { C } = options.short;
if (C)
process.chdir(C);
if (await fs_1.promises.readdir(".git").catch(_ => null)) {
process.chdir(".git");
}
const { help } = options.long;
const { h } = options.short;
if (help || h) {
process.stderr.write(`Usage:\n`);
showHelp();
process.exit(1);
}
const repo = (0, __1.openLocalRepo)(".");
while (args.length) {
const revision = args.shift();
const obj = await repo.getObject(revision);
const commit_id = obj === null || obj === void 0 ? void 0 : obj.oid;
if (!commit_id) {
process.stderr.write(`Invalid revision: ${revision}\n`);
showHelp();
process.exit(1);
}
process.stdout.write(`${commit_id}\n`);
}
}
function showHelp() {
process.stderr.write(` git-rev-parse-js [-C path] <args>...\n`);
}
if (!module.parent)
CLI(process.argv.slice(2)).catch(console.error);