feat: allow bracers when processing vars

This commit is contained in:
Nicholas Krul 2021-03-10 13:57:50 +11:00 committed by Todd Bluhm
parent 6eacc1afcf
commit e5d3a27a54
No known key found for this signature in database
GPG Key ID: 9CF312607477B8AB
4 changed files with 12 additions and 11 deletions

View File

@ -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`

View File

@ -38,11 +38,12 @@
],
"author": "Todd Bluhm",
"contributors": [
"Anton Versal <ant.ver@gmail.com>",
"Eric Lanehart <eric@pushred.co>",
"Jon Scheiding <jonscheiding@gmail.com>",
"serapath (Alexander Praetorius) <dev@serapath.de>",
"Kyle Hensel <me@kyle.kiwi>",
"Anton Versal <ant.ver@gmail.com>"
"Nicholas Krul <nicholas.krul@gmail.com>",
"serapath (Alexander Praetorius) <dev@serapath.de>"
],
"license": "MIT",
"bugs": {

View File

@ -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(/(?<!\\)\$[a-zA-Z0-9_]+/g, (varName) => {
const varValue = envs[varName.slice(1)]
// const test = 42;
export function expandEnvs (str: string, envs: Environment): string {
return str.replace(/(?<!\\)\$\{?[a-zA-Z0-9_]+\}?/g, (varName) => {
const varValue = envs[varName.startsWith('${') ? varName.slice(2, varName.length - 1) : varName.slice(1)]
return varValue ?? varName
})
}

View File

@ -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))