vvauth 0.3.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +23 -14
  2. package/package.json +4 -4
package/index.js CHANGED
@@ -6,6 +6,7 @@ const fs = require('fs');
6
6
  const path = require('path');
7
7
  const url = require('url');
8
8
  const {spawn} = require('child_process');
9
+ const passthru = require('nyks/child_process/passthru');
9
10
 
10
11
  const {parse} = require('yaml');
11
12
  const semver = require('semver');
@@ -18,6 +19,8 @@ const request = require('nyks/http/request');
18
19
  const drain = require('nyks/stream/drain');
19
20
  const replaceEnv = require('nyks/string/replaceEnv');
20
21
  const promiser = require('nyks/function/promiser');
22
+ const {args} = require('nyks/process/parseArgs')();
23
+
21
24
 
22
25
  const {OpenSSHAgent} = require('ssh2/lib/agent');
23
26
  const debug = require('debug');
@@ -30,11 +33,11 @@ const logger = {
30
33
 
31
34
 
32
35
  const VAUTH_RC = [process.env.VAUTHRC, path.join(process.cwd(), ".vauthrc"), path.join(os.homedir(), ".vauthrc")];
33
- const FUNCTION_NAME = "vauth";
34
- const FUNCTION_DECL = "function vauth() { source <(/usr/bin/env vvauth --ir://raw --source --ir://run=$1 \"${@:2}\"); }";
36
+ const FUNCTION_NAME = "venv";
37
+ const FUNCTION_DECL = `function ${FUNCTION_NAME}() { source <(/usr/bin/env vauth env --source); }`;
35
38
 
36
39
  class vvauth {
37
- constructor(rc = null) {
40
+ constructor() {
38
41
 
39
42
 
40
43
  let {dependencies = {}} = require(path.resolve('package.json'));
@@ -46,14 +49,11 @@ class vvauth {
46
49
  }
47
50
 
48
51
  this.rc = {};
49
- if(rc) {
50
- this.rc = rc;
51
- } else {
52
- let vauth_rc = VAUTH_RC.filter(path => path && fs.existsSync(path))[0];
53
- if(vauth_rc) {
54
- let body = fs.readFileSync(vauth_rc, 'utf8');
55
- this.rc = walk(parse(body), v => replaceEnv(v, {env : process.env}));
56
- }
52
+
53
+ let vauth_rc = VAUTH_RC.filter(path => path && fs.existsSync(path))[0];
54
+ if(vauth_rc) {
55
+ let body = fs.readFileSync(vauth_rc, 'utf8');
56
+ this.rc = walk(parse(body), v => replaceEnv(v, {env : process.env}));
57
57
  }
58
58
 
59
59
  this.VAULT_ADDR = this.rc.vault_addr;
@@ -65,6 +65,13 @@ class vvauth {
65
65
  console.error("vauth bound to '%s'", this.VAULT_ADDR);
66
66
  }
67
67
 
68
+ async run() {
69
+ let args = process.argv.slice(process.argv.indexOf("run") + 1);
70
+ let env = await this.env(), cmd = args.shift();
71
+ await passthru(cmd, args, {env : {...process.env, ...env}}).catch((err) => (console.error("run failure : ", err), process.exit(1)));
72
+ process.exit();
73
+ }
74
+
68
75
  async connect() {
69
76
  let VAULT_TOKEN, {rc : {ssh_auth, jwt_auth}} = this;
70
77
 
@@ -162,6 +169,7 @@ class vvauth {
162
169
  this._publish_env(env);
163
170
  process.exit();
164
171
  }
172
+ return env;
165
173
  }
166
174
 
167
175
 
@@ -270,8 +278,9 @@ const shellEscape = (arg) => {
270
278
  };
271
279
 
272
280
  //ensure module is called directly, i.e. not required
273
- if(module.parent === null)
274
- require('cnyks/lib/bundle')(vvauth);
275
-
281
+ if(module.parent === null) {
282
+ let cmd = args.shift();
283
+ require('cnyks/lib/bundle')(vvauth, null, cmd ? [`--ir://run=${cmd}`, '--ir://raw'] : []);
284
+ }
276
285
 
277
286
  module.exports = vvauth;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "vvauth",
3
- "version": "0.3.5",
3
+ "version": "1.0.1",
4
4
  "description": "Vault Auth helper",
5
5
  "main": "index.js",
6
6
  "bin": {
7
- "vvauth": "./index.js"
7
+ "vauth": "./index.js"
8
8
  },
9
9
  "scripts": {
10
10
  "eslint": "eslint ."
@@ -12,9 +12,9 @@
12
12
  "author": "",
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
- "cnyks": "^3.0.6",
15
+ "cnyks": "^3.2.1",
16
16
  "debug": "^4.3.4",
17
- "mout": "^1.0.0",
17
+ "mout": "^1.2.4",
18
18
  "nyks": "^6.15.0",
19
19
  "semver": "^7.5.4",
20
20
  "ssh2": "^1.16.0",