alwaysai
Version:
The alwaysAI command-line interface (CLI)
49 lines (47 loc) • 1.61 kB
text/typescript
import * as chalk from 'chalk';
import { CliLeaf, CliUsageError } from '@alwaysai/alwayscli';
import {
yesCliInput,
alwaysaiUserEmailCliInput,
alwaysaiUserPasswordCliInput
} from '../../cli-inputs';
import {
alwaysaiUserLoginYesComponent,
alwaysaiUserLoginPromptComponent
} from '../../components/user';
import { RequiredWithYesMessage, echo } from '../../util';
import { postTrackingDataToHubspot } from '../../infrastructure/post-tracking-data-to-hubspot';
import { CliAuthenticationClient } from '../../infrastructure';
export const userLogin = CliLeaf({
name: 'login',
description: 'Log in to the alwaysAI Cloud',
namedInputs: {
yes: yesCliInput,
email: alwaysaiUserEmailCliInput,
password: alwaysaiUserPasswordCliInput
},
async action(_, { yes, email, password }) {
if (yes) {
if (!email || !password) {
throw new CliUsageError(RequiredWithYesMessage('email', 'password'));
}
await alwaysaiUserLoginYesComponent({
alwaysaiUserEmail: email,
alwaysaiUserPassword: password
});
} else {
const authenticationClient = CliAuthenticationClient();
if (authenticationClient.isSignedIn()) {
await postTrackingDataToHubspot('activated_cli', true);
const { email } = await authenticationClient.getInfo();
echo(`Already logged in as ${chalk.bold(email)}`);
} else {
await alwaysaiUserLoginPromptComponent({
alwaysaiUserEmail: email,
alwaysaiUserPassword: password
});
await postTrackingDataToHubspot('activated_cli', true);
}
}
}
});