diff --git a/CHANGELOG.md b/CHANGELOG.md index d8f6d49..f590f55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,13 @@ - **Upgrade**: Upgraded dependency `commander` to `5.x` - **Upgrade**: Upgraded devDependencies `ts-standard`, `sinon` +- **Feature**: support both `$var` and `${var}` when expanding vars ## 10.1.0 - **Feature**: Added support for expanding vars using the `-x` flag. Note: only supports `$var` syntax -- **Feature**: Added support for `--silent` flag that ignores env-cmd errors and missing files and +- **Feature**: Added support for `--silent` flag that ignores env-cmd errors and missing files and only terminates on caught signals - **Feature**: Added a new `--verbose` flag that prints additional debugging info to `console.info` - **Upgrade**: Upgraded dependency `commander` to `4.x` diff --git a/package.json b/package.json index 27420e7..6b9c8aa 100644 --- a/package.json +++ b/package.json @@ -38,11 +38,12 @@ ], "author": "Todd Bluhm", "contributors": [ + "Anton Versal ", "Eric Lanehart ", "Jon Scheiding ", - "serapath (Alexander Praetorius) ", "Kyle Hensel ", - "Anton Versal " + "Nicholas Krul ", + "serapath (Alexander Praetorius) " ], "license": "MIT", "bugs": { diff --git a/src/expand-envs.ts b/src/expand-envs.ts index 60b66cf..565665b 100644 --- a/src/expand-envs.ts +++ b/src/expand-envs.ts @@ -1,13 +1,12 @@ import type { Environment } from './types.ts' /** - * expandEnvs Replaces $var in args and command with environment variables - * if the environment variable doesn't exist, it leaves it as is. + * expandEnvs Replaces $var and ${var} in args and command with environment variables + * the environment variable doesn't exist, it leaves it as is. */ -export function expandEnvs(str: string, envs: Environment): string { - return str.replace(/(? { - const varValue = envs[varName.slice(1)] - // const test = 42; +export function expandEnvs (str: string, envs: Environment): string { + return str.replace(/(? { + const varValue = envs[varName.startsWith('${') ? varName.slice(2, varName.length - 1) : varName.slice(1)] return varValue ?? varName }) } diff --git a/test/expand-envs.spec.ts b/test/expand-envs.spec.ts index fb9c605..fadde2b 100644 --- a/test/expand-envs.spec.ts +++ b/test/expand-envs.spec.ts @@ -11,8 +11,8 @@ describe('expandEnvs', (): void => { THANKSFORALLTHEFISH: 42, BRINGATOWEL: true, } - const args = ['notvar', '$dollar', '\\$notvar', '-4', '$PING', '$IP1', '\\$IP1', '$NONEXIST'] - const argsExpanded = ['notvar', 'money', '\\$notvar', '-4', 'PONG', '127.0.0.1', '\\$IP1', '$NONEXIST'] + const args = ['notvar', '$dollar', '\\$notvar', '-4', '$PING', '$IP1', '\\$IP1', '$NONEXIST', '${PING}', '${NONEXIST}'] /* eslint-disable-line */ + const argsExpanded = ['notvar', 'money', '\\$notvar', '-4', 'PONG', '127.0.0.1', '\\$IP1', '$NONEXIST', 'PONG', '${NONEXIST}'] /* eslint-disable-line */ it('should replace environment variables in args', (): void => { const res = args.map(arg => expandEnvs(arg, envs))