mirror of
https://github.com/morten-olsen/with-ssm.git
synced 2026-02-08 00:46:23 +01:00
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import yargs from 'yargs/yargs';
|
|
import { hideBin } from 'yargs/helpers';
|
|
|
|
import { exec } from './utils/exec.js';
|
|
import { getEnv } from './utils/env.js';
|
|
import { replaceParams } from './utils/ssm.js';
|
|
|
|
const argv = await yargs(hideBin(process.argv))
|
|
.usage('Usage: $0 [options] -- <command>')
|
|
.option('region', {
|
|
type: 'string',
|
|
description: 'The AWS region to use for SSM.',
|
|
})
|
|
.option('profile', {
|
|
type: 'string',
|
|
description: 'The AWS profile to use from your credentials file.',
|
|
})
|
|
.option('file', {
|
|
alias: 'f',
|
|
type: 'string',
|
|
description: 'The file to use for environment variables. (multiple files can be specified)',
|
|
default: ['.env.with-ssm', '.env'],
|
|
})
|
|
.demandCommand(1, 'Error: You must provide a command to execute after --')
|
|
.alias('h', 'help')
|
|
.epilogue('For more information, check the documentation.')
|
|
.parse();
|
|
|
|
const command = argv._[0] as string;
|
|
const commandArgs = argv._.slice(1).map(String);
|
|
|
|
if (!command) {
|
|
console.error('No command provided');
|
|
process.exit(1);
|
|
}
|
|
|
|
const files = argv.file && Array.isArray(argv.file) ? argv.file : [argv.file];
|
|
const hostEnv = await getEnv(files);
|
|
const env = await replaceParams(hostEnv, {
|
|
region: argv.region,
|
|
profile: argv.profile,
|
|
});
|
|
|
|
exec({
|
|
command,
|
|
env,
|
|
args: commandArgs,
|
|
});
|