@ticatec/omniflow 0.1.5
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.
Potentially problematic release.
This version of @ticatec/omniflow might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/README.md +476 -0
- package/dist/cli/commands/run.d.ts +7 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +242 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +211 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/omniflow.d.ts +115 -0
- package/dist/config/omniflow.d.ts.map +1 -0
- package/dist/config/omniflow.js +451 -0
- package/dist/config/omniflow.js.map +1 -0
- package/dist/core/git.d.ts +22 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +164 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/strategies/BaseMergeRequest.d.ts +58 -0
- package/dist/core/strategies/BaseMergeRequest.d.ts.map +1 -0
- package/dist/core/strategies/BaseMergeRequest.js +57 -0
- package/dist/core/strategies/BaseMergeRequest.js.map +1 -0
- package/dist/core/strategies/ForgejoRequest.d.ts +35 -0
- package/dist/core/strategies/ForgejoRequest.d.ts.map +1 -0
- package/dist/core/strategies/ForgejoRequest.js +82 -0
- package/dist/core/strategies/ForgejoRequest.js.map +1 -0
- package/dist/core/strategies/GitHubRequest.d.ts +34 -0
- package/dist/core/strategies/GitHubRequest.d.ts.map +1 -0
- package/dist/core/strategies/GitHubRequest.js +84 -0
- package/dist/core/strategies/GitHubRequest.js.map +1 -0
- package/dist/core/strategies/GitLabRequest.d.ts +25 -0
- package/dist/core/strategies/GitLabRequest.d.ts.map +1 -0
- package/dist/core/strategies/GitLabRequest.js +70 -0
- package/dist/core/strategies/GitLabRequest.js.map +1 -0
- package/dist/core/strategies/index.d.ts +36 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +50 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/core/strategies/types.d.ts +22 -0
- package/dist/core/strategies/types.d.ts.map +1 -0
- package/dist/core/strategies/types.js +5 -0
- package/dist/core/strategies/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/types/config.d.ts +63 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
// Omniflow run command
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { $ } from 'zx';
|
|
5
|
+
import { OmniflowConfigLoader } from '../../config/index.js';
|
|
6
|
+
import { executeGitWorkflow } from '../../core/git.js';
|
|
7
|
+
// Omniflow 工作目录
|
|
8
|
+
const OMNIFLOW_HOME = process.env.OMNIFLOW_HOME || path.join(os.homedir(), '.omniflow');
|
|
9
|
+
export async function runCommand(projectKey, envName, commands, options) {
|
|
10
|
+
const loader = new OmniflowConfigLoader();
|
|
11
|
+
// Load configuration
|
|
12
|
+
const config = await loader.load();
|
|
13
|
+
// Get project
|
|
14
|
+
const project = await loader.getProject(projectKey);
|
|
15
|
+
if (!project) {
|
|
16
|
+
console.error(`❌ Project not found: ${projectKey}`);
|
|
17
|
+
const available = await loader.listProjects();
|
|
18
|
+
if (available.length > 0) {
|
|
19
|
+
console.log(`\nAvailable projects: ${available.map(p => p.key).join(', ')}`);
|
|
20
|
+
}
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
// Get environment configuration
|
|
24
|
+
const envConfig = await loader.getEnvironment(projectKey, envName);
|
|
25
|
+
if (!envConfig) {
|
|
26
|
+
console.error(`❌ Environment not found: ${envName}`);
|
|
27
|
+
const available = await loader.listEnvironments(projectKey);
|
|
28
|
+
if (available.length > 0) {
|
|
29
|
+
console.log(`\nAvailable environments: ${available.join(', ')}`);
|
|
30
|
+
}
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// If no commands specified, show available commands
|
|
34
|
+
if (commands.length === 0) {
|
|
35
|
+
console.log(`\n📋 Available commands for ${projectKey}/${envName}:\n`);
|
|
36
|
+
if (!envConfig.commands || envConfig.commands.length === 0) {
|
|
37
|
+
console.log(` No commands defined`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
for (const cmd of envConfig.commands) {
|
|
41
|
+
console.log(` ${cmd.name}${cmd.description ? ' - ' + cmd.description : ''}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
console.log(`\nUsage: omniflow run -e ${envName} ${projectKey} <command> [command...]`);
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
// Validate all commands exist before running
|
|
48
|
+
const commandDefs = [];
|
|
49
|
+
for (const cmdName of commands) {
|
|
50
|
+
const def = envConfig.commands?.find(c => c.name === cmdName);
|
|
51
|
+
if (!def) {
|
|
52
|
+
console.error(`❌ Command not found: ${cmdName}`);
|
|
53
|
+
if (envConfig.commands && envConfig.commands.length > 0) {
|
|
54
|
+
console.log(`\nAvailable commands:`);
|
|
55
|
+
for (const cmd of envConfig.commands) {
|
|
56
|
+
console.log(` - ${cmd.name}${cmd.description ? ' - ' + cmd.description : ''}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
commandDefs.push(def);
|
|
62
|
+
}
|
|
63
|
+
// Get git configuration
|
|
64
|
+
const gitConfig = await loader.getGitConfig(projectKey, envName);
|
|
65
|
+
if (!gitConfig) {
|
|
66
|
+
console.error(`❌ Git configuration not found for project: ${projectKey}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
// Workspace path: $OMNIFLOW_HOME/project/<project-path>/<environment>/
|
|
70
|
+
const workspacePath = path.join(OMNIFLOW_HOME, 'project', ...projectKey.split('/'), envName);
|
|
71
|
+
const projectRoot = workspacePath;
|
|
72
|
+
console.log(`\n🚀 Running: ${project.name || projectKey}`);
|
|
73
|
+
console.log(` Project: ${projectKey}`);
|
|
74
|
+
console.log(` Environment: ${envName}`);
|
|
75
|
+
console.log(` Commands: ${commands.join(', ')}`);
|
|
76
|
+
console.log(` Branch: ${gitConfig.branch}`);
|
|
77
|
+
if (envConfig.merge_from) {
|
|
78
|
+
console.log(` (Remote merge: ${envConfig.merge_from} → ${gitConfig.branch})`);
|
|
79
|
+
}
|
|
80
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
81
|
+
console.log('');
|
|
82
|
+
let overallSuccess = true;
|
|
83
|
+
const results = [];
|
|
84
|
+
try {
|
|
85
|
+
// Create workspace directory
|
|
86
|
+
await $ `mkdir -p ${workspacePath}`;
|
|
87
|
+
// Git workflow: clone
|
|
88
|
+
if (options.verbose) {
|
|
89
|
+
console.log(`🔄 Cloning: ${gitConfig.url}`);
|
|
90
|
+
}
|
|
91
|
+
const gitResult = await executeGitWorkflow({
|
|
92
|
+
url: gitConfig.url,
|
|
93
|
+
branch: gitConfig.branch,
|
|
94
|
+
merge_from: envConfig.merge_from,
|
|
95
|
+
strategy: gitConfig.strategy,
|
|
96
|
+
username: gitConfig.username,
|
|
97
|
+
password: gitConfig.password
|
|
98
|
+
}, projectRoot);
|
|
99
|
+
if (!gitResult.success) {
|
|
100
|
+
throw new Error(`Git workflow failed: ${gitResult.error}`);
|
|
101
|
+
}
|
|
102
|
+
if (options.verbose) {
|
|
103
|
+
console.log(`✓ Git ready: ${gitResult.branch} @ ${gitResult.commit.substring(0, 8)}`);
|
|
104
|
+
}
|
|
105
|
+
// Get merged variables: global -> project -> environment
|
|
106
|
+
const mergedVars = await loader.getMergedVars(projectKey, envName);
|
|
107
|
+
// Load shared commands from config repository
|
|
108
|
+
const sharedCommands = await loader.loadCommands() || {};
|
|
109
|
+
// Execute commands sequentially
|
|
110
|
+
for (let i = 0; i < commands.length; i++) {
|
|
111
|
+
const commandName = commands[i];
|
|
112
|
+
const commandDef = commandDefs[i];
|
|
113
|
+
console.log(`\n${'─'.repeat(50)}`);
|
|
114
|
+
console.log(`📋 [${i + 1}/${commands.length}] Running: ${commandName}${commandDef.description ? ' - ' + commandDef.description : ''}`);
|
|
115
|
+
console.log(`${'─'.repeat(50)}`);
|
|
116
|
+
// Prepare environment variables for the script
|
|
117
|
+
const scriptEnv = {
|
|
118
|
+
// System env
|
|
119
|
+
...process.env,
|
|
120
|
+
// Merged variables (global -> project -> environment)
|
|
121
|
+
...mergedVars,
|
|
122
|
+
// Workspace info
|
|
123
|
+
OMNIFLOW_HOME,
|
|
124
|
+
WORKSPACE: workspacePath,
|
|
125
|
+
PROJECT_ROOT: projectRoot,
|
|
126
|
+
PROJECT_KEY: projectKey,
|
|
127
|
+
PROJECT_NAME: project.name || projectKey,
|
|
128
|
+
ENVIRONMENT: envName,
|
|
129
|
+
COMMAND: commandName,
|
|
130
|
+
COMMAND_INDEX: String(i),
|
|
131
|
+
BRANCH: gitResult.branch,
|
|
132
|
+
COMMIT: gitResult.commit || ''
|
|
133
|
+
};
|
|
134
|
+
if (options.verbose) {
|
|
135
|
+
console.log(`\n📜 Environment variables:`);
|
|
136
|
+
console.log(` OMNIFLOW_HOME=${OMNIFLOW_HOME}`);
|
|
137
|
+
console.log(` WORKSPACE=${workspacePath}`);
|
|
138
|
+
console.log(` PROJECT_ROOT=${projectRoot}`);
|
|
139
|
+
console.log(` ENVIRONMENT=${envName}`);
|
|
140
|
+
console.log(` COMMAND=${commandName}`);
|
|
141
|
+
console.log(` BRANCH=${gitResult.branch}`);
|
|
142
|
+
console.log('');
|
|
143
|
+
}
|
|
144
|
+
let commandSuccess = false;
|
|
145
|
+
let commandError = '';
|
|
146
|
+
try {
|
|
147
|
+
if (options.dryRun) {
|
|
148
|
+
console.log(`[DRY RUN] Would execute command: ${commandName}`);
|
|
149
|
+
commandSuccess = true;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Execute the command script
|
|
153
|
+
// Command script path: ./modules/<command-name> or <custom-path>
|
|
154
|
+
const scriptPath = commandDef.name.startsWith('./')
|
|
155
|
+
? commandDef.name
|
|
156
|
+
: `./modules/${commandDef.name}`;
|
|
157
|
+
const resolvedScriptPath = path.resolve(process.cwd(), scriptPath);
|
|
158
|
+
// Import and run the script
|
|
159
|
+
const scriptModule = await import(resolvedScriptPath);
|
|
160
|
+
if (typeof scriptModule.default === 'function') {
|
|
161
|
+
const context = {
|
|
162
|
+
workspace: workspacePath,
|
|
163
|
+
projectRoot: projectRoot,
|
|
164
|
+
project: {
|
|
165
|
+
key: projectKey,
|
|
166
|
+
name: project.name || projectKey,
|
|
167
|
+
description: project.description
|
|
168
|
+
},
|
|
169
|
+
environment: {
|
|
170
|
+
name: envName,
|
|
171
|
+
config: envConfig
|
|
172
|
+
},
|
|
173
|
+
command: {
|
|
174
|
+
name: commandName,
|
|
175
|
+
description: commandDef.description
|
|
176
|
+
},
|
|
177
|
+
git: {
|
|
178
|
+
url: gitConfig.url,
|
|
179
|
+
branch: gitResult.branch,
|
|
180
|
+
commit: gitResult.commit || ''
|
|
181
|
+
},
|
|
182
|
+
env: scriptEnv,
|
|
183
|
+
omniflow: config.omniflow,
|
|
184
|
+
commands: sharedCommands,
|
|
185
|
+
verbose: options.verbose
|
|
186
|
+
};
|
|
187
|
+
await scriptModule.default(context);
|
|
188
|
+
commandSuccess = true;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw new Error(`Script must export a default function: ${resolvedScriptPath}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
commandError = error instanceof Error ? error.message : String(error);
|
|
197
|
+
console.error(`\n❌ Error: ${commandError}`);
|
|
198
|
+
if (options.verbose && error instanceof Error) {
|
|
199
|
+
console.error(error.stack);
|
|
200
|
+
}
|
|
201
|
+
commandSuccess = false;
|
|
202
|
+
}
|
|
203
|
+
results.push({ command: commandName, success: commandSuccess, error: commandError });
|
|
204
|
+
if (commandSuccess) {
|
|
205
|
+
console.log(`\n✅ [${i + 1}/${commands.length}] ${commandName} completed`);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(`\n❌ [${i + 1}/${commands.length}] ${commandName} failed`);
|
|
209
|
+
overallSuccess = false;
|
|
210
|
+
// Stop on first failure
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
217
|
+
console.error(`\n❌ Error: ${errorMsg}`);
|
|
218
|
+
if (options.verbose && error instanceof Error) {
|
|
219
|
+
console.error(error.stack);
|
|
220
|
+
}
|
|
221
|
+
overallSuccess = false;
|
|
222
|
+
}
|
|
223
|
+
// Summary
|
|
224
|
+
console.log(`\n${'═'.repeat(50)}`);
|
|
225
|
+
console.log(`📊 Summary:`);
|
|
226
|
+
for (const result of results) {
|
|
227
|
+
const icon = result.success ? '✅' : '❌';
|
|
228
|
+
console.log(` ${icon} ${result.command}`);
|
|
229
|
+
if (result.error) {
|
|
230
|
+
console.log(` Error: ${result.error}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
console.log(`${'═'.repeat(50)}`);
|
|
234
|
+
if (overallSuccess) {
|
|
235
|
+
console.log(`\n✅ All commands completed successfully`);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
console.log(`\n❌ Some commands failed`);
|
|
239
|
+
}
|
|
240
|
+
process.exit(overallSuccess ? 0 : 1);
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Omniflow CLI - CI/CD Pipeline Manager
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { OmniflowConfigLoader } from '../config/index.js';
|
|
5
|
+
import { runCommand } from './commands/run.js';
|
|
6
|
+
const program = new Command();
|
|
7
|
+
program
|
|
8
|
+
.name('omniflow')
|
|
9
|
+
.description('CI/CD pipeline manager for small teams')
|
|
10
|
+
.version('0.1.0');
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Run command - Execute project deployment
|
|
13
|
+
// =============================================================================
|
|
14
|
+
program
|
|
15
|
+
.command('run')
|
|
16
|
+
.description('Run deployment for a project')
|
|
17
|
+
.argument('<project>', 'Project key (e.g., omni-gate/platform)')
|
|
18
|
+
.argument('<commands...>', 'Commands to run (e.g., frontend-deploy backend-deploy)')
|
|
19
|
+
.requiredOption('-e, --environment <env>', 'Environment name (e.g., test, prod)')
|
|
20
|
+
.option('-d, --dry-run', 'Preview mode without execution')
|
|
21
|
+
.option('-v, --verbose', 'Verbose output')
|
|
22
|
+
.action(async (project, commands, options) => {
|
|
23
|
+
await runCommand(project, options.environment, commands, {
|
|
24
|
+
dryRun: options.dryRun || false,
|
|
25
|
+
verbose: options.verbose || false
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// List command - List projects or environments
|
|
30
|
+
// =============================================================================
|
|
31
|
+
program
|
|
32
|
+
.command('list')
|
|
33
|
+
.description('List projects, environments, or commands')
|
|
34
|
+
.argument('<type>', 'Type to list: projects, environments, commands')
|
|
35
|
+
.argument('[project]', 'Project key (required for type: environments, commands)')
|
|
36
|
+
.argument('[environment]', 'Environment name (required for type: commands)')
|
|
37
|
+
.action(async (type, project, environment) => {
|
|
38
|
+
const loader = new OmniflowConfigLoader();
|
|
39
|
+
if (type === 'projects') {
|
|
40
|
+
const projects = await loader.listProjects();
|
|
41
|
+
console.log('Projects:\n');
|
|
42
|
+
for (const p of projects) {
|
|
43
|
+
console.log(` ${p.key}${p.description ? ' - ' + p.description : ''}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (type === 'environments' || type === 'branches') {
|
|
47
|
+
if (!project) {
|
|
48
|
+
console.error('❌ Project key is required for listing environments');
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const environments = await loader.listEnvironments(project);
|
|
52
|
+
console.log(`Environments for ${project}:\n`);
|
|
53
|
+
for (const envName of environments) {
|
|
54
|
+
const envConfig = await loader.getEnvironment(project, envName);
|
|
55
|
+
console.log(` ${envName}${envConfig?.description ? ' - ' + envConfig.description : ''}`);
|
|
56
|
+
if (envConfig) {
|
|
57
|
+
console.log(` branch: ${envConfig.branch}`);
|
|
58
|
+
if (envConfig.merge_from) {
|
|
59
|
+
console.log(` merge_from: ${envConfig.merge_from}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (type === 'commands') {
|
|
65
|
+
if (!project || !environment) {
|
|
66
|
+
console.error('❌ Project key and environment name are required for listing commands');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const envConfig = await loader.getEnvironment(project, environment);
|
|
70
|
+
if (!envConfig) {
|
|
71
|
+
console.error(`❌ Environment not found: ${project}/${environment}`);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
if (!envConfig.commands || envConfig.commands.length === 0) {
|
|
75
|
+
console.log(`No commands defined for ${project}/${environment}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
console.log(`Commands for ${project}/${environment}:\n`);
|
|
79
|
+
for (const cmd of envConfig.commands) {
|
|
80
|
+
console.log(` ${cmd.name}${cmd.description ? ' - ' + cmd.description : ''}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.error('❌ Invalid type. Use "projects", "environments", or "commands"');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Show command - Show project details
|
|
90
|
+
// =============================================================================
|
|
91
|
+
program
|
|
92
|
+
.command('show')
|
|
93
|
+
.description('Show project or environment details')
|
|
94
|
+
.argument('<project>', 'Project key')
|
|
95
|
+
.argument('[environment]', 'Environment name (optional)')
|
|
96
|
+
.action(async (project, environment) => {
|
|
97
|
+
const loader = new OmniflowConfigLoader();
|
|
98
|
+
const projectConfig = await loader.getProject(project);
|
|
99
|
+
if (!projectConfig) {
|
|
100
|
+
console.error(`❌ Project not found: ${project}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
console.log(`\nProject: ${project}`);
|
|
104
|
+
if (projectConfig.description) {
|
|
105
|
+
console.log(`Description: ${projectConfig.description}`);
|
|
106
|
+
}
|
|
107
|
+
if (projectConfig.repos) {
|
|
108
|
+
console.log(`\nGit:`);
|
|
109
|
+
console.log(` URL: ${projectConfig.repos.git}`);
|
|
110
|
+
if (projectConfig.repos.branch) {
|
|
111
|
+
console.log(` Default Branch: ${projectConfig.repos.branch}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (environment) {
|
|
115
|
+
const envConfig = await loader.getEnvironment(project, environment);
|
|
116
|
+
if (!envConfig) {
|
|
117
|
+
console.error(`❌ Environment not found: ${environment}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
console.log(`\nEnvironment: ${environment}`);
|
|
121
|
+
if (envConfig.description) {
|
|
122
|
+
console.log(`Description: ${envConfig.description}`);
|
|
123
|
+
}
|
|
124
|
+
console.log(` Target Branch: ${envConfig.branch}`);
|
|
125
|
+
if (envConfig.merge_from) {
|
|
126
|
+
console.log(` Merge From: ${envConfig.merge_from}`);
|
|
127
|
+
}
|
|
128
|
+
if (envConfig.vars) {
|
|
129
|
+
console.log(` Variables:`);
|
|
130
|
+
for (const [key, value] of Object.entries(envConfig.vars)) {
|
|
131
|
+
console.log(` ${key}=${value}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
console.log(`\nEnvironments:`);
|
|
137
|
+
const environments = await loader.listEnvironments(project);
|
|
138
|
+
for (const env of environments) {
|
|
139
|
+
console.log(` - ${env}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
console.log('');
|
|
143
|
+
});
|
|
144
|
+
// =============================================================================
|
|
145
|
+
// Clean command - Clean workspace
|
|
146
|
+
// =============================================================================
|
|
147
|
+
program
|
|
148
|
+
.command('clean')
|
|
149
|
+
.description('Clean workspace for a project')
|
|
150
|
+
.argument('[project]', 'Project key (optional, cleans all if not specified)')
|
|
151
|
+
.option('-a, --all', 'Clean all workspaces')
|
|
152
|
+
.action(async (project, options) => {
|
|
153
|
+
const path = await import('path');
|
|
154
|
+
const os = await import('os');
|
|
155
|
+
const fs = await import('fs/promises');
|
|
156
|
+
const OMNIFLOW_HOME = process.env.OMNIFLOW_HOME || path.join(os.homedir(), '.omniflow');
|
|
157
|
+
if (options.all || !project) {
|
|
158
|
+
// Clean all workspaces
|
|
159
|
+
try {
|
|
160
|
+
await fs.rm(OMNIFLOW_HOME, { recursive: true, force: true });
|
|
161
|
+
console.log(`✅ Cleaned all workspaces: ${OMNIFLOW_HOME}`);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
console.error(`❌ Failed to clean: ${error.message}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Clean specific project workspace
|
|
169
|
+
const workspacePath = path.join(OMNIFLOW_HOME, ...project.split('/'));
|
|
170
|
+
try {
|
|
171
|
+
await fs.rm(workspacePath, { recursive: true, force: true });
|
|
172
|
+
console.log(`✅ Cleaned workspace: ${workspacePath}`);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error(`❌ Failed to clean: ${error.message}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
// =============================================================================
|
|
180
|
+
// Reload command - Fetch latest config from git and update cache
|
|
181
|
+
// =============================================================================
|
|
182
|
+
program
|
|
183
|
+
.command('reload')
|
|
184
|
+
.description('Reload configuration from git (update local cache)')
|
|
185
|
+
.action(async () => {
|
|
186
|
+
const loader = new OmniflowConfigLoader();
|
|
187
|
+
try {
|
|
188
|
+
console.log('🔄 Fetching latest configuration from git...');
|
|
189
|
+
// Force reload (clears cache and fetches fresh)
|
|
190
|
+
await loader.reload();
|
|
191
|
+
// Show summary
|
|
192
|
+
const projects = await loader.listProjects();
|
|
193
|
+
const tree = await loader.listProjectTree();
|
|
194
|
+
console.log('✅ Configuration cache updated\n');
|
|
195
|
+
console.log(`📊 Summary:`);
|
|
196
|
+
console.log(` Projects: ${projects.length}`);
|
|
197
|
+
console.log(` Folders: ${tree.filter(n => n.type === 'folder').length}`);
|
|
198
|
+
if (projects.length > 0) {
|
|
199
|
+
console.log(`\n📁 Projects:`);
|
|
200
|
+
for (const p of projects) {
|
|
201
|
+
console.log(` - ${p.key}${p.description ? ' - ' + p.description : ''}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error(`❌ Failed to reload config: ${error.message}`);
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
program.parse();
|
|
211
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AAEjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { OmniflowConfig, ProjectDefinition, ProjectItem, EnvironmentConfig, ProjectNode } from '../types/config.js';
|
|
2
|
+
export declare class OmniflowConfigLoader {
|
|
3
|
+
private config;
|
|
4
|
+
private initialized;
|
|
5
|
+
/**
|
|
6
|
+
* Ensure configuration is initialized (fetch from git if needed)
|
|
7
|
+
*/
|
|
8
|
+
private ensureInitialized;
|
|
9
|
+
/**
|
|
10
|
+
* Load configuration
|
|
11
|
+
* Uses cached config if available, otherwise fetches from git
|
|
12
|
+
*/
|
|
13
|
+
load(): Promise<OmniflowConfig>;
|
|
14
|
+
/**
|
|
15
|
+
* Find a project by its path (supports nested paths like "omni-gate/platform")
|
|
16
|
+
*/
|
|
17
|
+
findProjectByPath(projects: ProjectItem[], pathParts: string[]): ProjectItem | null;
|
|
18
|
+
/**
|
|
19
|
+
* Get a specific project configuration by path
|
|
20
|
+
* @param projectPath Project path like "omni-gate/platform" or "platform"
|
|
21
|
+
*/
|
|
22
|
+
getProject(projectPath: string): Promise<ProjectDefinition | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Get all projects (flattened, excluding folders)
|
|
25
|
+
*/
|
|
26
|
+
listProjects(): Promise<Array<{
|
|
27
|
+
key: string;
|
|
28
|
+
name: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}>>;
|
|
31
|
+
/**
|
|
32
|
+
* List all items (including folders) with their structure
|
|
33
|
+
*/
|
|
34
|
+
listProjectTree(): Promise<ProjectNode[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Get environment configuration for a project
|
|
37
|
+
* @param projectPath Project path like "omni-gate/platform"
|
|
38
|
+
* @param envName Environment name like "test" or "prod"
|
|
39
|
+
*/
|
|
40
|
+
getEnvironment(projectPath: string, envName: string): Promise<EnvironmentConfig | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Alias for getEnvironment (backward compatibility)
|
|
43
|
+
*/
|
|
44
|
+
getBranch(projectPath: string, branchName: string): Promise<EnvironmentConfig | null>;
|
|
45
|
+
/**
|
|
46
|
+
* List environments for a project
|
|
47
|
+
* @param projectPath Project path like "omni-gate/platform"
|
|
48
|
+
*/
|
|
49
|
+
listEnvironments(projectPath: string): Promise<string[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Alias for listEnvironments (backward compatibility)
|
|
52
|
+
*/
|
|
53
|
+
listBranches(projectPath: string): Promise<string[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Get merged Git configuration for a project
|
|
56
|
+
* @param projectPath Project path like "omni-gate/platform"
|
|
57
|
+
* @param envName Environment name like "test" or "prod"
|
|
58
|
+
*/
|
|
59
|
+
getGitConfig(projectPath: string, envName?: string): Promise<{
|
|
60
|
+
url: string;
|
|
61
|
+
branch: string;
|
|
62
|
+
username?: string;
|
|
63
|
+
password?: string;
|
|
64
|
+
merge_from?: string;
|
|
65
|
+
strategy?: string;
|
|
66
|
+
} | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Get SSH configuration
|
|
69
|
+
*/
|
|
70
|
+
getSshConfig(serverName: string): Promise<{
|
|
71
|
+
server: string;
|
|
72
|
+
user: string;
|
|
73
|
+
privateKeyFile?: string;
|
|
74
|
+
port?: number;
|
|
75
|
+
} | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Resolve environment variables in configuration
|
|
78
|
+
*/
|
|
79
|
+
private resolveEnvVars;
|
|
80
|
+
/**
|
|
81
|
+
* Reload configuration (fetches from git again)
|
|
82
|
+
*/
|
|
83
|
+
reload(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Collect vars from the project path (traverses folder hierarchy)
|
|
86
|
+
* Returns vars from all folders in the path + the project itself
|
|
87
|
+
*/
|
|
88
|
+
private collectVarsFromPath;
|
|
89
|
+
/**
|
|
90
|
+
* Get merged variables for a project and environment
|
|
91
|
+
* Priority: global -> parent folders -> project -> environment (later overrides earlier)
|
|
92
|
+
*/
|
|
93
|
+
getMergedVars(projectPath: string, envName: string): Promise<Record<string, string>>;
|
|
94
|
+
/**
|
|
95
|
+
* Load commands.js from omniflow home directory
|
|
96
|
+
* Returns the exported object or null if file doesn't exist
|
|
97
|
+
*/
|
|
98
|
+
loadCommands(): Promise<Object | null>;
|
|
99
|
+
/**
|
|
100
|
+
* Get the data directory path for projects
|
|
101
|
+
* Maps to ~/.omniflow/data/
|
|
102
|
+
*/
|
|
103
|
+
getDataDir(): string;
|
|
104
|
+
/**
|
|
105
|
+
* Get project path by project key (e.g., "omni-gate/platform" -> ~/.omniflow/data/omni-gate/platform)
|
|
106
|
+
*/
|
|
107
|
+
getProjectPath(projectKey: string): string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Load Omniflow configuration from git
|
|
111
|
+
* Configuration is fetched from the repository specified by OMNIFLOW_CONFIG_REPO
|
|
112
|
+
* @returns The loaded configuration
|
|
113
|
+
*/
|
|
114
|
+
export declare function loadOmniflowConfig(): Promise<OmniflowConfig>;
|
|
115
|
+
//# sourceMappingURL=omniflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omniflow.d.ts","sourceRoot":"","sources":["../../src/config/omniflow.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EAEjB,WAAW,EACZ,MAAM,oBAAoB,CAAA;AAE3B,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAQ;IAE3B;;OAEG;YACW,iBAAiB;IA4E/B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAuCrC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI;IAqBnF;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAOxE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA0BzF;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAsB/C;;;;OAIG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAS7F;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI3F;;;OAGG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO9D;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1D;;;;OAIG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAC;IAoDT;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GAAG,IAAI,CAAC;IAMT;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE7B;;;OAGG;YACW,mBAAmB;IA6BjC;;;OAGG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgB1F;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuB5C;;;OAGG;IACH,UAAU,IAAI,MAAM;IAKpB;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAG3C;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAGlE"}
|