@dotenvx/dotenvx 1.60.2 → 1.61.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.
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
[Unreleased](https://github.com/dotenvx/dotenvx/compare/v1.
|
|
5
|
+
[Unreleased](https://github.com/dotenvx/dotenvx/compare/v1.61.0...main)
|
|
6
|
+
|
|
7
|
+
## [1.61.0](https://github.com/dotenvx/dotenvx/compare/v1.60.2...v1.61.0) (2026-04-08)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
* Add `login` and `logout` method that proxy to `dotenvx-ops login/logout` ([#780](https://github.com/dotenvx/dotenvx/pull/780))
|
|
12
|
+
* Note: dotenvx continues to make zero outgoing HTTP requests and includes no telemetry. Outgoing requests occur only if you explicitly install the [dotenvx-ops](https://dotenvx.com/ops) SDK or CLI.
|
|
6
13
|
|
|
7
14
|
## [1.60.2](https://github.com/dotenvx/dotenvx/compare/v1.60.1...v1.60.2) (2026-04-07)
|
|
8
15
|
|
package/package.json
CHANGED
package/src/cli/dotenvx.js
CHANGED
|
@@ -190,6 +190,23 @@ program.command('ls')
|
|
|
190
190
|
.option('-ef, --exclude-env-file <excludeFilenames...>', 'path(s) to exclude from your env file(s) (default: none)')
|
|
191
191
|
.action(lsAction)
|
|
192
192
|
|
|
193
|
+
// dotenvx login
|
|
194
|
+
program.command('login')
|
|
195
|
+
.description('log in to unlock ⛨ ARMORED KEYS ✦ BETA')
|
|
196
|
+
.action(() => {
|
|
197
|
+
const rawArgs = ['ops', 'login', ...process.argv.slice(3)]
|
|
198
|
+
executeDynamic(program, 'ops', rawArgs)
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
// dotenvx logout
|
|
202
|
+
program.command('logout', { hidden: true })
|
|
203
|
+
.description('optional: log out of your dotenvx account')
|
|
204
|
+
.allowUnknownOption()
|
|
205
|
+
.action(() => {
|
|
206
|
+
const rawArgs = ['ops', 'logout', ...process.argv.slice(3)]
|
|
207
|
+
executeDynamic(program, 'ops', rawArgs)
|
|
208
|
+
})
|
|
209
|
+
|
|
193
210
|
// dotenvx help
|
|
194
211
|
program.command('help [command]')
|
|
195
212
|
.description('display help for command')
|
|
@@ -18,7 +18,7 @@ function opsBanner (installCommand) {
|
|
|
18
18
|
'',
|
|
19
19
|
' ⛨ ARMORED KEYS: Harden your private keys.',
|
|
20
20
|
` ⮕ install [${installCommand}]`,
|
|
21
|
-
' ⮕
|
|
21
|
+
' ⮕ then run [dotenvx-ops login]'
|
|
22
22
|
]
|
|
23
23
|
|
|
24
24
|
const innerWidth = Math.max(67, ...lines.map((line) => line.length))
|
|
@@ -5,6 +5,37 @@ function removeOptionsHelpParts (lines) {
|
|
|
5
5
|
lines[i] = lines[i].replace(' [options]', '')
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
let commandsStart = -1
|
|
9
|
+
for (let i = 0; i < lines.length; i++) {
|
|
10
|
+
if (lines[i] === 'Commands:') {
|
|
11
|
+
commandsStart = i + 1
|
|
12
|
+
break
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (commandsStart !== -1) {
|
|
17
|
+
const commands = []
|
|
18
|
+
|
|
19
|
+
for (let i = commandsStart; i < lines.length; i++) {
|
|
20
|
+
const line = lines[i]
|
|
21
|
+
if (line === '' || line.endsWith(':')) {
|
|
22
|
+
break
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const match = line.match(/^(\s{2})(\S(?:.*\S)?)\s{2,}(\S.*)$/)
|
|
26
|
+
if (match) {
|
|
27
|
+
commands.push({ index: i, indent: match[1], command: match[2], description: match[3] })
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (commands.length > 0) {
|
|
32
|
+
const maxCommandLength = commands.reduce((max, item) => Math.max(max, item.command.length), 0)
|
|
33
|
+
for (const item of commands) {
|
|
34
|
+
lines[item.index] = `${item.indent}${item.command.padEnd(maxCommandLength + 2)}${item.description}`
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
8
39
|
return lines
|
|
9
40
|
}
|
|
10
41
|
|