@uluops/cli 0.2.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/LICENSE +21 -0
- package/README.md +825 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +93 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analytics.d.ts +6 -0
- package/dist/commands/analytics.d.ts.map +1 -0
- package/dist/commands/analytics.js +445 -0
- package/dist/commands/analytics.js.map +1 -0
- package/dist/commands/auth.d.ts +6 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +496 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/completion.d.ts +7 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +188 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +279 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/definitions.d.ts +6 -0
- package/dist/commands/definitions.d.ts.map +1 -0
- package/dist/commands/definitions.js +229 -0
- package/dist/commands/definitions.js.map +1 -0
- package/dist/commands/deps.d.ts +6 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +87 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/exec.d.ts +6 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +334 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/executions.d.ts +6 -0
- package/dist/commands/executions.d.ts.map +1 -0
- package/dist/commands/executions.js +63 -0
- package/dist/commands/executions.js.map +1 -0
- package/dist/commands/forks.d.ts +6 -0
- package/dist/commands/forks.d.ts.map +1 -0
- package/dist/commands/forks.js +145 -0
- package/dist/commands/forks.js.map +1 -0
- package/dist/commands/issues.d.ts +6 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +458 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/commands/models.d.ts +6 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +156 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/projects.d.ts +6 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +262 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/render.d.ts +6 -0
- package/dist/commands/render.d.ts.map +1 -0
- package/dist/commands/render.js +59 -0
- package/dist/commands/render.js.map +1 -0
- package/dist/commands/runs.d.ts +6 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +442 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/taxonomy.d.ts +6 -0
- package/dist/commands/taxonomy.d.ts.map +1 -0
- package/dist/commands/taxonomy.js +45 -0
- package/dist/commands/taxonomy.js.map +1 -0
- package/dist/commands/translation.d.ts +6 -0
- package/dist/commands/translation.d.ts.map +1 -0
- package/dist/commands/translation.js +85 -0
- package/dist/commands/translation.js.map +1 -0
- package/dist/commands/versions.d.ts +6 -0
- package/dist/commands/versions.d.ts.map +1 -0
- package/dist/commands/versions.js +61 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/context.d.ts +85 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +386 -0
- package/dist/context.js.map +1 -0
- package/dist/formatters/core.d.ts +31 -0
- package/dist/formatters/core.d.ts.map +1 -0
- package/dist/formatters/core.js +176 -0
- package/dist/formatters/core.js.map +1 -0
- package/dist/formatters/ops.d.ts +43 -0
- package/dist/formatters/ops.d.ts.map +1 -0
- package/dist/formatters/ops.js +112 -0
- package/dist/formatters/ops.js.map +1 -0
- package/dist/formatters/registry.d.ts +41 -0
- package/dist/formatters/registry.d.ts.map +1 -0
- package/dist/formatters/registry.js +167 -0
- package/dist/formatters/registry.js.map +1 -0
- package/dist/formatters/table.d.ts +18 -0
- package/dist/formatters/table.d.ts.map +1 -0
- package/dist/formatters/table.js +76 -0
- package/dist/formatters/table.js.map +1 -0
- package/dist/utils.d.ts +99 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +201 -0
- package/dist/utils.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk a Commander program tree and extract all command paths
|
|
3
|
+
*/
|
|
4
|
+
function getCommandTree(cmd, prefix = '') {
|
|
5
|
+
const results = [];
|
|
6
|
+
for (const sub of cmd.commands) {
|
|
7
|
+
const fullPath = prefix ? `${prefix} ${sub.name()}` : sub.name();
|
|
8
|
+
const childNames = sub.commands.map((c) => c.name());
|
|
9
|
+
results.push({
|
|
10
|
+
path: fullPath,
|
|
11
|
+
description: sub.description() || '',
|
|
12
|
+
subcommands: childNames,
|
|
13
|
+
});
|
|
14
|
+
// Recurse into subcommands
|
|
15
|
+
results.push(...getCommandTree(sub, fullPath));
|
|
16
|
+
}
|
|
17
|
+
return results;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate bash completion script
|
|
21
|
+
*/
|
|
22
|
+
function generateBashCompletion(program) {
|
|
23
|
+
const tree = getCommandTree(program);
|
|
24
|
+
const topLevel = program.commands.map((c) => c.name()).join(' ');
|
|
25
|
+
// Build a case statement for each command path
|
|
26
|
+
const cases = [];
|
|
27
|
+
for (const entry of tree) {
|
|
28
|
+
if (entry.subcommands.length > 0) {
|
|
29
|
+
cases.push(` ${entry.path}) COMPREPLY=($(compgen -W "${entry.subcommands.join(' ')}" -- "$cur")) ;;`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return `# Bash completion for ulu CLI
|
|
33
|
+
# Add to ~/.bashrc: eval "$(ulu completion bash)"
|
|
34
|
+
_ulu_completions() {
|
|
35
|
+
local cur prev words cword
|
|
36
|
+
_init_completion || return
|
|
37
|
+
|
|
38
|
+
# Build the command path from words
|
|
39
|
+
local cmd_path=""
|
|
40
|
+
local i
|
|
41
|
+
for (( i=1; i < cword; i++ )); do
|
|
42
|
+
case "\${words[i]}" in
|
|
43
|
+
-*) continue ;;
|
|
44
|
+
*) cmd_path="\${cmd_path:+$cmd_path }\${words[i]}" ;;
|
|
45
|
+
esac
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
case "$cmd_path" in
|
|
49
|
+
${cases.join('\n')}
|
|
50
|
+
"") COMPREPLY=($(compgen -W "${topLevel}" -- "$cur")) ;;
|
|
51
|
+
*) COMPREPLY=() ;;
|
|
52
|
+
esac
|
|
53
|
+
|
|
54
|
+
return 0
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
complete -o default -F _ulu_completions ulu
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generate zsh completion script
|
|
62
|
+
*/
|
|
63
|
+
function generateZshCompletion(program) {
|
|
64
|
+
const tree = getCommandTree(program);
|
|
65
|
+
const topLevel = program.commands.map((c) => `'${c.name()}:${(c.description() || '').replace(/'/g, "''")}'`).join('\n ');
|
|
66
|
+
// Build subcmd functions
|
|
67
|
+
const functions = [];
|
|
68
|
+
for (const entry of tree) {
|
|
69
|
+
if (entry.subcommands.length > 0) {
|
|
70
|
+
const fnName = `_ulu_${entry.path.replace(/ /g, '_')}`;
|
|
71
|
+
const subTree = tree.filter((t) => {
|
|
72
|
+
const parent = entry.path;
|
|
73
|
+
return t.path.startsWith(parent + ' ') && !t.path.slice(parent.length + 1).includes(' ');
|
|
74
|
+
});
|
|
75
|
+
const subArgs = subTree.map((s) => {
|
|
76
|
+
const name = s.path.split(' ').pop() ?? s.path;
|
|
77
|
+
return `'${name}:${s.description.replace(/'/g, "''")}'`;
|
|
78
|
+
}).join('\n ');
|
|
79
|
+
functions.push(`${fnName}() {
|
|
80
|
+
local -a subcmds
|
|
81
|
+
subcmds=(
|
|
82
|
+
${subArgs}
|
|
83
|
+
)
|
|
84
|
+
_describe 'subcommand' subcmds
|
|
85
|
+
}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return `#compdef ulu
|
|
89
|
+
# Zsh completion for ulu CLI
|
|
90
|
+
# Add to ~/.zshrc: eval "$(ulu completion zsh)"
|
|
91
|
+
|
|
92
|
+
_ulu() {
|
|
93
|
+
local -a subcmds
|
|
94
|
+
subcmds=(
|
|
95
|
+
${topLevel}
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
_arguments -C \\
|
|
99
|
+
'--api-key[API key]:key:' \\
|
|
100
|
+
'--profile[Config profile]:profile:' \\
|
|
101
|
+
'--base-url[API base URL]:url:' \\
|
|
102
|
+
'--json[Output in JSON format]' \\
|
|
103
|
+
'--debug[Enable debug output]' \\
|
|
104
|
+
'-q[Suppress spinners]' \\
|
|
105
|
+
'1:command:->cmd' \\
|
|
106
|
+
'*::arg:->args'
|
|
107
|
+
|
|
108
|
+
case "$state" in
|
|
109
|
+
cmd) _describe 'command' subcmds ;;
|
|
110
|
+
args)
|
|
111
|
+
case "\${words[1]}" in
|
|
112
|
+
${program.commands.map((c) => {
|
|
113
|
+
const subs = c.commands.map((s) => s.name()).join(' ');
|
|
114
|
+
return subs ? ` ${c.name()}) compadd ${subs} ;;` : '';
|
|
115
|
+
}).filter(Boolean).join('\n')}
|
|
116
|
+
*) _default ;;
|
|
117
|
+
esac
|
|
118
|
+
;;
|
|
119
|
+
esac
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
_ulu "$@"
|
|
123
|
+
`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate fish completion script
|
|
127
|
+
*/
|
|
128
|
+
function generateFishCompletion(program) {
|
|
129
|
+
const lines = [
|
|
130
|
+
'# Fish completion for ulu CLI',
|
|
131
|
+
'# Save to: ~/.config/fish/completions/ulu.fish',
|
|
132
|
+
'',
|
|
133
|
+
'# Disable file completions by default',
|
|
134
|
+
'complete -c ulu -f',
|
|
135
|
+
'',
|
|
136
|
+
];
|
|
137
|
+
// Top-level commands
|
|
138
|
+
for (const cmd of program.commands) {
|
|
139
|
+
const desc = (cmd.description() || '').replace(/'/g, "\\'");
|
|
140
|
+
lines.push(`complete -c ulu -n '__fish_use_subcommand' -a '${cmd.name()}' -d '${desc}'`);
|
|
141
|
+
}
|
|
142
|
+
lines.push('');
|
|
143
|
+
// Subcommands
|
|
144
|
+
for (const cmd of program.commands) {
|
|
145
|
+
for (const sub of cmd.commands) {
|
|
146
|
+
const desc = (sub.description() || '').replace(/'/g, "\\'");
|
|
147
|
+
lines.push(`complete -c ulu -n '__fish_seen_subcommand_from ${cmd.name()}' -a '${sub.name()}' -d '${desc}'`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Global options
|
|
151
|
+
lines.push('');
|
|
152
|
+
lines.push("# Global options");
|
|
153
|
+
lines.push("complete -c ulu -l api-key -d 'API key'");
|
|
154
|
+
lines.push("complete -c ulu -l profile -d 'Config profile'");
|
|
155
|
+
lines.push("complete -c ulu -l base-url -d 'API base URL'");
|
|
156
|
+
lines.push("complete -c ulu -l json -d 'Output in JSON format'");
|
|
157
|
+
lines.push("complete -c ulu -l debug -d 'Enable debug output'");
|
|
158
|
+
lines.push("complete -c ulu -s q -l quiet -d 'Suppress spinners'");
|
|
159
|
+
return lines.join('\n') + '\n';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Register completion command.
|
|
163
|
+
* Requires the fully-built program so it can introspect the command tree.
|
|
164
|
+
*/
|
|
165
|
+
export function registerCompletionCommands(program) {
|
|
166
|
+
const completion = program
|
|
167
|
+
.command('completion')
|
|
168
|
+
.description('Generate shell completion scripts');
|
|
169
|
+
completion
|
|
170
|
+
.command('bash')
|
|
171
|
+
.description('Output bash completion script')
|
|
172
|
+
.action(() => {
|
|
173
|
+
process.stdout.write(generateBashCompletion(program));
|
|
174
|
+
});
|
|
175
|
+
completion
|
|
176
|
+
.command('zsh')
|
|
177
|
+
.description('Output zsh completion script')
|
|
178
|
+
.action(() => {
|
|
179
|
+
process.stdout.write(generateZshCompletion(program));
|
|
180
|
+
});
|
|
181
|
+
completion
|
|
182
|
+
.command('fish')
|
|
183
|
+
.description('Output fish completion script')
|
|
184
|
+
.action(() => {
|
|
185
|
+
process.stdout.write(generateFishCompletion(program));
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsN7D"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { readFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { writeFileAtomic, exitWithError } from '../utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Config file paths
|
|
7
|
+
*/
|
|
8
|
+
const CONFIG_DIR = join(homedir(), '.uluops');
|
|
9
|
+
const PROFILES_PATH = join(CONFIG_DIR, 'profiles.json');
|
|
10
|
+
const CREDENTIALS_PATH = join(CONFIG_DIR, 'credentials.json');
|
|
11
|
+
/**
|
|
12
|
+
* Valid config keys and their types
|
|
13
|
+
*/
|
|
14
|
+
const CONFIG_KEYS = {
|
|
15
|
+
opsBaseUrl: 'string',
|
|
16
|
+
registryBaseUrl: 'string',
|
|
17
|
+
defaultProject: 'string',
|
|
18
|
+
json: 'boolean',
|
|
19
|
+
quiet: 'boolean',
|
|
20
|
+
debug: 'boolean',
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Load the profiles file (or return defaults)
|
|
24
|
+
*/
|
|
25
|
+
function loadProfiles() {
|
|
26
|
+
if (!existsSync(PROFILES_PATH)) {
|
|
27
|
+
return { _active: 'default' };
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
return JSON.parse(readFileSync(PROFILES_PATH, 'utf-8'));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return { _active: 'default' };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Save profiles file
|
|
38
|
+
*/
|
|
39
|
+
function saveProfiles(profiles) {
|
|
40
|
+
try {
|
|
41
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
42
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
writeFileAtomic(PROFILES_PATH, JSON.stringify(profiles, null, 2) + '\n');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const code = error.code;
|
|
48
|
+
if (code === 'EACCES') {
|
|
49
|
+
exitWithError(`Permission denied writing to ${PROFILES_PATH}. Check file permissions.`);
|
|
50
|
+
}
|
|
51
|
+
if (code === 'ENOSPC') {
|
|
52
|
+
exitWithError(`No disk space available to write ${PROFILES_PATH}. Free up disk space and try again.`);
|
|
53
|
+
}
|
|
54
|
+
if (code === 'EROFS') {
|
|
55
|
+
exitWithError(`Cannot write to ${PROFILES_PATH}: filesystem is read-only.`);
|
|
56
|
+
}
|
|
57
|
+
exitWithError(`Failed to save config to ${PROFILES_PATH}: ${error.message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get the active profile name
|
|
62
|
+
*/
|
|
63
|
+
function getActiveProfile(profiles, override) {
|
|
64
|
+
return override ?? profiles._active ?? 'default';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Coerce a string value to the correct type for a config key
|
|
68
|
+
*/
|
|
69
|
+
function coerceValue(key, value) {
|
|
70
|
+
if (CONFIG_KEYS[key] === 'boolean') {
|
|
71
|
+
return value === 'true' || value === '1' || value === 'yes';
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Register config commands
|
|
77
|
+
*/
|
|
78
|
+
export function registerConfigCommands(program) {
|
|
79
|
+
const config = program
|
|
80
|
+
.command('config')
|
|
81
|
+
.description('Manage CLI configuration and profiles');
|
|
82
|
+
// ulu config list
|
|
83
|
+
config
|
|
84
|
+
.command('list')
|
|
85
|
+
.description('Show resolved configuration for the active profile')
|
|
86
|
+
.action(async (_, cmd) => {
|
|
87
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
88
|
+
const profiles = loadProfiles();
|
|
89
|
+
const profileName = getActiveProfile(profiles, globalOpts.profile);
|
|
90
|
+
const profileConfig = profiles[profileName] ?? {};
|
|
91
|
+
if (globalOpts.json) {
|
|
92
|
+
console.log(JSON.stringify({
|
|
93
|
+
activeProfile: profileName,
|
|
94
|
+
config: profileConfig,
|
|
95
|
+
envOverrides: getEnvOverrides(),
|
|
96
|
+
}, null, 2));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
console.log(`Profile: ${profileName}\n`);
|
|
100
|
+
// Show config values with source indicators
|
|
101
|
+
const envOverrides = getEnvOverrides();
|
|
102
|
+
for (const key of Object.keys(CONFIG_KEYS)) {
|
|
103
|
+
const envVal = envOverrides[key];
|
|
104
|
+
const profileVal = profileConfig[key];
|
|
105
|
+
if (envVal !== undefined) {
|
|
106
|
+
console.log(` ${key}: ${envVal} (env)`);
|
|
107
|
+
}
|
|
108
|
+
else if (profileVal !== undefined) {
|
|
109
|
+
console.log(` ${key}: ${profileVal}`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(` ${key}: (not set)`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Show auth status
|
|
116
|
+
const hasCredentials = existsSync(CREDENTIALS_PATH);
|
|
117
|
+
console.log(`\n Auth: ${hasCredentials ? 'credentials stored' : 'not configured'}`);
|
|
118
|
+
});
|
|
119
|
+
// ulu config get <key>
|
|
120
|
+
config
|
|
121
|
+
.command('get <key>')
|
|
122
|
+
.description('Get a config value')
|
|
123
|
+
.action(async (key, _, cmd) => {
|
|
124
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
125
|
+
if (!(key in CONFIG_KEYS)) {
|
|
126
|
+
console.error(`Unknown config key: ${key}`);
|
|
127
|
+
console.error(`Valid keys: ${Object.keys(CONFIG_KEYS).join(', ')}`);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
const profiles = loadProfiles();
|
|
131
|
+
const profileName = getActiveProfile(profiles, globalOpts.profile);
|
|
132
|
+
const profileConfig = profiles[profileName] ?? {};
|
|
133
|
+
// Check env override first
|
|
134
|
+
const envOverrides = getEnvOverrides();
|
|
135
|
+
const envVal = envOverrides[key];
|
|
136
|
+
const profileVal = profileConfig[key];
|
|
137
|
+
const value = envVal ?? profileVal;
|
|
138
|
+
if (globalOpts.json) {
|
|
139
|
+
console.log(JSON.stringify({ key, value: value ?? null, source: envVal !== undefined ? 'env' : profileVal !== undefined ? 'profile' : 'unset' }));
|
|
140
|
+
}
|
|
141
|
+
else if (value !== undefined) {
|
|
142
|
+
console.log(String(value));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
// ulu config set <key> <value>
|
|
146
|
+
config
|
|
147
|
+
.command('set <key> <value>')
|
|
148
|
+
.description('Set a config value in the active profile')
|
|
149
|
+
.action(async (key, value, _, cmd) => {
|
|
150
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
151
|
+
if (!(key in CONFIG_KEYS)) {
|
|
152
|
+
console.error(`Unknown config key: ${key}`);
|
|
153
|
+
console.error(`Valid keys: ${Object.keys(CONFIG_KEYS).join(', ')}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
const profiles = loadProfiles();
|
|
157
|
+
const profileName = getActiveProfile(profiles, globalOpts.profile);
|
|
158
|
+
if (!profiles[profileName] || typeof profiles[profileName] === 'string') {
|
|
159
|
+
profiles[profileName] = {};
|
|
160
|
+
}
|
|
161
|
+
const coerced = coerceValue(key, value);
|
|
162
|
+
profiles[profileName][key] = coerced;
|
|
163
|
+
saveProfiles(profiles);
|
|
164
|
+
if (globalOpts.json) {
|
|
165
|
+
console.log(JSON.stringify({ key, value: coerced, profile: profileName }));
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log(`Set ${key} = ${coerced} (profile: ${profileName})`);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
// ulu config unset <key>
|
|
172
|
+
config
|
|
173
|
+
.command('unset <key>')
|
|
174
|
+
.description('Remove a config value from the active profile')
|
|
175
|
+
.action(async (key, _, cmd) => {
|
|
176
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
177
|
+
if (!(key in CONFIG_KEYS)) {
|
|
178
|
+
console.error(`Unknown config key: ${key}`);
|
|
179
|
+
console.error(`Valid keys: ${Object.keys(CONFIG_KEYS).join(', ')}`);
|
|
180
|
+
process.exit(1);
|
|
181
|
+
}
|
|
182
|
+
const profiles = loadProfiles();
|
|
183
|
+
const profileName = getActiveProfile(profiles, globalOpts.profile);
|
|
184
|
+
const profileConfig = profiles[profileName];
|
|
185
|
+
if (profileConfig && key in profileConfig) {
|
|
186
|
+
delete profileConfig[key];
|
|
187
|
+
saveProfiles(profiles);
|
|
188
|
+
}
|
|
189
|
+
if (globalOpts.json) {
|
|
190
|
+
console.log(JSON.stringify({ key, profile: profileName, removed: true }));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
console.log(`Unset ${key} (profile: ${profileName})`);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
// ulu config profiles
|
|
197
|
+
config
|
|
198
|
+
.command('profiles')
|
|
199
|
+
.description('List available profiles')
|
|
200
|
+
.action(async (_, cmd) => {
|
|
201
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
202
|
+
const profiles = loadProfiles();
|
|
203
|
+
const activeProfile = profiles._active;
|
|
204
|
+
const profileNames = Object.keys(profiles).filter((k) => k !== '_active');
|
|
205
|
+
if (globalOpts.json) {
|
|
206
|
+
console.log(JSON.stringify({ active: activeProfile, profiles: profileNames }));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (profileNames.length === 0) {
|
|
210
|
+
console.log('No profiles configured. Use "ulu config set <key> <value>" to create one.');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
console.log('Profiles:\n');
|
|
214
|
+
for (const name of profileNames) {
|
|
215
|
+
const marker = name === activeProfile ? ' *' : '';
|
|
216
|
+
const config = profiles[name];
|
|
217
|
+
const keys = Object.keys(config).filter((k) => config[k] !== undefined);
|
|
218
|
+
const summary = keys.length > 0 ? ` (${keys.join(', ')})` : '';
|
|
219
|
+
console.log(` ${name}${marker}${summary}`);
|
|
220
|
+
}
|
|
221
|
+
console.log(`\n * = active profile`);
|
|
222
|
+
});
|
|
223
|
+
// ulu config use <profile>
|
|
224
|
+
config
|
|
225
|
+
.command('use <profile>')
|
|
226
|
+
.description('Switch the active profile')
|
|
227
|
+
.action(async (profile, _, cmd) => {
|
|
228
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
229
|
+
const profiles = loadProfiles();
|
|
230
|
+
profiles._active = profile;
|
|
231
|
+
// Ensure the profile entry exists
|
|
232
|
+
if (!profiles[profile]) {
|
|
233
|
+
profiles[profile] = {};
|
|
234
|
+
}
|
|
235
|
+
saveProfiles(profiles);
|
|
236
|
+
if (globalOpts.json) {
|
|
237
|
+
console.log(JSON.stringify({ active: profile }));
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
console.log(`Switched to profile: ${profile}`);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
// ulu config path
|
|
244
|
+
config
|
|
245
|
+
.command('path')
|
|
246
|
+
.description('Show config file locations')
|
|
247
|
+
.action(async (_, cmd) => {
|
|
248
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
249
|
+
const paths = {
|
|
250
|
+
configDir: CONFIG_DIR,
|
|
251
|
+
profiles: PROFILES_PATH,
|
|
252
|
+
credentials: CREDENTIALS_PATH,
|
|
253
|
+
localEnv: join(process.cwd(), '.env'),
|
|
254
|
+
};
|
|
255
|
+
if (globalOpts.json) {
|
|
256
|
+
console.log(JSON.stringify(paths, null, 2));
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
console.log('Config paths:\n');
|
|
260
|
+
console.log(` Config dir: ${paths.configDir} ${existsSync(paths.configDir) ? '' : '(not created)'}`);
|
|
261
|
+
console.log(` Profiles: ${paths.profiles} ${existsSync(paths.profiles) ? '' : '(not created)'}`);
|
|
262
|
+
console.log(` Credentials: ${paths.credentials} ${existsSync(paths.credentials) ? '' : '(not created)'}`);
|
|
263
|
+
console.log(` Local .env: ${paths.localEnv} ${existsSync(paths.localEnv) ? '' : '(not found)'}`);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get config values that are overridden by environment variables
|
|
268
|
+
*/
|
|
269
|
+
function getEnvOverrides() {
|
|
270
|
+
const overrides = {};
|
|
271
|
+
if (process.env.ULUOPS_BASE_URL)
|
|
272
|
+
overrides.opsBaseUrl = process.env.ULUOPS_BASE_URL;
|
|
273
|
+
if (process.env.ULUOPS_REGISTRY_URL)
|
|
274
|
+
overrides.registryBaseUrl = process.env.ULUOPS_REGISTRY_URL;
|
|
275
|
+
if (process.env.ULUOPS_DEBUG)
|
|
276
|
+
overrides.debug = process.env.ULUOPS_DEBUG;
|
|
277
|
+
return overrides;
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/commands/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8QjE"}
|