alwaysai
Version:
The alwaysAI command-line interface (CLI)
66 lines (55 loc) • 2.13 kB
text/typescript
import ora = require('ora');
import { targetProtocolPromptedInputComponent } from './target-protocol-input-component';
import { TargetProtocol } from '../util/target-protocol';
import { checkForDockerComponent } from './check-for-docker-component';
import { targetConfigFile, TARGET_CONFIG_FILE_NAME } from '../util/target-config-file';
import { targetHostnameInputComponent } from './target-hostname-input-component';
import { targetPathInputComponent } from './target-path-input-component';
import { writeAppConfigFileComponent } from './write-app-config-file-component';
import { writeAppPyFileComponent } from './write-app-py-file-component';
import { checkUserIsLoggedInComponent } from './check-user-is-logged-in-component';
export async function appConfigureComponent(props: {
yes: boolean;
targetProtocol: TargetProtocol;
targetHostname: string;
targetPath: string;
}) {
const { yes } = props;
await checkUserIsLoggedInComponent({ yes });
await writeAppConfigFileComponent();
await writeAppPyFileComponent();
const targetProtocol = yes
? props.targetProtocol
: await targetProtocolPromptedInputComponent({
targetProtocol: props.targetProtocol,
});
switch (targetProtocol) {
case 'docker:':
await checkForDockerComponent();
targetConfigFile.write({ protocol: targetProtocol });
ora(`Write ${TARGET_CONFIG_FILE_NAME}`).succeed();
break;
case 'ssh+docker:':
const targetHostname = yes
? props.targetHostname
: await targetHostnameInputComponent({
yes,
targetHostname: props.targetHostname,
});
await checkForDockerComponent({ targetHostname });
const targetPath = await targetPathInputComponent({
yes,
targetHostname,
targetPath: props.targetPath,
});
targetConfigFile.write({
protocol: targetProtocol,
hostname: targetHostname,
path: targetPath,
});
ora(`Write ${TARGET_CONFIG_FILE_NAME}`).succeed();
break;
default:
throw new Error(`Unexpected target protocol ${targetProtocol}`);
}
}