Skip to content

Commit

Permalink
feat(utils/env-manager): adds purePaths; updates initial; exports ini…
Browse files Browse the repository at this point in the history
…tialized manager as default
  • Loading branch information
rafamel committed May 6, 2019
1 parent eda621b commit 4c27842
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions src/utils/env-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,28 @@ import pathKey from 'path-key';
import alter from 'manage-path';
import { IOfType } from '~/types';

export default class EnvManager {
private key: string;
export class EnvManager {
public path: string;
private env: IOfType<string | undefined>;
private initial: IOfType<string | undefined>;
private assigned: IOfType<string | undefined>;
public constructor(env: IOfType<string | undefined>) {
this.key = pathKey({ env });
this.path = pathKey({ env });
this.env = env;
this.initial = Object.assign({}, env);
this.assigned = {};
}
public assign(env: IOfType<string | undefined>): void {
Object.assign(this.env, env);
Object.assign(this.assigned, env);
public get purePaths(): string | undefined {
return this.initial[this.path];
}
public addPaths(paths: string[]): void {
const env = { [this.key]: this.env[this.key] };
const env = { PATH: this.env[this.path] };
alter(env).unshift(paths);
this.assign(env);
this.assign({ [this.path]: env.PATH });
}
public assign(env: IOfType<string | undefined>): void {
Object.assign(this.env, env);
Object.assign(this.assigned, env);
}
public restore(): void {
const toRestore = Object.keys(this.assigned).reduce(
Expand All @@ -32,6 +35,9 @@ export default class EnvManager {
);

Object.assign(this.env, toRestore);
this.initial = Object.assign({}, this.env);
this.assigned = {};
}
}

export default new EnvManager(process.env);

0 comments on commit 4c27842

Please sign in to comment.