@dotenvx/dotenvx 0.45.0 → 1.0.0

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 (37) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/README.md +309 -226
  3. package/package.json +1 -1
  4. package/src/cli/actions/{convert.js → encrypt.js} +4 -4
  5. package/src/cli/actions/{genexample.js → ext/genexample.js} +4 -4
  6. package/src/cli/actions/{gitignore.js → ext/gitignore.js} +1 -1
  7. package/src/cli/actions/{hub → ext/hub}/login.js +4 -4
  8. package/src/cli/actions/{hub → ext/hub}/logout.js +4 -4
  9. package/src/cli/actions/{hub → ext/hub}/open.js +9 -9
  10. package/src/cli/actions/{hub → ext/hub}/pull.js +9 -9
  11. package/src/cli/actions/{hub → ext/hub}/push.js +12 -12
  12. package/src/cli/actions/{hub → ext/hub}/status.js +2 -2
  13. package/src/cli/actions/{hub → ext/hub}/token.js +2 -2
  14. package/src/cli/actions/{ls.js → ext/ls.js} +3 -3
  15. package/src/cli/actions/{prebuild.js → ext/prebuild.js} +2 -2
  16. package/src/cli/actions/{precommit.js → ext/precommit.js} +2 -2
  17. package/src/cli/actions/{scan.js → ext/scan.js} +1 -1
  18. package/src/cli/actions/{settings.js → ext/settings.js} +2 -2
  19. package/src/cli/actions/{vault → ext/vault}/decrypt.js +4 -4
  20. package/src/cli/actions/{vault → ext/vault}/encrypt.js +6 -6
  21. package/src/cli/actions/{vault → ext/vault}/migrate.js +7 -7
  22. package/src/cli/actions/{vault → ext/vault}/status.js +2 -2
  23. package/src/cli/actions/run.js +1 -1
  24. package/src/cli/actions/set.js +8 -2
  25. package/src/cli/commands/ext/hub.js +89 -0
  26. package/src/cli/commands/ext/vault.js +36 -0
  27. package/src/cli/commands/ext.js +58 -0
  28. package/src/cli/commands/hub.js +22 -22
  29. package/src/cli/commands/vault.js +31 -10
  30. package/src/cli/dotenvx.js +88 -61
  31. package/src/cli/examples.js +12 -12
  32. package/src/cli/pro.txt +22 -0
  33. package/src/lib/helpers/installPrecommitHook.js +5 -5
  34. package/src/lib/main.js +1 -7
  35. package/src/lib/services/precommit.js +1 -1
  36. package/src/lib/services/sets.js +1 -1
  37. package/src/lib/services/vaultEncrypt.js +2 -2
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.45.0",
2
+ "version": "1.0.0",
3
3
  "name": "@dotenvx/dotenvx",
4
4
  "description": "a better dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",
@@ -7,7 +7,7 @@ const isIgnoringDotenvKeys = require('../../lib/helpers/isIgnoringDotenvKeys')
7
7
 
8
8
  const ENCODING = 'utf8'
9
9
 
