mirror of
https://github.com/morten-olsen/with-ssm.git
synced 2026-02-08 00:46:23 +01:00
feat: use bundled version
This commit is contained in:
@@ -1 +0,0 @@
|
||||
PASSWORD=SSM:/test/hfd/rds/DB_USER
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
import '../dist/start.js';
|
||||
import '../dist/index.js';
|
||||
|
||||
15
package.json
15
package.json
@@ -6,8 +6,8 @@
|
||||
"license": "GPL-3.0",
|
||||
"scripts": {
|
||||
"test:lint": "eslint",
|
||||
"build": "tsc --build",
|
||||
"build:dev": "tsc --build --watch",
|
||||
"build": "ncc build src/start.ts -o dist",
|
||||
"build:dev": "ncc build src/start.ts -o dist --watch",
|
||||
"test:unit": "vitest --run --passWithNoTests",
|
||||
"test": "pnpm run \"/^test:/\""
|
||||
},
|
||||
@@ -21,6 +21,7 @@
|
||||
"@pnpm/find-workspace-packages": "6.0.9",
|
||||
"@types/node": "24.2.0",
|
||||
"@types/yargs": "^17.0.33",
|
||||
"@vercel/ncc": "^0.38.3",
|
||||
"@vitest/coverage-v8": "3.2.4",
|
||||
"eslint": "9.32.0",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
@@ -29,14 +30,12 @@
|
||||
"prettier": "3.6.2",
|
||||
"typescript": "5.9.2",
|
||||
"typescript-eslint": "8.39.0",
|
||||
"vitest": "3.2.4"
|
||||
},
|
||||
"name": "@morten-olsen/with-ssm",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"vitest": "3.2.4",
|
||||
"@aws-sdk/client-ssm": "^3.859.0",
|
||||
"dotenv": "^17.2.1",
|
||||
"execa": "^9.6.0",
|
||||
"yargs": "^18.0.0"
|
||||
}
|
||||
},
|
||||
"name": "@morten-olsen/with-ssm",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
|
||||
9
pnpm-lock.yaml
generated
9
pnpm-lock.yaml
generated
@@ -36,6 +36,9 @@ importers:
|
||||
'@types/yargs':
|
||||
specifier: ^17.0.33
|
||||
version: 17.0.33
|
||||
'@vercel/ncc':
|
||||
specifier: ^0.38.3
|
||||
version: 0.38.3
|
||||
'@vitest/coverage-v8':
|
||||
specifier: 3.2.4
|
||||
version: 3.2.4(vitest@3.2.4(@types/node@24.2.0))
|
||||
@@ -975,6 +978,10 @@ packages:
|
||||
resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@vercel/ncc@0.38.3':
|
||||
resolution: {integrity: sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==}
|
||||
hasBin: true
|
||||
|
||||
'@vitest/coverage-v8@3.2.4':
|
||||
resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==}
|
||||
peerDependencies:
|
||||
@@ -3916,6 +3923,8 @@ snapshots:
|
||||
'@typescript-eslint/types': 8.39.0
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
'@vercel/ncc@0.38.3': {}
|
||||
|
||||
'@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.2.0))':
|
||||
dependencies:
|
||||
'@ampproject/remapping': 2.3.0
|
||||
|
||||
75
src/start.ts
75
src/start.ts
@@ -5,41 +5,48 @@ 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', '.env.with-ssm'],
|
||||
})
|
||||
.demandCommand(1, 'Error: You must provide a command to execute after --')
|
||||
.alias('h', 'help')
|
||||
.epilogue('For more information, check the documentation.')
|
||||
.parse();
|
||||
const main = async () => {
|
||||
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', '.env.with-ssm'],
|
||||
})
|
||||
.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);
|
||||
const command = argv._[0] as string;
|
||||
const commandArgs = argv._.slice(1).map(String);
|
||||
|
||||
if (!command) {
|
||||
console.error('No command provided');
|
||||
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);
|
||||
|
||||
exec({
|
||||
command,
|
||||
env,
|
||||
args: commandArgs,
|
||||
});
|
||||
};
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err);
|
||||
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);
|
||||
|
||||
exec({
|
||||
command,
|
||||
env,
|
||||
args: commandArgs,
|
||||
});
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"resolveJsonModule": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"skipLibCheck": true,
|
||||
"noEmit": true,
|
||||
"outDir": "dist",
|
||||
"jsx": "react-jsx",
|
||||
"isolatedModules": true,
|
||||
|
||||
Reference in New Issue
Block a user