@dotenvx/dotenvx 0.45.0 → 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.
- package/CHANGELOG.md +39 -1
- package/README.md +245 -150
- package/package.json +1 -2
- package/src/cli/actions/{convert.js → encrypt.js} +4 -4
- package/src/cli/actions/{genexample.js → ext/genexample.js} +4 -4
- package/src/cli/actions/{gitignore.js → ext/gitignore.js} +1 -1
- package/src/cli/actions/{hub → ext/hub}/login.js +4 -4
- package/src/cli/actions/{hub → ext/hub}/logout.js +4 -4
- package/src/cli/actions/{hub → ext/hub}/open.js +9 -9
- package/src/cli/actions/{hub → ext/hub}/pull.js +9 -9
- package/src/cli/actions/{hub → ext/hub}/push.js +12 -12
- package/src/cli/actions/{hub → ext/hub}/status.js +2 -2
- package/src/cli/actions/{hub → ext/hub}/token.js +2 -2
- package/src/cli/actions/{ls.js → ext/ls.js} +3 -3
- package/src/cli/actions/{prebuild.js → ext/prebuild.js} +2 -2
- package/src/cli/actions/{precommit.js → ext/precommit.js} +2 -2
- package/src/cli/actions/{scan.js → ext/scan.js} +1 -1
- package/src/cli/actions/{settings.js → ext/settings.js} +2 -2
- package/src/cli/actions/{vault → ext/vault}/decrypt.js +4 -4
- package/src/cli/actions/{vault → ext/vault}/encrypt.js +6 -6
- package/src/cli/actions/{vault → ext/vault}/migrate.js +7 -7
- package/src/cli/actions/{vault → ext/vault}/status.js +2 -2
- package/src/cli/actions/run.js +1 -1
- package/src/cli/actions/set.js +8 -2
- package/src/cli/commands/ext/hub.js +89 -0
- package/src/cli/commands/ext/vault.js +36 -0
- package/src/cli/commands/ext.js +58 -0
- package/src/cli/commands/hub.js +22 -22
- package/src/cli/commands/vault.js +31 -10
- package/src/cli/dotenvx.js +88 -61
- package/src/cli/examples.js +12 -12
- package/src/cli/pro.txt +22 -0
- package/src/lib/helpers/dotenvExpand.js +81 -0
- package/src/lib/helpers/installPrecommitHook.js +5 -5
- package/src/lib/helpers/parseDecryptEvalExpand.js +10 -9
- package/src/lib/main.js +1 -7
- package/src/lib/services/precommit.js +1 -1
- package/src/lib/services/run.js +4 -3
- package/src/lib/services/sets.js +1 -1
- package/src/lib/services/vaultEncrypt.js +2 -2
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "1.0.1",
|
|
3
3
|
"name": "@dotenvx/dotenvx",
|
|
4
4
|
"description": "a better dotenv–from the creator of `dotenv`",
|
|
5
5
|
"author": "@motdotla",
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"conf": "^10.2.0",
|
|
37
37
|
"diff": "^5.2.0",
|
|
38
38
|
"dotenv": "^16.4.5",
|
|
39
|
-
"dotenv-expand": "^11.0.6",
|
|
40
39
|
"eciesjs": "^0.4.6",
|
|
41
40
|
"execa": "^5.1.1",
|
|
42
41
|
"glob": "^10.3.10",
|
|
@@ -7,7 +7,7 @@ const isIgnoringDotenvKeys = require('../../lib/helpers/isIgnoringDotenvKeys')
|
|
|
7
7
|
|
|
8
8
|
const ENCODING = 'utf8'
|
|
9
9
|
|
|
10
|
-
async function
|
|
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.
|
|
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
|
|
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 =
|
|
73
|
+
module.exports = encrypt
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const fs = require('fs')
|
|
2
|
-
const main = require('
|
|
3
|
-
const { logger } = require('
|
|
4
|
-
const createSpinner = require('
|
|
2
|
+
const main = require('./../../../lib/main')
|
|
3
|
+
const { logger } = require('./../../../shared/logger')
|
|
4
|
+
const createSpinner = require('./../../../shared/createSpinner')
|
|
5
5
|
|
|
6
|
-
const sleep = require('
|
|
6
|
+
const sleep = require('./../../../lib/helpers/sleep')
|
|
7
7
|
|
|
8
8
|
const spinner = createSpinner('generating')
|
|
9
9
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const open = require('open')
|
|
2
2
|
const { request } = require('undici')
|
|
3
|
-
const clipboardy = require('
|
|
3
|
+
const clipboardy = require('./../../../../lib/helpers/clipboardy')
|
|
4
4
|
const confirm = require('@inquirer/confirm').default
|
|
5
5
|
|
|
6
|
-
const createSpinner = require('
|
|
7
|
-
const store = require('
|
|
8
|
-
const { logger } = require('
|
|
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('
|
|
5
|
-
const store = require('
|
|
6
|
-
const { logger } = require('
|
|
7
|
-
const sleep = require('
|
|
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('
|
|
5
|
-
const { logger } = require('
|
|
6
|
-
|
|
7
|
-
const isGitRepo = require('
|
|
8
|
-
const isGithub = require('
|
|
9
|
-
const gitUrl = require('
|
|
10
|
-
const gitRoot = require('
|
|
11
|
-
const extractUsernameName = require('
|
|
12
|
-
const sleep = require('
|
|
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('
|
|
6
|
-
const { logger } = require('
|
|
7
|
-
const createSpinner = require('
|
|
5
|
+
const store = require('./../../../../shared/store')
|
|
6
|
+
const { logger } = require('./../../../../shared/logger')
|
|
7
|
+
const createSpinner = require('./../../../../shared/createSpinner')
|
|
8
8
|
|
|
9
|
-
const isGitRepo = require('
|
|
10
|
-
const isGithub = require('
|
|
11
|
-
const gitUrl = require('
|
|
12
|
-
const gitRoot = require('
|
|
13
|
-
const extractUsernameName = require('
|
|
14
|
-
const sleep = require('
|
|
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('
|
|
6
|
-
const { logger } = require('
|
|
7
|
-
const createSpinner = require('
|
|
8
|
-
|
|
9
|
-
const isGitRepo = require('
|
|
10
|
-
const isGithub = require('
|
|
11
|
-
const gitUrl = require('
|
|
12
|
-
const gitRoot = require('
|
|
13
|
-
const extractUsernameName = require('
|
|
14
|
-
const sleep = require('
|
|
15
|
-
const forgivingDirectory = require('
|
|
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('
|
|
2
|
-
const { logger } = require('
|
|
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('
|
|
2
|
-
const { logger } = require('
|
|
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('
|
|
3
|
+
const { logger } = require('./../../../shared/logger')
|
|
4
4
|
|
|
5
|
-
const main = require('
|
|
6
|
-
const ArrayToTree = require('
|
|
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('
|
|
6
|
-
const pluralize = require('
|
|
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('
|
|
1
|
+
const { logger } = require('./../../../shared/logger')
|
|
2
2
|
|
|
3
|
-
const Precommit = require('
|
|
3
|
+
const Precommit = require('./../../../lib/services/precommit')
|
|
4
4
|
|
|
5
5
|
function precommit () {
|
|
6
6
|
const options = this.opts()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const { logger } = require('
|
|
1
|
+
const { logger } = require('./../../../shared/logger')
|
|
2
2
|
|
|
3
|
-
const main = require('
|
|
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('
|
|
4
|
-
const createSpinner = require('
|
|
5
|
-
const sleep = require('
|
|
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('
|
|
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('
|
|
5
|
-
const { logger } = require('
|
|
6
|
-
const createSpinner = require('
|
|
7
|
-
const sleep = require('
|
|
8
|
-
const pluralize = require('
|
|
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.
|
|
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('
|
|
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,
|
|
16
|
+
logger.help2('Lastly, encrypt each .env(.environment) file:')
|
|
17
17
|
logger.help('')
|
|
18
|
-
logger.help(' 3. Run [dotenvx
|
|
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
|
|
23
|
-
logger.help2(' $ dotenvx
|
|
24
|
-
logger.help2(' $ dotenvx
|
|
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('')
|
package/src/cli/actions/run.js
CHANGED
|
@@ -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
|
|
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
|
|
package/src/cli/actions/set.js
CHANGED
|
@@ -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,
|
|
28
|
+
} = main.set(key, value, options.envFile, encrypt)
|
|
23
29
|
|
|
24
30
|
let withEncryption = ''
|
|
25
31
|
|
|
26
|
-
if (
|
|
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
|