import { CliBranch, CliLeaf, CliStringInput } from '@alwaysai/alwayscli'; import { appPackageComponent } from '../../components/app'; import { findOrWriteDockerComposeFileComponent, writeStandaloneDockerfileComponent } from '../../components/docker'; import { getDockerComposeCmdForApp, getTargetHardwareType } from '../../core/app'; export const dockerCompose = CliLeaf({ name: 'docker-compose', description: 'Generate Docker compose file for this project.', hidden: false, async action() { await writeStandaloneDockerfileComponent(); await findOrWriteDockerComposeFileComponent({ yes: true, cmd: await getDockerComposeCmdForApp({ targetHardware: await getTargetHardwareType({}) }) }); } }); export const docker = CliLeaf({ name: 'docker', description: `Package this application as a Docker image`, positionalInput: CliStringInput({ description: 'Tag for application Docker image. Format: /:', placeholder: '', required: true }), async action(dockerTag) { await appPackageComponent({ yes: true, dockerImageTag: dockerTag }); } }); export const appGenerateCliBranch = CliBranch({ name: 'generate', description: `Generate application files.`, subcommands: [dockerCompose, docker] });