alwaysai
Version:
The alwaysAI command-line interface (CLI)
79 lines • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.enhancer = exports.cleanArgv = void 0;
const logSymbols = require("log-symbols");
const alwayscli_1 = require("@alwaysai/alwayscli");
const util_1 = require("./util");
const environment_1 = require("./environment");
const post_tracking_data_to_segment_1 = require("./infrastructure/post-tracking-data-to-segment");
// NOTE: THis doesn't cover model ID's since those don't have a leading argument flag
const SENSITIVE_KEYWORDS = [
'--email',
'--password',
'--project',
'--deviceId',
'--model',
'--releaseHash',
'--name',
'--tag'
];
function cleanArgv(argv) {
const clean = [];
let cleaning = false;
for (const arg of argv) {
if (cleaning) {
// Push cleaned values until next argument
if (!arg.includes('--')) {
clean.push('******');
continue;
}
}
cleaning = false;
if (SENSITIVE_KEYWORDS.includes(arg)) {
clean.push(arg);
cleaning = true;
}
else {
clean.push(arg);
}
}
return clean;
}
exports.cleanArgv = cleanArgv;
const enhancer = (argvInterface) => async (...argv) => {
if (environment_1.ALWAYSAI_AUDIT_LOG) {
try {
await (0, util_1.openAuditLog)(environment_1.ALWAYSAI_AUDIT_LOG);
}
catch (exception) {
console.error(`${logSymbols.warning} Failed to open audit log: "${exception.message}"`);
}
}
const argvString = cleanArgv(argv).join(' ');
(0, util_1.audit)(`start "${argvString}"`);
const trackingPromise = (0, post_tracking_data_to_segment_1.postTrackingDataToSegment)(argvString);
try {
const returnValue = await argvInterface(...argv);
await new Promise((resolve) => {
(0, util_1.audit)(`end "${returnValue}"`, () => {
resolve();
});
});
await trackingPromise;
return returnValue;
}
catch (exception) {
if (exception.code !== alwayscli_1.CLI_USAGE_ERROR) {
await Promise.all([
(0, post_tracking_data_to_segment_1.postTrackingDataToSegment)(argvString, exception),
trackingPromise
]);
}
else {
await trackingPromise;
}
throw exception;
}
};
exports.enhancer = enhancer;
//# sourceMappingURL=enhancer.js.map