pipecraft 0.0.0-releaseit
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/.claude/settings.local.json +35 -0
- package/.github/actions/calculate-version/action.yml +106 -0
- package/.github/actions/create-pr/action.yml +122 -0
- package/.github/actions/create-release/action.yml +74 -0
- package/.github/actions/create-tag/action.yml +94 -0
- package/.github/actions/detect-changes/action.yml +62 -0
- package/.github/actions/manage-branch/action.yml +113 -0
- package/.github/actions/promote-branch/action.yml +352 -0
- package/.github/example/workflows/job.analyze.code.yml +26 -0
- package/.github/example/workflows/job.analyze.docker.yml +32 -0
- package/.github/example/workflows/job.app.api.deploy.yml +127 -0
- package/.github/example/workflows/job.app.api.test.yml +102 -0
- package/.github/example/workflows/job.app.docs.deploy.yml +40 -0
- package/.github/example/workflows/job.app.docs.test.yml +50 -0
- package/.github/example/workflows/job.app.web.deploy.yml +96 -0
- package/.github/example/workflows/job.app.web.test.yml +49 -0
- package/.github/example/workflows/job.changes.yml +82 -0
- package/.github/example/workflows/job.create-pr.yml +96 -0
- package/.github/example/workflows/job.env-check.yml +43 -0
- package/.github/example/workflows/job.fast-forward.yml +103 -0
- package/.github/example/workflows/job.lint.yml +64 -0
- package/.github/example/workflows/job.pr-name.yml +70 -0
- package/.github/example/workflows/job.pr-squash-name.yml +27 -0
- package/.github/example/workflows/job.tag.yml +38 -0
- package/.github/example/workflows/job.version.yml +99 -0
- package/.github/example/workflows/lib.plugin-base.publish.yml +59 -0
- package/.github/example/workflows/pipe.yml +178 -0
- package/.github/example/workflows/scripts/fastforward.sh +51 -0
- package/.github/example/workflows/scripts/pipe-cleaner.sh +70 -0
- package/.github/scripts/fastforward.sh +51 -0
- package/.github/scripts/pipe-cleaner.sh +70 -0
- package/.github/workflows/pipeline.yml +220 -0
- package/.github/workflows/pr-title-check.yml +70 -0
- package/.github/workflows/publish.yml +39 -0
- package/.pipecraftrc.json +78 -0
- package/.release-it.cjs +71 -0
- package/PIPELINE_TESTING_PLAN.md +499 -0
- package/README.md +1101 -0
- package/TRUNK_FLOW_PLAN.md +401 -0
- package/assets/logo_banner.png +0 -0
- package/assets/logo_banner.webp +0 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +364 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/generators/init.tpl.d.ts +3 -0
- package/dist/generators/init.tpl.d.ts.map +1 -0
- package/dist/generators/init.tpl.js +117 -0
- package/dist/generators/init.tpl.js.map +1 -0
- package/dist/generators/workflows.tpl.d.ts +7 -0
- package/dist/generators/workflows.tpl.d.ts.map +1 -0
- package/dist/generators/workflows.tpl.js +73 -0
- package/dist/generators/workflows.tpl.js.map +1 -0
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/calculate-version.yml.tpl.js +122 -0
- package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -0
- package/dist/templates/actions/create-pr.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/create-pr.yml.tpl.js +145 -0
- package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -0
- package/dist/templates/actions/create-tag.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/create-tag.yml.tpl.js +111 -0
- package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -0
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/detect-changes.yml.tpl.js +79 -0
- package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -0
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/manage-branch.yml.tpl.js +130 -0
- package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -0
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts +3 -0
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/promote-branch.yml.tpl.js +362 -0
- package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -0
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.d.ts +16 -0
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.d.ts.map +1 -0
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.js +652 -0
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.js.map +1 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/ast-path-operations.d.ts +287 -0
- package/dist/utils/ast-path-operations.d.ts.map +1 -0
- package/dist/utils/ast-path-operations.js +419 -0
- package/dist/utils/ast-path-operations.js.map +1 -0
- package/dist/utils/config.d.ts +3 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +49 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/github-setup.d.ts +74 -0
- package/dist/utils/github-setup.d.ts.map +1 -0
- package/dist/utils/github-setup.js +418 -0
- package/dist/utils/github-setup.js.map +1 -0
- package/dist/utils/idempotency.d.ts +47 -0
- package/dist/utils/idempotency.d.ts.map +1 -0
- package/dist/utils/idempotency.js +176 -0
- package/dist/utils/idempotency.js.map +1 -0
- package/dist/utils/preflight.d.ts +55 -0
- package/dist/utils/preflight.d.ts.map +1 -0
- package/dist/utils/preflight.js +261 -0
- package/dist/utils/preflight.js.map +1 -0
- package/dist/utils/versioning.d.ts +41 -0
- package/dist/utils/versioning.d.ts.map +1 -0
- package/dist/utils/versioning.js +219 -0
- package/dist/utils/versioning.js.map +1 -0
- package/docs/USER_JOURNEY_ERRORS.md +352 -0
- package/eslint.config.js +77 -0
- package/examples/basic-config.json +41 -0
- package/examples/monorepo-config.json +49 -0
- package/examples/usage.md +289 -0
- package/package.json +58 -0
- package/scripts/debug-workflows.sh +339 -0
- package/scripts/parse-pipeline.js +29 -0
- package/scripts/test-job-order.cjs +140 -0
- package/scripts/validate-pipeline.cjs +379 -0
- package/scripts/verify-job-order.sh +30 -0
- package/src/cli/index.ts +414 -0
- package/src/generators/init.tpl.ts +126 -0
- package/src/generators/workflows.tpl.ts +80 -0
- package/src/templates/actions/calculate-version.yml.tpl.ts +124 -0
- package/src/templates/actions/create-pr.yml.tpl.ts +147 -0
- package/src/templates/actions/create-tag.yml.tpl.ts +112 -0
- package/src/templates/actions/detect-changes.yml.tpl.ts +87 -0
- package/src/templates/actions/manage-branch.yml.tpl.ts +132 -0
- package/src/templates/actions/promote-branch.yml.tpl.ts +364 -0
- package/src/templates/workflows/pipeline-path-based.yml.tpl.ts +706 -0
- package/src/types/index.ts +64 -0
- package/src/utils/README-ast-path-operations.md +390 -0
- package/src/utils/ast-path-operations.ts +581 -0
- package/src/utils/config.ts +64 -0
- package/src/utils/github-setup.ts +558 -0
- package/src/utils/idempotency.ts +215 -0
- package/src/utils/preflight.ts +306 -0
- package/src/utils/versioning.ts +244 -0
- package/tests/README.md +229 -0
- package/tests/TEST_STRUCTURE.md +256 -0
- package/tests/act/run-act-tests.sh +345 -0
- package/tests/debugging/debug-utils.ts +538 -0
- package/tests/debugging/debug-workflow.test.ts +339 -0
- package/tests/debugging/debug-workflows.sh +339 -0
- package/tests/debugging/iterative-debug.ts +652 -0
- package/tests/debugging/run-debug-tests.sh +431 -0
- package/tests/fixtures/basic-config.json +51 -0
- package/tests/fixtures/invalid-config.json +9 -0
- package/tests/fixtures/pipeline-generated.yml +235 -0
- package/tests/fixtures/pipeline-preserve-comments.yml +245 -0
- package/tests/fixtures/pipeline-user-modified.yml +245 -0
- package/tests/fixtures/test-config.json +58 -0
- package/tests/github-live/README.md +250 -0
- package/tests/github-local/JOB_WORKFLOW_TESTS.md +296 -0
- package/tests/github-local/README.md +240 -0
- package/tests/github-local/run-all-tests.sh +422 -0
- package/tests/github-local/test-job-workflows.sh +631 -0
- package/tests/github-local/test-pipeline-workflow.sh +440 -0
- package/tests/integration/generators.test.ts +578 -0
- package/tests/integration/path-based-template.test.ts +510 -0
- package/tests/integration/simple-path-based.test.ts +415 -0
- package/tests/setup.ts +56 -0
- package/tests/unit/ast-path-operations-extended.test.ts +302 -0
- package/tests/unit/cli.test.ts +541 -0
- package/tests/unit/config-extended.test.ts +412 -0
- package/tests/unit/config.test.ts +152 -0
- package/tests/unit/github-setup.test.ts +189 -0
- package/tests/unit/idempotency-isolated.test.ts +297 -0
- package/tests/unit/job-order.test.ts +157 -0
- package/tests/unit/pipeline-path-based.test.ts +511 -0
- package/tests/unit/validate-pipeline.test.ts +384 -0
- package/tests/unit/versioning-extended.test.ts +279 -0
- package/tests/unit/versioning.test.ts +241 -0
- package/tsconfig.debug.json +17 -0
- package/tsconfig.json +28 -0
- package/vitest.config.ts +51 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// PipeCraft CLI - Automated CI/CD pipeline generator
|
|
3
|
+
// Test change for deploy flow validation
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { cosmiconfigSync } from 'cosmiconfig';
|
|
6
|
+
import { runModule, prompt } from '@featherscloud/pinion';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname } from 'path';
|
|
10
|
+
import { IdempotencyManager } from '../utils/idempotency.js';
|
|
11
|
+
import { VersionManager } from '../utils/versioning.js';
|
|
12
|
+
import { loadConfig, validateConfig } from '../utils/config.js';
|
|
13
|
+
import { setupGitHubPermissions } from '../utils/github-setup.js';
|
|
14
|
+
import { runPreflightChecks, formatPreflightResults } from '../utils/preflight.js';
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
const program = new Command();
|
|
18
|
+
// Configure the CLI
|
|
19
|
+
program
|
|
20
|
+
.name('pipecraft')
|
|
21
|
+
.description('CLI tool for managing trunk-based development workflows')
|
|
22
|
+
.version('1.0.0');
|
|
23
|
+
console.log("pipecraft edit");
|
|
24
|
+
// Global options
|
|
25
|
+
program
|
|
26
|
+
.option('-c, --config <path>', 'path to config file', '.pipecraftrc.json')
|
|
27
|
+
.option('-p, --pipeline <path>', 'path to existing pipeline file for merging', '.github/workflows/pipeline.yml')
|
|
28
|
+
.option('-o, --output-pipeline <path>', 'path to output pipeline file (for testing)', '.github/workflows/pipeline.yml')
|
|
29
|
+
.option('-v, --verbose', 'verbose output')
|
|
30
|
+
.option('--force', 'force regeneration even if files unchanged')
|
|
31
|
+
.option('--dry-run', 'show what would be done without making changes');
|
|
32
|
+
// Init command - Initialize configuration
|
|
33
|
+
program
|
|
34
|
+
.command('init')
|
|
35
|
+
.description('Initialize pipecraft configuration')
|
|
36
|
+
.option('-f, --force', 'overwrite existing config file')
|
|
37
|
+
.option('-i, --interactive', 'run interactive setup wizard')
|
|
38
|
+
.option('--with-versioning', 'include version management setup')
|
|
39
|
+
.option('--ci-provider <provider>', 'CI provider (github|gitlab)', 'github')
|
|
40
|
+
.option('--merge-strategy <strategy>', 'merge strategy (fast-forward|merge)', 'fast-forward')
|
|
41
|
+
.option('--initial-branch <branch>', 'initial development branch', 'develop')
|
|
42
|
+
.option('--final-branch <branch>', 'final production branch', 'main')
|
|
43
|
+
.action(async (options) => {
|
|
44
|
+
try {
|
|
45
|
+
const globalOptions = program.opts();
|
|
46
|
+
await runModule(join(__dirname, '../generators/init.tpl.ts'), {
|
|
47
|
+
cwd: process.cwd(),
|
|
48
|
+
argv: process.argv,
|
|
49
|
+
pinion: {
|
|
50
|
+
logger: {
|
|
51
|
+
...console,
|
|
52
|
+
notice: console.log
|
|
53
|
+
},
|
|
54
|
+
prompt: prompt,
|
|
55
|
+
cwd: process.cwd(),
|
|
56
|
+
force: options.force || globalOptions.force || false,
|
|
57
|
+
trace: [],
|
|
58
|
+
exec: async (command, args) => {
|
|
59
|
+
const { spawn } = await import('child_process');
|
|
60
|
+
return new Promise((resolve, reject) => {
|
|
61
|
+
const child = spawn(command, args, { stdio: 'inherit', shell: true });
|
|
62
|
+
child.once('exit', (code) => (code === 0 ? resolve(code) : reject(code)));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// Setup version management if requested
|
|
68
|
+
if (options.withVersioning) {
|
|
69
|
+
const config = loadConfig(globalOptions.config);
|
|
70
|
+
const versionManager = new VersionManager(config);
|
|
71
|
+
versionManager.setupVersionManagement();
|
|
72
|
+
console.log('✅ Version management setup completed!');
|
|
73
|
+
}
|
|
74
|
+
console.log('✅ Configuration initialized successfully!');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error('❌ Failed to initialize configuration:', error.message);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Generate command - Generate workflow files
|
|
82
|
+
program
|
|
83
|
+
.command('generate')
|
|
84
|
+
.description('Generate CI/CD workflows from configuration')
|
|
85
|
+
.option('-o, --output <path>', 'output directory for generated workflows', '.github/workflows')
|
|
86
|
+
.option('--skip-unchanged', 'skip files that haven\'t changed')
|
|
87
|
+
.option('--skip-checks', 'skip pre-flight checks (not recommended)')
|
|
88
|
+
.action(async (options) => {
|
|
89
|
+
try {
|
|
90
|
+
const globalOptions = program.opts();
|
|
91
|
+
const configPath = globalOptions.config;
|
|
92
|
+
const pipelinePath = globalOptions.pipeline;
|
|
93
|
+
const outputPipelinePath = globalOptions.outputPipeline;
|
|
94
|
+
// Run pre-flight checks unless skipped
|
|
95
|
+
if (!options.skipChecks) {
|
|
96
|
+
console.log('🔍 Running pre-flight checks...\n');
|
|
97
|
+
const checks = runPreflightChecks();
|
|
98
|
+
const { allPassed, output, nextSteps } = formatPreflightResults(checks);
|
|
99
|
+
console.log(output);
|
|
100
|
+
console.log();
|
|
101
|
+
if (!allPassed) {
|
|
102
|
+
console.error('❌ Pre-flight checks failed. Fix the issues above and try again.');
|
|
103
|
+
console.error(' Or use --skip-checks to bypass (not recommended)\n');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
console.log('✅ All pre-flight checks passed!');
|
|
107
|
+
// Store next steps for later display (after successful generation)
|
|
108
|
+
if (nextSteps) {
|
|
109
|
+
options._nextSteps = nextSteps;
|
|
110
|
+
}
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
if (globalOptions.verbose) {
|
|
114
|
+
console.log(`📖 Reading config from: ${configPath}`);
|
|
115
|
+
console.log(`📖 Reading pipeline from: ${pipelinePath}`);
|
|
116
|
+
}
|
|
117
|
+
// Load configuration
|
|
118
|
+
const config = loadConfig(configPath);
|
|
119
|
+
// Check idempotency if not forcing
|
|
120
|
+
if (!globalOptions.force && !globalOptions.dryRun) {
|
|
121
|
+
const idempotencyManager = new IdempotencyManager(config);
|
|
122
|
+
if (!(await idempotencyManager.hasChanges())) {
|
|
123
|
+
console.log('ℹ️ No changes detected. Use --force to regenerate anyway.');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (globalOptions.verbose) {
|
|
127
|
+
console.log('🔄 Changes detected, regenerating workflows...');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (globalOptions.dryRun) {
|
|
131
|
+
console.log('🔍 Dry run mode - would generate workflows');
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
await runModule(join(__dirname, '../generators/workflows.tpl.js'), {
|
|
135
|
+
cwd: process.cwd(),
|
|
136
|
+
argv: process.argv,
|
|
137
|
+
pipelinePath: pipelinePath,
|
|
138
|
+
outputPipelinePath: outputPipelinePath,
|
|
139
|
+
config: config,
|
|
140
|
+
pinion: {
|
|
141
|
+
logger: {
|
|
142
|
+
...console,
|
|
143
|
+
notice: console.log
|
|
144
|
+
},
|
|
145
|
+
prompt: prompt,
|
|
146
|
+
cwd: process.cwd(),
|
|
147
|
+
force: globalOptions.force || false,
|
|
148
|
+
trace: [],
|
|
149
|
+
exec: async (command, args) => {
|
|
150
|
+
const { spawn } = await import('child_process');
|
|
151
|
+
return new Promise((resolve, reject) => {
|
|
152
|
+
const child = spawn(command, args, { stdio: 'inherit', shell: true });
|
|
153
|
+
child.once('exit', (code) => (code === 0 ? resolve(code) : reject(code)));
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
// Update idempotency cache
|
|
159
|
+
const idempotencyManager = new IdempotencyManager(config);
|
|
160
|
+
await idempotencyManager.updateCache();
|
|
161
|
+
console.log(`✅ Generated workflows in: ${options.output}`);
|
|
162
|
+
// Display next steps if available
|
|
163
|
+
if (options._nextSteps) {
|
|
164
|
+
console.log();
|
|
165
|
+
const steps = options._nextSteps;
|
|
166
|
+
steps.forEach((step) => console.log(step));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.error('❌ Failed to generate workflows:', error.message);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
// Validate command - Validate configuration
|
|
175
|
+
program
|
|
176
|
+
.command('validate')
|
|
177
|
+
.description('Validate configuration file')
|
|
178
|
+
.action(async (options) => {
|
|
179
|
+
try {
|
|
180
|
+
const globalOptions = program.opts();
|
|
181
|
+
const configPath = globalOptions.config;
|
|
182
|
+
const config = loadConfig(configPath);
|
|
183
|
+
validateConfig(config);
|
|
184
|
+
console.log('✅ Configuration is valid!');
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
console.error('❌ Configuration validation failed:', error.message);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
// Verify command - Check if setup is correct
|
|
192
|
+
program
|
|
193
|
+
.command('verify')
|
|
194
|
+
.description('Verify that pipecraft is properly set up')
|
|
195
|
+
.action(async () => {
|
|
196
|
+
try {
|
|
197
|
+
const explorer = cosmiconfigSync('trunkflow');
|
|
198
|
+
const result = explorer.search();
|
|
199
|
+
if (!result) {
|
|
200
|
+
console.log('⚠️ No configuration file found. Run "pipecraft init" to get started.');
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
console.log(`✅ Found configuration at: ${result.filepath}`);
|
|
204
|
+
const config = result.config;
|
|
205
|
+
validateConfig(config);
|
|
206
|
+
console.log('✅ Configuration is valid!');
|
|
207
|
+
// Check if workflows exist
|
|
208
|
+
const fs = await import('fs');
|
|
209
|
+
const path = await import('path');
|
|
210
|
+
if (config.ciProvider === 'github') {
|
|
211
|
+
const workflowPath = path.join(process.cwd(), '.github/workflows/pipeline.yml');
|
|
212
|
+
if (fs.existsSync(workflowPath)) {
|
|
213
|
+
console.log('✅ GitHub Actions workflows exist!');
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
console.log('⚠️ GitHub Actions workflows not found. Run "pipecraft generate" to create them.');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
console.error('❌ Verification failed:', error.message);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// Version command - Version management
|
|
226
|
+
program
|
|
227
|
+
.command('version')
|
|
228
|
+
.description('Version management commands')
|
|
229
|
+
.option('--check', 'check current version and next version')
|
|
230
|
+
.option('--bump', 'bump version using conventional commits')
|
|
231
|
+
.option('--release', 'create release with version bump')
|
|
232
|
+
.action(async (options) => {
|
|
233
|
+
try {
|
|
234
|
+
const globalOptions = program.opts();
|
|
235
|
+
const config = loadConfig(globalOptions.config);
|
|
236
|
+
const versionManager = new VersionManager(config);
|
|
237
|
+
if (options.check) {
|
|
238
|
+
const currentVersion = versionManager.getCurrentVersion();
|
|
239
|
+
const nextVersion = versionManager.calculateNextVersion();
|
|
240
|
+
console.log(`📦 Current version: ${currentVersion}`);
|
|
241
|
+
console.log(`📦 Next version: ${nextVersion.version} (${nextVersion.type})`);
|
|
242
|
+
// Check conventional commits
|
|
243
|
+
const isValid = versionManager.validateConventionalCommits();
|
|
244
|
+
console.log(`📝 Conventional commits: ${isValid ? '✅ Valid' : '❌ Invalid'}`);
|
|
245
|
+
}
|
|
246
|
+
if (options.bump) {
|
|
247
|
+
console.log('🔄 Bumping version...');
|
|
248
|
+
// This would run release-it in dry-run mode first
|
|
249
|
+
console.log('✅ Version bump completed!');
|
|
250
|
+
}
|
|
251
|
+
if (options.release) {
|
|
252
|
+
console.log('🚀 Creating release...');
|
|
253
|
+
// This would run the actual release process
|
|
254
|
+
console.log('✅ Release created!');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.error('❌ Version command failed:', error.message);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
// Setup command - Create necessary branches
|
|
263
|
+
program
|
|
264
|
+
.command('setup')
|
|
265
|
+
.description('Set up the repository with necessary branches from branch flow')
|
|
266
|
+
.option('--force', 'Force creation even if branches exist')
|
|
267
|
+
.action(async (options) => {
|
|
268
|
+
try {
|
|
269
|
+
const globalOptions = program.opts();
|
|
270
|
+
const configPath = globalOptions.config;
|
|
271
|
+
if (globalOptions.verbose) {
|
|
272
|
+
console.log(`📖 Reading config from: ${configPath}`);
|
|
273
|
+
}
|
|
274
|
+
// Load configuration
|
|
275
|
+
const config = loadConfig(configPath);
|
|
276
|
+
if (!config.branchFlow || config.branchFlow.length === 0) {
|
|
277
|
+
console.log('⚠️ No branch flow configured in config file');
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
console.log(`🌿 Setting up branches: ${config.branchFlow.join(' → ')}`);
|
|
281
|
+
// Check current branch
|
|
282
|
+
const { execSync } = await import('child_process');
|
|
283
|
+
const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();
|
|
284
|
+
console.log(`📍 Current branch: ${currentBranch}`);
|
|
285
|
+
// Check which branches exist
|
|
286
|
+
const existingBranches = execSync('git branch -a', { encoding: 'utf8' })
|
|
287
|
+
.split('\n')
|
|
288
|
+
.map(line => line.trim().replace('* ', '').replace('remotes/origin/', ''))
|
|
289
|
+
.filter(line => line.length > 0);
|
|
290
|
+
console.log(`📋 Existing branches: ${existingBranches.join(', ')}`);
|
|
291
|
+
// Create missing branches
|
|
292
|
+
for (const branch of config.branchFlow) {
|
|
293
|
+
if (existingBranches.includes(branch)) {
|
|
294
|
+
console.log(`✅ Branch '${branch}' already exists locally`);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
console.log(`🌱 Creating branch '${branch}'...`);
|
|
298
|
+
try {
|
|
299
|
+
execSync(`git checkout -b ${branch}`, { stdio: 'inherit' });
|
|
300
|
+
console.log(`✅ Created branch '${branch}'`);
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
if (error.message.includes('already exists')) {
|
|
304
|
+
console.log(`ℹ️ Branch '${branch}' already exists (checked out from remote)`);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
throw error;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Push branch to remote if it doesn't exist there
|
|
312
|
+
try {
|
|
313
|
+
console.log(`📤 Checking if '${branch}' exists on remote...`);
|
|
314
|
+
execSync(`git ls-remote --heads origin ${branch}`, { stdio: 'pipe' });
|
|
315
|
+
console.log(`✅ Branch '${branch}' already exists on remote`);
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
console.log(`🚀 Pushing branch '${branch}' to remote...`);
|
|
319
|
+
execSync(`git push -u origin ${branch}`, { stdio: 'inherit' });
|
|
320
|
+
console.log(`✅ Pushed branch '${branch}' to remote`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Return to original branch
|
|
324
|
+
execSync(`git checkout ${currentBranch}`, { stdio: 'inherit' });
|
|
325
|
+
console.log(`🔄 Returned to original branch: ${currentBranch}`);
|
|
326
|
+
console.log('✅ Branch setup complete!');
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
console.error('❌ Setup command failed:', error.message);
|
|
330
|
+
process.exit(1);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
// Setup GitHub command - Configure GitHub Actions permissions
|
|
334
|
+
program
|
|
335
|
+
.command('setup-github')
|
|
336
|
+
.description('Configure GitHub Actions workflow permissions for PipeCraft')
|
|
337
|
+
.option('--apply', 'Automatically apply changes without prompting')
|
|
338
|
+
.option('--force', 'Alias for --apply')
|
|
339
|
+
.action(async (options) => {
|
|
340
|
+
try {
|
|
341
|
+
const autoApply = options.apply || options.force;
|
|
342
|
+
await setupGitHubPermissions(autoApply);
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
console.error('❌ GitHub setup failed:', error.message);
|
|
346
|
+
if (error.stack) {
|
|
347
|
+
console.error(error.stack);
|
|
348
|
+
}
|
|
349
|
+
process.exit(1);
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
// Parse command line arguments
|
|
353
|
+
program.parse();
|
|
354
|
+
// Show help if no command provided
|
|
355
|
+
if (!process.argv.slice(2).length) {
|
|
356
|
+
program.outputHelp();
|
|
357
|
+
}
|
|
358
|
+
// Test comment for deploy job validation
|
|
359
|
+
// Final test for deploy-core job
|
|
360
|
+
// Test commit to trigger deploy-core job - Wed Oct 15 13:47:31 EDT 2025
|
|
361
|
+
// Test commit to trigger deploy-core job - Wed Oct 15 13:51:31 EDT 2025
|
|
362
|
+
// test commit # on Wed Oct 15 14:07:07 EDT 2025
|
|
363
|
+
// test commit # on Wed Oct 15 15:12:47 EDT 2025
|
|
364
|
+
//# 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":"init.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmD,MAAM,uBAAuB,CAAA;AAkEtG,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,2BA2DrC,CAAA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { toFile, prompt, writeJSON } from '@featherscloud/pinion';
|
|
2
|
+
const defaultConfig = {
|
|
3
|
+
ciProvider: 'github',
|
|
4
|
+
mergeStrategy: 'fast-forward',
|
|
5
|
+
requireConventionalCommits: true,
|
|
6
|
+
initialBranch: 'develop',
|
|
7
|
+
finalBranch: 'main',
|
|
8
|
+
branchFlow: ['develop', 'staging', 'main'],
|
|
9
|
+
semver: {
|
|
10
|
+
bumpRules: {
|
|
11
|
+
feat: 'minor',
|
|
12
|
+
fix: 'patch',
|
|
13
|
+
breaking: 'major'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
actions: {
|
|
17
|
+
onDevelopMerge: ['runTests', 'fastForwardToStaging'],
|
|
18
|
+
onStagingMerge: ['runTests', 'calculateVersion', 'createOrFastForwardToMain']
|
|
19
|
+
},
|
|
20
|
+
domains: {
|
|
21
|
+
api: {
|
|
22
|
+
paths: ['apps/api/**'],
|
|
23
|
+
description: 'API application changes'
|
|
24
|
+
},
|
|
25
|
+
web: {
|
|
26
|
+
paths: ['apps/web/**'],
|
|
27
|
+
description: 'Web application changes'
|
|
28
|
+
},
|
|
29
|
+
libs: {
|
|
30
|
+
paths: ['libs/**'],
|
|
31
|
+
description: 'Shared library changes'
|
|
32
|
+
},
|
|
33
|
+
cicd: {
|
|
34
|
+
paths: ['.github/workflows/**'],
|
|
35
|
+
description: 'CI/CD configuration changes'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const configTemplate = (ctx) => {
|
|
40
|
+
const config = {
|
|
41
|
+
ciProvider: ctx.ciProvider,
|
|
42
|
+
mergeStrategy: ctx.mergeStrategy,
|
|
43
|
+
requireConventionalCommits: ctx.requireConventionalCommits,
|
|
44
|
+
initialBranch: ctx.initialBranch,
|
|
45
|
+
finalBranch: ctx.finalBranch,
|
|
46
|
+
branchFlow: ctx.branchFlow,
|
|
47
|
+
semver: {
|
|
48
|
+
bumpRules: ctx.semver.bumpRules
|
|
49
|
+
},
|
|
50
|
+
actions: {
|
|
51
|
+
onDevelopMerge: ctx.actions.onDevelopMerge,
|
|
52
|
+
onStagingMerge: ctx.actions.onStagingMerge
|
|
53
|
+
},
|
|
54
|
+
domains: ctx.domains
|
|
55
|
+
};
|
|
56
|
+
return JSON.stringify(config, null, 2);
|
|
57
|
+
};
|
|
58
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
59
|
+
.then(prompt([
|
|
60
|
+
{
|
|
61
|
+
type: 'input',
|
|
62
|
+
name: 'projectName',
|
|
63
|
+
message: 'What is your project name?',
|
|
64
|
+
default: 'my-project'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'list',
|
|
68
|
+
name: 'ciProvider',
|
|
69
|
+
message: 'Which CI provider are you using?',
|
|
70
|
+
choices: [
|
|
71
|
+
{ name: 'GitHub Actions', value: 'github' },
|
|
72
|
+
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
73
|
+
],
|
|
74
|
+
default: 'github'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'list',
|
|
78
|
+
name: 'mergeStrategy',
|
|
79
|
+
message: 'What merge strategy do you prefer?',
|
|
80
|
+
choices: [
|
|
81
|
+
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
82
|
+
{ name: 'Merge commits', value: 'merge' }
|
|
83
|
+
],
|
|
84
|
+
default: 'fast-forward'
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'confirm',
|
|
88
|
+
name: 'requireConventionalCommits',
|
|
89
|
+
message: 'Require conventional commit format for PR titles?',
|
|
90
|
+
default: true
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'input',
|
|
94
|
+
name: 'initialBranch',
|
|
95
|
+
message: 'What is your development branch name?',
|
|
96
|
+
default: 'develop'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'input',
|
|
100
|
+
name: 'finalBranch',
|
|
101
|
+
message: 'What is your production branch name?',
|
|
102
|
+
default: 'main'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'input',
|
|
106
|
+
name: 'branchFlow',
|
|
107
|
+
message: 'Enter your branch flow (comma-separated)',
|
|
108
|
+
default: 'develop,staging,main',
|
|
109
|
+
filter: (input) => input.split(',').map(b => b.trim())
|
|
110
|
+
}
|
|
111
|
+
]))
|
|
112
|
+
.then((ctx) => ({ ...ctx, ...defaultConfig }))
|
|
113
|
+
.then((config) => {
|
|
114
|
+
const content = configTemplate(config);
|
|
115
|
+
return writeJSON(() => content, toFile('.pipecraftrc.json'))(ctx);
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=init.tpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.tpl.js","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0C,MAAM,uBAAuB,CAAA;AAyC7F,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,iBAsC5G,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'fs';
|
|
2
|
+
import { parse } from 'yaml';
|
|
3
|
+
// Import individual workflow templates
|
|
4
|
+
import { generate as generateTagWorkflow } from '../templates/actions/create-tag.yml.tpl.js';
|
|
5
|
+
import { generate as generateChangesWorkflow } from '../templates/actions/detect-changes.yml.tpl.js';
|
|
6
|
+
import { generate as generateVersionWorkflow } from '../templates/actions/calculate-version.yml.tpl.js';
|
|
7
|
+
import { generate as generateCreatePRWorkflow } from '../templates/actions/create-pr.yml.tpl.js';
|
|
8
|
+
import { generate as generateBranchWorkflow } from '../templates/actions/manage-branch.yml.tpl.js';
|
|
9
|
+
import { generate as generatePromoteBranchWorkflow } from '../templates/actions/promote-branch.yml.tpl.js';
|
|
10
|
+
import { generate as generatePathBasedPipeline } from '../templates/workflows/pipeline-path-based.yml.tpl.js';
|
|
11
|
+
const defaultConfig = {
|
|
12
|
+
ciProvider: 'github',
|
|
13
|
+
mergeStrategy: 'fast-forward',
|
|
14
|
+
requireConventionalCommits: true,
|
|
15
|
+
initialBranch: 'develop',
|
|
16
|
+
finalBranch: 'main',
|
|
17
|
+
branchFlow: ['develop', 'staging', 'main'],
|
|
18
|
+
semver: {
|
|
19
|
+
bumpRules: {
|
|
20
|
+
feat: 'minor',
|
|
21
|
+
fix: 'patch',
|
|
22
|
+
breaking: 'major'
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
actions: {
|
|
26
|
+
onDevelopMerge: ['runTests', 'fastForwardToStaging'],
|
|
27
|
+
onStagingMerge: ['runTests', 'calculateVersion', 'createOrFastForwardToMain']
|
|
28
|
+
},
|
|
29
|
+
domains: {
|
|
30
|
+
api: { paths: ['apps/api/**'], description: 'API application changes' },
|
|
31
|
+
web: { paths: ['apps/web/**'], description: 'Web application changes' },
|
|
32
|
+
libs: { paths: ['libs/**'], description: 'Shared library changes' },
|
|
33
|
+
cicd: { paths: ['.github/workflows/**'], description: 'CI/CD configuration changes' }
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
37
|
+
.then((ctx) => {
|
|
38
|
+
console.log('🔧 Generating GitHub Actions...');
|
|
39
|
+
// Load existing pipeline if provided
|
|
40
|
+
let existingPipeline = null;
|
|
41
|
+
let existingPipelineContent = null;
|
|
42
|
+
if (ctx.pipelinePath && existsSync(ctx.pipelinePath)) {
|
|
43
|
+
try {
|
|
44
|
+
existingPipelineContent = readFileSync(ctx.pipelinePath, 'utf8');
|
|
45
|
+
existingPipeline = parse(existingPipelineContent);
|
|
46
|
+
console.log(`📖 Loaded existing pipeline from: ${ctx.pipelinePath}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.warn(`⚠️ Failed to load existing pipeline: ${error}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { ...ctx, ...defaultConfig, ...ctx.config, ...ctx, existingPipeline, existingPipelineContent, outputPipelinePath: ctx.outputPipelinePath };
|
|
53
|
+
})
|
|
54
|
+
.then((ctx) => {
|
|
55
|
+
// Generate individual GitHub Actions
|
|
56
|
+
return Promise.all([
|
|
57
|
+
generateChangesWorkflow(ctx),
|
|
58
|
+
generateTagWorkflow(ctx),
|
|
59
|
+
generateVersionWorkflow(ctx),
|
|
60
|
+
generateCreatePRWorkflow(ctx),
|
|
61
|
+
generateBranchWorkflow(ctx),
|
|
62
|
+
generatePromoteBranchWorkflow(ctx)
|
|
63
|
+
]).then(() => ctx);
|
|
64
|
+
})
|
|
65
|
+
.then((ctx) => {
|
|
66
|
+
// Generate the main pipeline
|
|
67
|
+
return generatePathBasedPipeline(ctx);
|
|
68
|
+
})
|
|
69
|
+
.then((ctx) => {
|
|
70
|
+
console.log('✅ Generated workflows in: .github/workflows');
|
|
71
|
+
return ctx;
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=workflows.tpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.tpl.js","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-version.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/calculate-version.yml.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAiH7E,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,iBAU6D,CAAA"}
|