Skip to content

Commit

Permalink
feat: add option to trim a prefix from env variables (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
latonz authored and buehler committed Feb 14, 2019
1 parent b0b0658 commit b9d685d
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/kubernetes-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
} from 'yargs';

import { commands } from './commands';
import { envTrimPrefix } from './utils/env-trim-prefix';
import { KubernetesApi } from './utils/kubernetes-api';
import { Logger, LogLevel } from './utils/logger';

Expand All @@ -41,6 +42,12 @@ middleware((args: Arguments<any>) => {
Logger.level = args['logLevel'];
});

middleware((args: Arguments<any>) => {
if (args.trimEnvPrefix) {
envTrimPrefix(args.trimEnvPrefix);
}
});

middleware((args: Arguments<any>) => {
if (args.namespace) {
KubernetesApi.namespaceOverride = args.namespace;
Expand Down Expand Up @@ -80,6 +87,11 @@ option('log-level', {
choices: ['debug', 'info', 'warn', 'error'],
default: 'info',
});
option('trim-env-prefix', {
alias: 'p',
description: 'Prefix to trim from env variables',
default: '',
});

try {
const configPath = findUp.sync(['.kubyrc', '.kubyrc.json']);
Expand Down
1 change: 1 addition & 0 deletions src/root-arguments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ export interface RootArguments {
logLevel: LogLevel;
context?: string;
namespace?: string;
trimEnvPrefix?: string;
getYargsCompletions?: boolean;
}
6 changes: 6 additions & 0 deletions src/utils/env-trim-prefix.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export function envTrimPrefix(prefix: string): void {
Object.keys(process.env)
.filter(n => n.startsWith(prefix))
.map(n => n.substr(prefix.length))
.forEach(n => process.env[n] = process.env[prefix + n]);
}
43 changes: 43 additions & 0 deletions test/utils/env-trim-prefix.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { envTrimPrefix } from '../../src/utils/env-trim-prefix';

describe('util / envTrimPrefix', () => {
describe('envTrimPrefix()', () => {
beforeAll(() => {
process.env['STA_FOO'] = 'hello foo';
process.env['BAR'] = 'hello bar';
});

afterAll(() => {
delete process.env.STA_FOO;
delete process.env.FOO;
delete process.env.BAR;
});

it('should trim prefix from env vars', () => {
envTrimPrefix('STA_');

expect(process.env.STA_FOO).toBe('hello foo');
expect(process.env.FOO).toBe('hello foo');
expect(process.env.BAR).toBe('hello bar');
});

it('should trim prefix from env vars and override existing vars', () => {
process.env.FOO = 'hello existing foo';

envTrimPrefix('STA_');

expect(process.env.STA_FOO).toBe('hello foo');
expect(process.env.FOO).toBe('hello foo');
expect(process.env.BAR).toBe('hello bar');
});

it('should should not touch env vars with a nonsense prefix', () => {
envTrimPrefix('STAXX_');

expect(process.env.STA_FOO).toBe('hello foo');
expect(process.env.FOO).toBe('hello foo');
expect(process.env.BAR).toBe('hello bar');
});

});
});

0 comments on commit b9d685d

Please sign in to comment.