alwaysai
Version:
The alwaysAI command-line interface (CLI)
69 lines (61 loc) • 1.88 kB
text/typescript
import { rimraf } from 'rimraf';
import { CliBranch, CliLeaf, CliOneOfInput } from '@alwaysai/alwayscli';
import { ALWAYSAI_CLI_EXECUTABLE_NAME, SYSTEM_IDS } from '../../constants';
import { Spinner, echo } from '../../util';
import { getSystemId, setSystemId } from '../../infrastructure';
import { ALWAYSAI_SHOW_HIDDEN, ALWAYSAI_SYSTEM_ID } from '../../environment';
import { LOCAL_AAI_CFG_DIR } from '../../paths';
import * as logSymbols from 'log-symbols';
const show = CliLeaf({
name: 'show',
description: `Show your current "${ALWAYSAI_CLI_EXECUTABLE_NAME}" configuration`,
action() {
if (ALWAYSAI_SYSTEM_ID) {
echo(
`${logSymbols.warning} System ID is overridden by environment variable "ALWAYSAI_SYSTEM_ID"`
);
}
return { systemId: getSystemId() };
}
});
const set = CliLeaf({
name: 'set',
description: `Set an "${ALWAYSAI_CLI_EXECUTABLE_NAME}" configuration value`,
namedInputs: {
systemId: CliOneOfInput({ values: SYSTEM_IDS, required: true })
},
action(_, { systemId }) {
if (ALWAYSAI_SYSTEM_ID) {
echo(
`${logSymbols.warning} System ID is overridden by environment variable "ALWAYSAI_SYSTEM_ID"`
);
}
return setSystemId(systemId);
}
});
function purgeConfig(path) {
const spinner = Spinner('Removing the configuration files');
try {
rimraf.sync(path);
spinner.succeed();
} catch (exception) {
spinner.fail();
throw exception;
}
}
const purge = CliLeaf({
name: 'purge',
description: 'Purge config files and credentials.',
action(_) {
purgeConfig(LOCAL_AAI_CFG_DIR);
}
});
export const config = CliBranch({
name: 'config',
hidden: !ALWAYSAI_SHOW_HIDDEN,
description: `Show, set, or purge "${ALWAYSAI_CLI_EXECUTABLE_NAME}" configuration values`,
subcommands: [show, set, purge]
});
export const testSuiteFuncs = {
purgeConfig
};