10
- async function convert () {
10
+ async function encrypt () {
11
11
  const options = this.opts()
12
12
  logger.debug(`options: ${JSON.stringify(options)}`)
13
13
 
@@ -16,14 +16,14 @@ async function convert () {
16
16
  processedEnvFiles,
17
17
  changedFilepaths,
18
18
  unchangedFilepaths
19
- } = main.convert(options.envFile)
19
+ } = main.encrypt(options.envFile)
20
20
 
21
21
  for (const processedEnvFile of processedEnvFiles) {
22
22
  logger.verbose(`encrypting ${processedEnvFile.envFilepath} (${processedEnvFile.filepath})`)
23
23
  if (processedEnvFile.error) {
24
24
  if (processedEnvFile.error.code === 'MISSING_ENV_FILE') {
25
25
  logger.warn(processedEnvFile.error)
26
- logger.help(`? add one with [echo "HELLO=World" > ${processedEnvFile.envFilepath}] and re-run [dotenvx convert]`)
26
+ logger.help(`? add one with [echo "HELLO=World" > ${processedEnvFile.envFilepath}] and re-run [dotenvx encrypt]`)
27
27
  } else {
28
28
  logger.warn(processedEnvFile.error)
29
29
  }
@@ -70,4 +70,4 @@ async function convert () {
70
70
  }
71
71
  }
72
72
 
73
- module.exports = convert
73
+ module.exports = encrypt
@@ -1,9 +1,9 @@
1
1
  const fs = require('fs')
2
- const main = require('./../../lib/main')
3
- const { logger } = require('./../../shared/logger')
4
- const createSpinner = require('./../../shared/createSpinner')
2
+ const main = require('./../../../lib/main')
3
+ const { logger } = require('./../../../shared/logger')
4
+ const createSpinner = require('./../../../shared/createSpinner')
5
5
 
6
- const sleep = require('./../../lib/helpers/sleep')
6
+ const sleep = require('./../../../lib/helpers/sleep')
7
7
 
8
8
  const spinner = createSpinner('generating')
9
9
 
@@ -1,7 +1,7 @@
1
1
  const fs = require('fs')
2
2
 
3
3
  const FORMATS = ['.env*', '!.env.vault']
4
- const { logger } = require('./../../shared/logger')
4
+ const { logger } = require('./../../../shared/logger')
5
5
 
6
6
  class Generic {
7
7
  constructor (filename, touchFile = false) {
@@ -1,11 +1,11 @@
1
1
  const open = require('open')
2
2
  const { request } = require('undici')
3
- const clipboardy = require('./../../../lib/helpers/clipboardy')
3
+ const clipboardy = require('./../../../../lib/helpers/clipboardy')
4
4
  const confirm = require('@inquirer/confirm').default
5
5
 
6
- const createSpinner = require('./../../../shared/createSpinner')
7
- const store = require('./../../../shared/store')
8
- const { logger } = require('./../../../shared/logger')
6
+ const createSpinner = require('./../../../../shared/createSpinner')
7
+ const store = require('./../../../../shared/store')
8
+ const { logger } = require('./../../../../shared/logger')
9
9
 
10
10
  const OAUTH_CLIENT_ID = 'oac_dotenvxcli'
11
11
 
@@ -1,10 +1,10 @@
1
1
  const openBrowser = require('open')
2
2
  const confirm = require('@inquirer/confirm').default
3
3
 
4
- const createSpinner = require('./../../../shared/createSpinner')
5
- const store = require('./../../../shared/store')
6
- const { logger } = require('./../../../shared/logger')
7
- const sleep = require('./../../../lib/helpers/sleep')
4
+ const createSpinner = require('./../../../../shared/createSpinner')
5
+ const store = require('./../../../../shared/store')
6
+ const { logger } = require('./../../../../shared/logger')
7
+ const sleep = require('./../../../../lib/helpers/sleep')
8
8
 
9
9
  const username = store.getUsername()
10
10
  const usernamePart = username ? ` [${username}]` : ''
@@ -1,15 +1,15 @@
1
1
  const openBrowser = require('open')
2
2
  const confirm = require('@inquirer/confirm').default
3
3
 
4
- const createSpinner = require('./../../../shared/createSpinner')
5
- const { logger } = require('./../../../shared/logger')
6
-
7
- const isGitRepo = require('./../../../lib/helpers/isGitRepo')
8
- const isGithub = require('./../../../lib/helpers/isGithub')
9
- const gitUrl = require('./../../../lib/helpers/gitUrl')
10
- const gitRoot = require('./../../../lib/helpers/gitRoot')
11
- const extractUsernameName = require('./../../../lib/helpers/extractUsernameName')
12
- const sleep = require('./../../../lib/helpers/sleep')
4
+ const createSpinner = require('./../../../../shared/createSpinner')
5
+ const { logger } = require('./../../../../shared/logger')
6
+
7
+ const isGitRepo = require('./../../../../lib/helpers/isGitRepo')
8
+ const isGithub = require('./../../../../lib/helpers/isGithub')
9
+ const gitUrl = require('./../../../../lib/helpers/gitUrl')
10
+ const gitRoot = require('./../../../../lib/helpers/gitRoot')
11
+ const extractUsernameName = require('./../../../../lib/helpers/extractUsernameName')
12
+ const sleep = require('./../../../../lib/helpers/sleep')
13
13
 
14
14
  const spinner = createSpinner('opening')
15
15
 
@@ -2,16 +2,16 @@ const fs = require('fs')
2
2
  const path = require('path')
3
3
  const { request } = require('undici')
4
4
 
5
- const store = require('./../../../shared/store')
6
- const { logger } = require('./../../../shared/logger')
7
- const createSpinner = require('./../../../shared/createSpinner')
5
+ const store = require('./../../../../shared/store')
6
+ const { logger } = require('./../../../../shared/logger')
7
+ const createSpinner = require('./../../../../shared/createSpinner')
8
8
 
9
- const isGitRepo = require('./../../../lib/helpers/isGitRepo')
10
- const isGithub = require('./../../../lib/helpers/isGithub')
11
- const gitUrl = require('./../../../lib/helpers/gitUrl')
12
- const gitRoot = require('./../../../lib/helpers/gitRoot')
13
- const extractUsernameName = require('./../../../lib/helpers/extractUsernameName')
14
- const sleep = require('./../../../lib/helpers/sleep')
9
+ const isGitRepo = require('./../../../../lib/helpers/isGitRepo')
10
+ const isGithub = require('./../../../../lib/helpers/isGithub')
11
+ const gitUrl = require('./../../../../lib/helpers/gitUrl')
12
+ const gitRoot = require('./../../../../lib/helpers/gitRoot')
13
+ const extractUsernameName = require('./../../../../lib/helpers/extractUsernameName')
14
+ const sleep = require('./../../../../lib/helpers/sleep')
15
15
 
16
16
  const spinner = createSpinner('pulling')
17
17
 
@@ -2,17 +2,17 @@ const fs = require('fs')
2
2
  const path = require('path')
3
3
  const { request } = require('undici')
4
4
 
5
- const store = require('./../../../shared/store')
6
- const { logger } = require('./../../../shared/logger')
7
- const createSpinner = require('./../../../shared/createSpinner')
8
-
9
- const isGitRepo = require('./../../../lib/helpers/isGitRepo')
10
- const isGithub = require('./../../../lib/helpers/isGithub')
11
- const gitUrl = require('./../../../lib/helpers/gitUrl')
12
- const gitRoot = require('./../../../lib/helpers/gitRoot')
13
- const extractUsernameName = require('./../../../lib/helpers/extractUsernameName')
14
- const sleep = require('./../../../lib/helpers/sleep')
15
- const forgivingDirectory = require('./../../../lib/helpers/forgivingDirectory')
5
+ const store = require('./../../../../shared/store')
6
+ const { logger } = require('./../../../../shared/logger')
7
+ const createSpinner = require('./../../../../shared/createSpinner')
8
+
9
+ const isGitRepo = require('./../../../../lib/helpers/isGitRepo')
10
+ const isGithub = require('./../../../../lib/helpers/isGithub')
11
+ const gitUrl = require('./../../../../lib/helpers/gitUrl')
12
+ const gitRoot = require('./../../../../lib/helpers/gitRoot')
13
+ const extractUsernameName = require('./../../../../lib/helpers/extractUsernameName')
14
+ const sleep = require('./../../../../lib/helpers/sleep')
15
+ const forgivingDirectory = require('./../../../../lib/helpers/forgivingDirectory')
16
16
 
17
17
  const spinner = createSpinner('pushing')
18
18
 
@@ -106,7 +106,7 @@ async function push (directory) {
106
106
  }
107
107
 
108
108
  spinner.succeed(`pushed [${usernameName}]`)
109
- logger.help2('ℹ run [dotenvx hub open] to view on hub')
109
+ logger.help2('ℹ run [dotenvx ext hub open] to view on hub')
110
110
  }
111
111
 
112
112
  module.exports = push
@@ -1,5 +1,5 @@
1
- const store = require('./../../../shared/store')
2
- const { logger } = require('./../../../shared/logger')
1
+ const store = require('./../../../../shared/store')
2
+ const { logger } = require('./../../../../shared/logger')
3
3
 
4
4
  async function status () {
5
5
  logger.info(`logged in to ${store.getHostname()} as ${store.getUsername()}`)
@@ -1,5 +1,5 @@
1
- const store = require('./../../../shared/store')
2
- const { logger } = require('./../../../shared/logger')
1
+ const store = require('./../../../../shared/store')
2
+ const { logger } = require('./../../../../shared/logger')
3
3
 
4
4
  async function token () {
5
5
  logger.debug(store.configPath())
@@ -1,9 +1,9 @@
1
1
  const treeify = require('object-treeify')
2
2
 
3
- const { logger } = require('./../../shared/logger')
3
+ const { logger } = require('./../../../shared/logger')
4
4
 
5
- const main = require('./../../lib/main')
6
- const ArrayToTree = require('./../../lib/helpers/arrayToTree')
5
+ const main = require('./../../../lib/main')
6
+ const ArrayToTree = require('./../../../lib/helpers/arrayToTree')
7
7
 
8
8
  function ls (directory) {
9
9
  // debug args
@@ -2,8 +2,8 @@ const fs = require('fs')
2
2
 
3
3
  const ignore = require('ignore')
4
4
 
5
- const { logger } = require('./../../shared/logger')
6
- const pluralize = require('./../../lib/helpers/pluralize')
5
+ const { logger } = require('./../../../shared/logger')
6
+ const pluralize = require('./../../../lib/helpers/pluralize')
7
7
 
8
8
  function prebuild () {
9
9
  const options = this.opts()
@@ -1,6 +1,6 @@
1
- const { logger } = require('./../../shared/logger')
1
+ const { logger } = require('./../../../shared/logger')
2
2
 
3
- const Precommit = require('./../../lib/services/precommit')
3
+ const Precommit = require('./../../../lib/services/precommit')
4
4
 
5
5
  function precommit () {
6
6
  const options = this.opts()
@@ -1,6 +1,6 @@
1
1
  const execa = require('execa')
2
2
 
3
- const { logger } = require('./../../shared/logger')
3
+ const { logger } = require('./../../../shared/logger')
4
4
 
5
5
  async function scan () {
6
6
  const options = this.opts()
@@ -1,6 +1,6 @@
1
- const { logger } = require('./../../shared/logger')
1
+ const { logger } = require('./../../../shared/logger')
2
2
 
3
- const main = require('./../../lib/main')
3
+ const main = require('./../../../lib/main')
4
4
 
5
5
  function settings (key = null) {
6
6
  logger.debug(`key: ${key}`)
@@ -1,10 +1,10 @@
1
1
  const fs = require('fs')
2
2
 
3
- const { logger } = require('./../../../shared/logger')
4
- const createSpinner = require('./../../../shared/createSpinner')
5
- const sleep = require('./../../../lib/helpers/sleep')
3
+ const { logger } = require('./../../../../shared/logger')
4
+ const createSpinner = require('./../../../../shared/createSpinner')
5
+ const sleep = require('./../../../../lib/helpers/sleep')
6
6
 
7
- const Decrypt = require('./../../../lib/services/decrypt')
7
+ const Decrypt = require('./../../../../lib/services/decrypt')
8
8
 
9
9
  const spinner = createSpinner('decrypting')
10
10
 
@@ -1,11 +1,11 @@
1
1
  const fs = require('fs')
2
2
  const path = require('path')
3
3
 
4
- const main = require('./../../../lib/main')
5
- const { logger } = require('./../../../shared/logger')
6
- const createSpinner = require('./../../../shared/createSpinner')
7
- const sleep = require('./../../../lib/helpers/sleep')
8
- const pluralize = require('./../../../lib/helpers/pluralize')
4
+ const main = require('./../../../../lib/main')
5
+ const { logger } = require('./../../../../shared/logger')
6
+ const createSpinner = require('./../../../../shared/createSpinner')
7
+ const sleep = require('./../../../../lib/helpers/sleep')
8
+ const pluralize = require('./../../../../lib/helpers/pluralize')
9
9
 
10
10
  const spinner = createSpinner('encrypting')
11
11
 
@@ -29,7 +29,7 @@ async function encrypt (directory) {
29
29
  existingVaults,
30
30
  addedDotenvFilenames,
31
31
  envFile
32
- } = main.encrypt(directory, options.envFile)
32
+ } = main.vaultEncrypt(directory, options.envFile)
33
33
 
34
34
  logger.verbose(`generating .env.keys from ${envFile}`)
35
35
  if (addedKeys.length > 0) {
@@ -1,4 +1,4 @@
1
- const { logger } = require('./../../../shared/logger')
1
+ const { logger } = require('./../../../../shared/logger')
2
2
 
3
3
  function migrate (directory) {
4
4
  // debug args
@@ -10,18 +10,18 @@ function migrate (directory) {
10
10
  try {
11
11
  logger.help2('To migrate your .env.vault file to encrypted .env file(s):')
12
12
  logger.help('')
13
- logger.help(' 1. Run [dotenvx vault decrypt]')
13
+ logger.help(' 1. Run [dotenvx ext vault decrypt]')
14
14
  logger.help(' 2. Run [ls -a .env*]')
15
15
  logger.help('')
16
- logger.help2('Lastly, convert each .env(.environment) file:')
16
+ logger.help2('Lastly, encrypt each .env(.environment) file:')
17
17
  logger.help('')
18
- logger.help(' 3. Run [dotenvx convert -f .env.production]')
18
+ logger.help(' 3. Run [dotenvx encrypt -f .env.production]')
19
19
  logger.help2('')
20
20
  logger.help2('For example:')
21
21
  logger.help2('')
22
- logger.help2(' $ dotenvx convert -f .env')
23
- logger.help2(' $ dotenvx convert -f .env.ci')
24
- logger.help2(' $ dotenvx convert -f .env.production')
22
+ logger.help2(' $ dotenvx encrypt -f .env')
23
+ logger.help2(' $ dotenvx encrypt -f .env.ci')
24
+ logger.help2(' $ dotenvx encrypt -f .env.production')
25
25
  logger.help2('')
26
26
  logger.help2('Afterward:')
27
27
  logger.help2('')
@@ -1,6 +1,6 @@
1
- const { logger } = require('./../../../shared/logger')
1
+ const { logger } = require('./../../../../shared/logger')
2
2
 
3
- const main = require('./../../../lib/main')
3
+ const main = require('./../../../../lib/main')
4
4
 
5
5
  function status (directory) {
6
6
  // debug args
@@ -115,7 +115,7 @@ async function run () {
115
115
 
116
116
  if (process.env.DOTENV_KEY) {
117
117
  logger.warn('DEPRECATION NOTICE: Setting DOTENV_KEY with .env.vault is deprecated.')
118
- logger.warn('DEPRECATION NOTICE: Run [dotenvx vault convert] for instructions on converting your .env.vault file to encrypted .env files (using public key encryption algorithm secp256k1)')
118
+ logger.warn('DEPRECATION NOTICE: Run [dotenvx ext vault migrate] for instructions on converting your .env.vault file to encrypted .env files (using public key encryption algorithm secp256k1)')
119
119
  logger.warn('DEPRECATION NOTICE: Read more at [https://github.com/dotenvx/dotenvx/blob/main/CHANGELOG.md#0380]')
120
120
  }
121
121
 
@@ -14,16 +14,22 @@ function set (key, value) {
14
14
  const options = this.opts()
15
15
  logger.debug(`options: ${JSON.stringify(options)}`)
16
16
 
17
+ // encrypt
18
+ let encrypt = true
19
+ if (options.plain) {
20
+ encrypt = false
21
+ }
22
+
17
23
  try {
18
24
  const {
19
25
  processedEnvFiles,
20
26
  changedFilepaths,
21
27
  unchangedFilepaths
22
- } = main.set(key, value, options.envFile, options.encrypt)
28
+ } = main.set(key, value, options.envFile, encrypt)
23
29
 
24
30
  let withEncryption = ''
25
31
 
26
- if (options.encrypt) {
32
+ if (encrypt) {
27
33
  withEncryption = ' with encryption'
28
34
  }
29
35
 
@@ -0,0 +1,89 @@
1
+ const { Command } = require('commander')
2
+
3
+ const store = require('./../../../shared/store')
4
+ const { logger } = require('./../../../shared/logger')
5
+
6
+ const hub = new Command('hub')
7
+
8
+ hub
9
+ .description('🚫 DEPRECATED: to be replaced by [dotenvx pro]')
10
+
11
+ const loginAction = require('./../../actions/ext/hub/login')
12
+ hub
13
+ .command('login')
14
+ .description('authenticate to dotenvx hub')
15
+ .option('-h, --hostname <url>', 'set hostname', store.getHostname())
16
+ .action(function (...args) {
17
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
18
+
19
+ loginAction.apply(this, args)
20
+ })
21
+
22
+ const pushAction = require('./../../actions/ext/hub/push')
23
+ hub
24
+ .command('push')
25
+ .description('push .env.keys to dotenvx hub')
26
+ .argument('[directory]', 'directory to push', '.')
27
+ .option('-h, --hostname <url>', 'set hostname', store.getHostname())
28
+ .action(function (...args) {
29
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
30
+
31
+ pushAction.apply(this, args)
32
+ })
33
+
34
+ const pullAction = require('./../../actions/ext/hub/pull')
35
+ hub
36
+ .command('pull')
37
+ .description('pull .env.keys from dotenvx hub')
38
+ .argument('[directory]', 'directory to pull', '.')
39
+ .option('-h, --hostname <url>', 'set hostname', store.getHostname())
40
+ .action(function (...args) {
41
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
42
+
43
+ pullAction.apply(this, args)
44
+ })
45
+
46
+ const openAction = require('./../../actions/ext/hub/open')
47
+ hub
48
+ .command('open')
49
+ .description('view repository on dotenvx hub')
50
+ .option('-h, --hostname <url>', 'set hostname', store.getHostname())
51
+ .action(function (...args) {
52
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
53
+
54
+ openAction.apply(this, args)
55
+ })
56
+
57
+ const tokenAction = require('./../../actions/ext/hub/token')
58
+ hub
59
+ .command('token')
60
+ .description('print the auth token dotenvx hub is configured to use')
61
+ .option('-h, --hostname <url>', 'set hostname', 'https://hub.dotenvx.com')
62
+ .action(function (...args) {
63
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
64
+
65
+ tokenAction.apply(this, args)
66
+ })
67
+
68
+ const statusAction = require('./../../actions/ext/hub/status')
69
+ hub
70
+ .command('status')
71
+ .description('display logged in user')
72
+ .action(function (...args) {
73
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
74
+
75
+ statusAction.apply(this, args)
76
+ })
77
+
78
+ const logoutAction = require('./../../actions/ext/hub/logout')
79
+ hub
80
+ .command('logout')
81
+ .description('log out this machine from dotenvx hub')
82
+ .option('-h, --hostname <url>', 'set hostname', store.getHostname())
83
+ .action(function (...args) {
84
+ logger.warn('DEPRECATION NOTICE: to be replaced by [dotenvx pro]')
85
+
86
+ logoutAction.apply(this, args)
87
+ })
88
+
89
+ module.exports = hub
@@ -0,0 +1,36 @@
1
+ const { Command } = require('commander')
2
+
3
+ const examples = require('./../../examples')
4
+
5
+ const vault = new Command('vault')
6
+
7
+ vault
8
+ .description('🔐 manage .env.vault files')
9
+
10
+ // dotenvx ext vault migrate
11
+ vault.command('migrate')
12
+ .description('instructions for migrating .env.vault to encrypted env file(s)')
13
+ .action(require('./../../actions/ext/vault/migrate'))
14
+
15
+ // dotenvx ext vault encrypt
16
+ vault.command('encrypt')
17
+ .description('encrypt .env.* to .env.vault')
18
+ .addHelpText('after', examples.vaultEncrypt)
19
+ .argument('[directory]', 'directory to encrypt', '.')
20
+ .option('-f, --env-file <paths...>', 'path(s) to your env file(s)')
21
+ .action(require('./../../actions/ext/vault/encrypt'))
22
+
23
+ // dotenvx ext vault decrypt
24
+ vault.command('decrypt')
25
+ .description('decrypt .env.vault to .env*')
26
+ .argument('[directory]', 'directory to decrypt', '.')
27
+ .option('-e, --environment <environments...>', 'environment(s) to decrypt')
28
+ .action(require('./../../actions/ext/vault/decrypt'))
29
+
30
+ // dotenvx ext vault status
31
+ vault.command('status')
32
+ .description('compare your .env* content(s) to your .env.vault decrypted content(s)')
33
+ .argument('[directory]', 'directory to check status against', '.')
34
+ .action(require('./../../actions/ext/vault/status'))
35
+
36
+ module.exports = vault
@@ -0,0 +1,58 @@
1
+ const { Command } = require('commander')
2
+
3
+ const examples = require('./../examples')
4
+
5
+ const ext = new Command('ext')
6
+
7
+ ext
8
+ .description('🔌 extensions')
9
+
10
+ // dotenvx ext ls
11
+ ext.command('ls')
12
+ .description('print all .env files in a tree structure')
13
+ .argument('[directory]', 'directory to list .env files from', '.')
14
+ .option('-f, --env-file <filenames...>', 'path(s) to your env file(s)', '.env*')
15
+ .action(require('./../actions/ext/ls'))
16
+
17
+ // dotenvx ext genexample
18
+ ext.command('genexample')
19
+ .description('generate .env.example')
20
+ .argument('[directory]', 'directory to generate from', '.')
21
+ .option('-f, --env-file <paths...>', 'path(s) to your env file(s)', '.env')
22
+ .action(require('./../actions/ext/genexample'))
23
+
24
+ // dotenvx ext gitignore
25
+ ext.command('gitignore')
26
+ .description('append to .gitignore file (and if existing, .dockerignore, .npmignore, and .vercelignore)')
27
+ .addHelpText('after', examples.gitignore)
28
+ .action(require('./../actions/ext/gitignore'))
29
+
30
+ // dotenvx ext prebuild
31
+ ext.command('prebuild')
32
+ .description('prevent including .env files in docker builds')
33
+ .addHelpText('after', examples.prebuild)
34
+ .action(require('./../actions/ext/prebuild'))
35
+
36
+ // dotenvx ext precommit
37
+ ext.command('precommit')
38
+ .description('prevent committing .env files to code')
39
+ .addHelpText('after', examples.precommit)
40
+ .option('-i, --install', 'install to .git/hooks/pre-commit')
41
+ .action(require('./../actions/ext/precommit'))
42
+
43
+ // dotenvx scan
44
+ ext.command('scan')
45
+ .description('scan for leaked secrets')
46
+ .action(require('./../actions/ext/scan'))
47
+
48
+ // dotenvx settings
49
+ ext.command('settings')
50
+ .description('print current dotenvx settings')
51
+ .argument('[key]', 'settings name')
52
+ .option('-pp, --pretty-print', 'pretty print output')
53
+ .action(require('./../actions/ext/settings'))
54
+
55
+ ext.addCommand(require('./../commands/ext/vault'))
56
+ ext.addCommand(require('./../commands/ext/hub'))
57
+
58
+ module.exports = ext