archieve-projects/微信机器人/node_modules/cmd-ts/dist/cjs/circuitbreaker.js

106 lines
3.9 KiB
JavaScript
Executable File

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCircuitBreaker = exports.handleCircuitBreaker = exports.versionFlag = exports.helpFlag = void 0;
const types_1 = require("./types");
const flag_1 = require("./flag");
const Result = __importStar(require("./Result"));
const effects_1 = require("./effects");
exports.helpFlag = flag_1.flag({
long: 'help',
short: 'h',
type: types_1.boolean,
description: 'show help',
});
exports.versionFlag = flag_1.flag({
long: 'version',
short: 'v',
type: types_1.boolean,
description: 'print the version',
});
function handleCircuitBreaker(context, value, breaker) {
if (Result.isErr(breaker)) {
return;
}
if (breaker.value === 'help') {
const message = value.printHelp(context);
throw new effects_1.Exit({ exitCode: 1, message, into: 'stdout' });
}
else if (breaker.value === 'version') {
const message = value.version || '0.0.0';
throw new effects_1.Exit({ exitCode: 0, message, into: 'stdout' });
}
}
exports.handleCircuitBreaker = handleCircuitBreaker;
/**
* Helper flags that are being used in `command` and `subcommands`:
* `--help, -h` to show help
* `--version, -v` to show the current version
*
* It is called circuitbreaker because if you have `--help` or `--version`
* anywhere in your argument list, you'll see the version and the help for the closest command
*/
function createCircuitBreaker(withVersion) {
return {
register(opts) {
exports.helpFlag.register(opts);
if (withVersion) {
exports.versionFlag.register(opts);
}
},
helpTopics() {
const helpTopics = exports.helpFlag.helpTopics();
if (withVersion) {
helpTopics.push(...exports.versionFlag.helpTopics());
}
return helpTopics;
},
async parse(context) {
const help = await exports.helpFlag.parse(context);
const version = withVersion
? await exports.versionFlag.parse(context)
: undefined;
if (Result.isErr(help) || (version && Result.isErr(version))) {
const helpErrors = Result.isErr(help) ? help.error.errors : [];
const versionErrors = version && Result.isErr(version) ? version.error.errors : [];
return Result.err({ errors: [...helpErrors, ...versionErrors] });
}
if (help.value) {
return Result.ok('help');
}
else if (version === null || version === void 0 ? void 0 : version.value) {
return Result.ok('version');
}
else {
return Result.err({
errors: [
{
nodes: [],
message: 'Neither help nor version',
},
],
});
}
},
};
}
exports.createCircuitBreaker = createCircuitBreaker;
//# sourceMappingURL=circuitbreaker.js.map