specweave 0.32.5 ā 0.32.7
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/README.md +3 -0
- package/bin/specweave.js +78 -0
- package/dist/src/cli/commands/docs.d.ts +45 -0
- package/dist/src/cli/commands/docs.d.ts.map +1 -0
- package/dist/src/cli/commands/docs.js +307 -0
- package/dist/src/cli/commands/docs.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +16 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts +42 -0
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js +256 -0
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js.map +1 -0
- package/dist/src/cli/helpers/init/github-repo-cloning.d.ts +40 -0
- package/dist/src/cli/helpers/init/github-repo-cloning.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/github-repo-cloning.js +284 -0
- package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts +38 -2
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js +485 -187
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.d.ts +35 -0
- package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.js +203 -0
- package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +127 -13
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts +18 -2
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js +331 -32
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +61 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +25 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
- package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +12 -16
- package/dist/src/utils/docs-preview/config-generator.js.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +24 -5
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +3 -0
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.js +18 -9
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.js +2 -1
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
- package/dist/src/utils/validators/jira-validator.d.ts +37 -1
- package/dist/src/utils/validators/jira-validator.d.ts.map +1 -1
- package/dist/src/utils/validators/jira-validator.js +289 -183
- package/dist/src/utils/validators/jira-validator.js.map +1 -1
- package/package.json +3 -3
- package/plugins/specweave/commands/specweave-done.md +34 -0
- package/plugins/specweave/commands/specweave-increment.md +13 -5
- package/plugins/specweave/hooks/v2/detectors/lifecycle-detector.sh +3 -1
- package/plugins/specweave/hooks/docs-changed.sh.backup +0 -79
- package/plugins/specweave/hooks/human-input-required.sh.backup +0 -75
- package/plugins/specweave/hooks/post-first-increment.sh.backup +0 -61
- package/plugins/specweave/hooks/post-increment-change.sh.backup +0 -98
- package/plugins/specweave/hooks/post-increment-completion.sh.backup +0 -231
- package/plugins/specweave/hooks/post-increment-planning.sh.backup +0 -1048
- package/plugins/specweave/hooks/post-increment-status-change.sh.backup +0 -147
- package/plugins/specweave/hooks/post-spec-update.sh.backup +0 -158
- package/plugins/specweave/hooks/post-user-story-complete.sh.backup +0 -179
- package/plugins/specweave/hooks/pre-command-deduplication.sh.backup +0 -83
- package/plugins/specweave/hooks/pre-implementation.sh.backup +0 -67
- package/plugins/specweave/hooks/pre-task-completion.sh.backup +0 -194
- package/plugins/specweave/hooks/pre-tool-use.sh.backup +0 -133
- package/plugins/specweave/hooks/user-prompt-submit.sh.backup +0 -386
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh.backup +0 -353
- package/plugins/specweave-ado/hooks/post-task-completion.sh.backup +0 -172
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -1262
- package/plugins/specweave-github/hooks/post-task-completion.sh.backup +0 -258
- package/plugins/specweave-github/lib/enhanced-github-sync.js +0 -220
- package/plugins/specweave-jira/hooks/post-task-completion.sh.backup +0 -172
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -134
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1254
- package/plugins/specweave-release/hooks/post-task-completion.sh.backup +0 -110
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# SpecWeave
|
|
2
2
|
|
|
3
|
+
[](https://smithery.ai/skills?ns=anton-abyzov&utm_source=github&utm_medium=badge)
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
**Finally. A Framework That Works on Legacy, Startup, AND Enterprise.**
|
|
4
7
|
|
|
5
8
|
*Drop it into a 10-year-old codebase ā it understands everything. Use it on your weekend MVP ā specs write themselves. Scale it to 50 teams ā JIRA, GitHub, Azure DevOps sync automatically.*
|
package/bin/specweave.js
CHANGED
|
@@ -359,6 +359,77 @@ program
|
|
|
359
359
|
await syncCmd.parseAsync(['node', 'sync-scheduled', ...process.argv.slice(3)], { from: 'user' });
|
|
360
360
|
});
|
|
361
361
|
|
|
362
|
+
// Docs command - Documentation preview, build, validation
|
|
363
|
+
const docsCmd = program
|
|
364
|
+
.command('docs')
|
|
365
|
+
.description('Documentation preview, build, and validation (works in any SpecWeave project)');
|
|
366
|
+
|
|
367
|
+
docsCmd
|
|
368
|
+
.command('preview')
|
|
369
|
+
.description('Start documentation preview server with hot reload')
|
|
370
|
+
.option('-p, --port <number>', 'Port number (default: auto-find 3000-3010)')
|
|
371
|
+
.option('-f, --force', 'Force reinstall Docusaurus')
|
|
372
|
+
.option('--no-browser', 'Do not open browser automatically')
|
|
373
|
+
.option('--no-validate', 'Skip pre-flight validation')
|
|
374
|
+
.option('--no-auto-fix', 'Do not auto-fix validation issues')
|
|
375
|
+
.action(async (options) => {
|
|
376
|
+
const { docsPreviewCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
377
|
+
await docsPreviewCommand({
|
|
378
|
+
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
379
|
+
force: options.force,
|
|
380
|
+
noBrowser: !options.browser,
|
|
381
|
+
validate: options.validate,
|
|
382
|
+
autoFix: options.autoFix,
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
docsCmd
|
|
387
|
+
.command('build')
|
|
388
|
+
.description('Build static documentation site for deployment')
|
|
389
|
+
.option('--no-validate', 'Skip pre-build validation')
|
|
390
|
+
.option('--no-auto-fix', 'Do not auto-fix validation issues')
|
|
391
|
+
.option('-o, --output <path>', 'Output directory')
|
|
392
|
+
.action(async (options) => {
|
|
393
|
+
const { docsBuildCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
394
|
+
await docsBuildCommand({
|
|
395
|
+
validate: options.validate,
|
|
396
|
+
autoFix: options.autoFix,
|
|
397
|
+
output: options.output,
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
docsCmd
|
|
402
|
+
.command('validate')
|
|
403
|
+
.description('Validate documentation without starting server')
|
|
404
|
+
.option('--auto-fix', 'Auto-fix common issues')
|
|
405
|
+
.option('-v, --verbose', 'Show all issues (not just errors)')
|
|
406
|
+
.action(async (options) => {
|
|
407
|
+
const { docsValidateCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
408
|
+
await docsValidateCommand(options);
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
docsCmd
|
|
412
|
+
.command('kill')
|
|
413
|
+
.description('Stop all running documentation servers')
|
|
414
|
+
.action(async () => {
|
|
415
|
+
const { docsKillCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
416
|
+
await docsKillCommand();
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
docsCmd
|
|
420
|
+
.command('status')
|
|
421
|
+
.description('Show documentation status and help')
|
|
422
|
+
.action(async () => {
|
|
423
|
+
const { docsStatusCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
424
|
+
await docsStatusCommand();
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
// Default action for 'specweave docs' without subcommand
|
|
428
|
+
docsCmd.action(async () => {
|
|
429
|
+
const { docsStatusCommand } = await import('../dist/src/cli/commands/docs.js');
|
|
430
|
+
await docsStatusCommand();
|
|
431
|
+
});
|
|
432
|
+
|
|
362
433
|
// Context command - Get project/board context for increment planning
|
|
363
434
|
const contextCmd = program
|
|
364
435
|
.command('context')
|
|
@@ -430,6 +501,13 @@ program.on('--help', () => {
|
|
|
430
501
|
console.log(' $ specweave context projects # Get available projects as JSON');
|
|
431
502
|
console.log(' $ specweave context boards --project myapp # Get boards for a project');
|
|
432
503
|
console.log(' $ specweave context select # Interactive project/board selection');
|
|
504
|
+
console.log(' $ specweave docs # Show docs status and help');
|
|
505
|
+
console.log(' $ specweave docs preview # Start docs server with hot reload');
|
|
506
|
+
console.log(' $ specweave docs preview --port 3015 # Start on specific port');
|
|
507
|
+
console.log(' $ specweave docs build # Build static site for deployment');
|
|
508
|
+
console.log(' $ specweave docs validate # Check for docs errors');
|
|
509
|
+
console.log(' $ specweave docs validate --auto-fix # Fix common issues automatically');
|
|
510
|
+
console.log(' $ specweave docs kill # Stop all docs servers');
|
|
433
511
|
console.log('');
|
|
434
512
|
console.log('Supported AI Tools:');
|
|
435
513
|
console.log(' - Claude Code (full automation) - Native skills, agents, hooks');
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation CLI commands
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI interface for documentation preview, build, and validation.
|
|
5
|
+
* Works in ANY SpecWeave user project, not just the SpecWeave repo itself.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/commands/docs
|
|
8
|
+
*/
|
|
9
|
+
export interface DocsPreviewOptions {
|
|
10
|
+
port?: number;
|
|
11
|
+
force?: boolean;
|
|
12
|
+
noBrowser?: boolean;
|
|
13
|
+
validate?: boolean;
|
|
14
|
+
autoFix?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface DocsBuildOptions {
|
|
17
|
+
validate?: boolean;
|
|
18
|
+
autoFix?: boolean;
|
|
19
|
+
output?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DocsValidateOptions {
|
|
22
|
+
autoFix?: boolean;
|
|
23
|
+
verbose?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Preview documentation with Docusaurus dev server
|
|
27
|
+
*/
|
|
28
|
+
export declare function docsPreviewCommand(options?: DocsPreviewOptions): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Build static documentation site
|
|
31
|
+
*/
|
|
32
|
+
export declare function docsBuildCommand(options?: DocsBuildOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Validate documentation without starting server
|
|
35
|
+
*/
|
|
36
|
+
export declare function docsValidateCommand(options?: DocsValidateOptions): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Kill all running Docusaurus processes
|
|
39
|
+
*/
|
|
40
|
+
export declare function docsKillCommand(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Show docs status and help
|
|
43
|
+
*/
|
|
44
|
+
export declare function docsStatusCommand(): Promise<void>;
|
|
45
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DpF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF1F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBrD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CvD"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation CLI commands
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI interface for documentation preview, build, and validation.
|
|
5
|
+
* Works in ANY SpecWeave user project, not just the SpecWeave repo itself.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/commands/docs
|
|
8
|
+
*/
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import * as fs from '../../utils/fs-native.js';
|
|
12
|
+
/**
|
|
13
|
+
* Preview documentation with Docusaurus dev server
|
|
14
|
+
*/
|
|
15
|
+
export async function docsPreviewCommand(options = {}) {
|
|
16
|
+
const projectRoot = process.cwd();
|
|
17
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
18
|
+
console.log(chalk.blue('\nš SpecWeave Documentation Preview\n'));
|
|
19
|
+
// Check if internal docs exist
|
|
20
|
+
if (!fs.existsSync(docsPath)) {
|
|
21
|
+
console.log(chalk.red('ā No internal documentation found.'));
|
|
22
|
+
console.log(chalk.dim(` Expected: ${docsPath}`));
|
|
23
|
+
console.log(chalk.dim('\n Run one of these commands first:'));
|
|
24
|
+
console.log(chalk.dim(' ⢠specweave init (for new projects)'));
|
|
25
|
+
console.log(chalk.dim(' ⢠/specweave:increment "feature" (to create docs)\n'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Run validation first (unless explicitly skipped)
|
|
29
|
+
if (options.validate !== false) {
|
|
30
|
+
console.log(chalk.cyan('š Running pre-flight validation...\n'));
|
|
31
|
+
try {
|
|
32
|
+
const { DocsValidator } = await import('../../utils/docs-validator.js');
|
|
33
|
+
const validator = new DocsValidator({
|
|
34
|
+
docsPath,
|
|
35
|
+
autoFix: options.autoFix ?? true, // Auto-fix by default
|
|
36
|
+
});
|
|
37
|
+
const result = await validator.validate();
|
|
38
|
+
if (result.fixedCount > 0) {
|
|
39
|
+
console.log(chalk.green(` ā
Auto-fixed ${result.fixedCount} issue(s)`));
|
|
40
|
+
}
|
|
41
|
+
if (!result.valid) {
|
|
42
|
+
console.log(chalk.red('\nā Documentation has errors that must be fixed:\n'));
|
|
43
|
+
for (const issue of result.issues.filter(i => i.severity === 'error')) {
|
|
44
|
+
console.log(chalk.red(` ⢠${issue.file}:${issue.line || 1}`));
|
|
45
|
+
console.log(chalk.dim(` ${issue.message}`));
|
|
46
|
+
}
|
|
47
|
+
console.log(chalk.dim('\n Fix these issues, then try again.\n'));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
if (result.warnings > 0) {
|
|
51
|
+
console.log(chalk.yellow(` ā ļø ${result.warnings} warning(s) (non-blocking)`));
|
|
52
|
+
}
|
|
53
|
+
console.log(chalk.green(' ā
Validation passed!\n'));
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.log(chalk.yellow(' ā ļø Validation skipped (module not available)'));
|
|
57
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}\n`));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Launch preview
|
|
61
|
+
try {
|
|
62
|
+
const { launchPreview, killAllDocusaurusProcesses } = await import('../../utils/docs-preview/index.js');
|
|
63
|
+
// Kill any existing Docusaurus processes to avoid port conflicts
|
|
64
|
+
const killed = await killAllDocusaurusProcesses();
|
|
65
|
+
if (killed > 0) {
|
|
66
|
+
console.log(chalk.dim(` Stopped ${killed} existing Docusaurus process(es)\n`));
|
|
67
|
+
}
|
|
68
|
+
console.log(chalk.cyan('š Starting documentation server...\n'));
|
|
69
|
+
const server = await launchPreview(projectRoot, {
|
|
70
|
+
port: options.port,
|
|
71
|
+
openBrowser: !options.noBrowser,
|
|
72
|
+
force: options.force,
|
|
73
|
+
});
|
|
74
|
+
console.log(chalk.green('ā'.repeat(50)));
|
|
75
|
+
console.log(chalk.green.bold('\nš Documentation Preview Server Started!\n'));
|
|
76
|
+
console.log(chalk.white(` URL: ${chalk.cyan.underline(server.url)}`));
|
|
77
|
+
console.log(chalk.white(` Content: ${chalk.dim('.specweave/docs/internal/')}`));
|
|
78
|
+
console.log(chalk.dim(` Port: ${server.port}`));
|
|
79
|
+
console.log();
|
|
80
|
+
console.log(chalk.white(' Features:'));
|
|
81
|
+
console.log(chalk.dim(' ⢠Hot reload - edit markdown, see changes instantly'));
|
|
82
|
+
console.log(chalk.dim(' ⢠Mermaid diagrams - architecture diagrams render beautifully'));
|
|
83
|
+
console.log(chalk.dim(' ⢠Auto sidebar - generated from folder structure'));
|
|
84
|
+
console.log(chalk.dim(' ⢠Dark/light mode - toggle in navbar'));
|
|
85
|
+
console.log();
|
|
86
|
+
console.log(chalk.yellow(' Press Ctrl+C to stop the server.\n'));
|
|
87
|
+
console.log(chalk.green('ā'.repeat(50)));
|
|
88
|
+
console.log();
|
|
89
|
+
// Keep process alive
|
|
90
|
+
process.on('SIGINT', async () => {
|
|
91
|
+
console.log(chalk.dim('\n\nStopping server...'));
|
|
92
|
+
await server.stop();
|
|
93
|
+
console.log(chalk.green('ā
Server stopped\n'));
|
|
94
|
+
process.exit(0);
|
|
95
|
+
});
|
|
96
|
+
// Keep process running
|
|
97
|
+
await new Promise(() => { });
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.log(chalk.red(`\nā Failed to start preview server:`));
|
|
101
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}`));
|
|
102
|
+
if (error instanceof Error && error.message.includes('No available ports')) {
|
|
103
|
+
console.log(chalk.dim('\n Try killing existing processes:'));
|
|
104
|
+
console.log(chalk.dim(' lsof -i :3000-3010 | grep node'));
|
|
105
|
+
console.log(chalk.dim(' kill -9 <PID>'));
|
|
106
|
+
}
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Build static documentation site
|
|
112
|
+
*/
|
|
113
|
+
export async function docsBuildCommand(options = {}) {
|
|
114
|
+
const projectRoot = process.cwd();
|
|
115
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
116
|
+
console.log(chalk.blue('\nš¦ SpecWeave Documentation Build\n'));
|
|
117
|
+
// Check if internal docs exist
|
|
118
|
+
if (!fs.existsSync(docsPath)) {
|
|
119
|
+
console.log(chalk.red('ā No internal documentation found.'));
|
|
120
|
+
console.log(chalk.dim(` Expected: ${docsPath}\n`));
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
// Run validation first
|
|
124
|
+
if (options.validate !== false) {
|
|
125
|
+
console.log(chalk.cyan('š Running pre-build validation...\n'));
|
|
126
|
+
try {
|
|
127
|
+
const { DocsValidator } = await import('../../utils/docs-validator.js');
|
|
128
|
+
const validator = new DocsValidator({
|
|
129
|
+
docsPath,
|
|
130
|
+
autoFix: options.autoFix ?? true,
|
|
131
|
+
});
|
|
132
|
+
const result = await validator.validate();
|
|
133
|
+
if (!result.valid) {
|
|
134
|
+
console.log(chalk.red('\nā Documentation has errors. Build aborted.\n'));
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
console.log(chalk.green(' ā
Validation passed!\n'));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
console.log(chalk.yellow(' ā ļø Validation skipped\n'));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Build static site
|
|
144
|
+
try {
|
|
145
|
+
const { buildStaticSite, isSetupNeeded, quickSetup } = await import('../../utils/docs-preview/index.js');
|
|
146
|
+
// Setup if needed
|
|
147
|
+
if (await isSetupNeeded(projectRoot)) {
|
|
148
|
+
console.log(chalk.cyan('š¦ First-time setup: Installing Docusaurus...\n'));
|
|
149
|
+
await quickSetup(projectRoot);
|
|
150
|
+
}
|
|
151
|
+
await buildStaticSite(projectRoot);
|
|
152
|
+
const outputPath = options.output || path.join(projectRoot, '.specweave', 'docs-site-internal', 'build');
|
|
153
|
+
console.log(chalk.green('\nā
Build complete!'));
|
|
154
|
+
console.log(chalk.dim(` Output: ${outputPath}`));
|
|
155
|
+
console.log(chalk.dim('\n To serve locally:'));
|
|
156
|
+
console.log(chalk.dim(` cd ${outputPath} && npx serve\n`));
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.log(chalk.red(`\nā Build failed:`));
|
|
160
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}\n`));
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Validate documentation without starting server
|
|
166
|
+
*/
|
|
167
|
+
export async function docsValidateCommand(options = {}) {
|
|
168
|
+
const projectRoot = process.cwd();
|
|
169
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
170
|
+
console.log(chalk.blue('\nš SpecWeave Documentation Validation\n'));
|
|
171
|
+
// Check if internal docs exist
|
|
172
|
+
if (!fs.existsSync(docsPath)) {
|
|
173
|
+
console.log(chalk.red('ā No internal documentation found.'));
|
|
174
|
+
console.log(chalk.dim(` Expected: ${docsPath}\n`));
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
const { DocsValidator } = await import('../../utils/docs-validator.js');
|
|
179
|
+
const validator = new DocsValidator({
|
|
180
|
+
docsPath,
|
|
181
|
+
autoFix: options.autoFix ?? false, // Don't auto-fix in validate mode by default
|
|
182
|
+
});
|
|
183
|
+
console.log(chalk.dim(` Scanning: ${docsPath}\n`));
|
|
184
|
+
const result = await validator.validate();
|
|
185
|
+
// Print summary
|
|
186
|
+
console.log(chalk.white(' Summary:'));
|
|
187
|
+
console.log(chalk.dim(` ⢠Total files: ${result.totalFiles}`));
|
|
188
|
+
if (result.errors > 0) {
|
|
189
|
+
console.log(chalk.red(` ⢠Errors: ${result.errors}`));
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(chalk.green(` ⢠Errors: 0`));
|
|
193
|
+
}
|
|
194
|
+
if (result.warnings > 0) {
|
|
195
|
+
console.log(chalk.yellow(` ⢠Warnings: ${result.warnings}`));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(chalk.dim(` ⢠Warnings: 0`));
|
|
199
|
+
}
|
|
200
|
+
if (result.fixedCount > 0) {
|
|
201
|
+
console.log(chalk.green(` ⢠Auto-fixed: ${result.fixedCount}`));
|
|
202
|
+
}
|
|
203
|
+
console.log();
|
|
204
|
+
// Print issues
|
|
205
|
+
if (options.verbose || result.errors > 0) {
|
|
206
|
+
for (const issue of result.issues) {
|
|
207
|
+
const color = issue.severity === 'error' ? chalk.red
|
|
208
|
+
: issue.severity === 'warning' ? chalk.yellow
|
|
209
|
+
: chalk.dim;
|
|
210
|
+
const icon = issue.severity === 'error' ? 'ā'
|
|
211
|
+
: issue.severity === 'warning' ? 'ā ļø'
|
|
212
|
+
: 'ā¹ļø';
|
|
213
|
+
console.log(color(` ${icon} ${issue.file}:${issue.line || 1}`));
|
|
214
|
+
console.log(chalk.dim(` ${issue.type}: ${issue.message}`));
|
|
215
|
+
if (issue.autoFixable && !options.autoFix) {
|
|
216
|
+
console.log(chalk.dim(` (auto-fixable with --auto-fix)`));
|
|
217
|
+
}
|
|
218
|
+
console.log();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Final status
|
|
222
|
+
if (result.valid) {
|
|
223
|
+
console.log(chalk.green('ā
Documentation is valid!\n'));
|
|
224
|
+
process.exit(0);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
console.log(chalk.red('ā Documentation has errors.\n'));
|
|
228
|
+
if (!options.autoFix) {
|
|
229
|
+
console.log(chalk.dim(' Try running with --auto-fix to fix common issues.\n'));
|
|
230
|
+
}
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
console.log(chalk.red(`\nā Validation failed:`));
|
|
236
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}\n`));
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Kill all running Docusaurus processes
|
|
242
|
+
*/
|
|
243
|
+
export async function docsKillCommand() {
|
|
244
|
+
console.log(chalk.blue('\nš Stopping Documentation Servers\n'));
|
|
245
|
+
try {
|
|
246
|
+
const { killAllDocusaurusProcesses } = await import('../../utils/docs-preview/index.js');
|
|
247
|
+
const killed = await killAllDocusaurusProcesses();
|
|
248
|
+
if (killed > 0) {
|
|
249
|
+
console.log(chalk.green(`ā
Stopped ${killed} Docusaurus process(es)\n`));
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
console.log(chalk.dim(' No Docusaurus processes running\n'));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
console.log(chalk.red(`\nā Failed to stop processes:`));
|
|
257
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}\n`));
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Show docs status and help
|
|
263
|
+
*/
|
|
264
|
+
export async function docsStatusCommand() {
|
|
265
|
+
const projectRoot = process.cwd();
|
|
266
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
267
|
+
const docsSitePath = path.join(projectRoot, '.specweave', 'docs-site-internal');
|
|
268
|
+
console.log(chalk.blue('\nš SpecWeave Documentation Status\n'));
|
|
269
|
+
// Check docs exist
|
|
270
|
+
const docsExist = fs.existsSync(docsPath);
|
|
271
|
+
const siteSetup = fs.existsSync(path.join(docsSitePath, 'node_modules'));
|
|
272
|
+
console.log(chalk.white(' Status:'));
|
|
273
|
+
console.log(` ⢠Internal docs: ${docsExist ? chalk.green('ā Found') : chalk.red('ā Not found')}`);
|
|
274
|
+
console.log(` ⢠Docusaurus: ${siteSetup ? chalk.green('ā Installed') : chalk.yellow('ā Not installed (will auto-setup)')}`);
|
|
275
|
+
if (docsExist) {
|
|
276
|
+
// Count docs
|
|
277
|
+
const countMd = (dir) => {
|
|
278
|
+
if (!fs.existsSync(dir))
|
|
279
|
+
return 0;
|
|
280
|
+
let count = 0;
|
|
281
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
282
|
+
for (const entry of entries) {
|
|
283
|
+
if (entry.isDirectory()) {
|
|
284
|
+
count += countMd(path.join(dir, entry.name));
|
|
285
|
+
}
|
|
286
|
+
else if (entry.name.endsWith('.md') || entry.name.endsWith('.mdx')) {
|
|
287
|
+
count++;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return count;
|
|
291
|
+
};
|
|
292
|
+
const docCount = countMd(docsPath);
|
|
293
|
+
console.log(` ⢠Documents: ${chalk.cyan(docCount)} files`);
|
|
294
|
+
}
|
|
295
|
+
console.log(chalk.white('\n Commands:'));
|
|
296
|
+
console.log(chalk.dim(' ⢠specweave docs preview - Start dev server with hot reload'));
|
|
297
|
+
console.log(chalk.dim(' ⢠specweave docs build - Build static site for deployment'));
|
|
298
|
+
console.log(chalk.dim(' ⢠specweave docs validate - Check for errors'));
|
|
299
|
+
console.log(chalk.dim(' ⢠specweave docs kill - Stop all running servers'));
|
|
300
|
+
console.log();
|
|
301
|
+
console.log(chalk.white(' Paths:'));
|
|
302
|
+
console.log(chalk.dim(` ⢠Docs source: .specweave/docs/internal/`));
|
|
303
|
+
console.log(chalk.dim(` ⢠Docusaurus: .specweave/docs-site-internal/`));
|
|
304
|
+
console.log(chalk.dim(` ⢠Build output: .specweave/docs-site-internal/build/`));
|
|
305
|
+
console.log();
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../src/cli/commands/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,OAAO,EACL,KAAK,WAAW,EAyBjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,OAAO,EACL,KAAK,WAAW,EAyBjB,MAAM,0BAA0B,CAAC;AAalC,YAAY,EAAE,WAAW,EAAE,CAAC;AAgJ5B;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAigBf"}
|
|
@@ -26,6 +26,8 @@ import { readEnvFile, parseEnvFile } from '../../utils/env-file.js';
|
|
|
26
26
|
// Import helpers
|
|
27
27
|
import { findSourceDir, findPackageRoot, detectNestedSpecweave, detectGitHubRemote, promptSmartReinit, installAllPlugins, setupRepositoryHosting, promptTestingConfig, updateConfigWithTesting, promptLanguageSelection, getDefaultLanguageSelection, promptTranslationConfig, updateConfigWithTranslation, getDefaultTranslationConfig, promptAndRunExternalImport, createDirectoryStructure, copyTemplates, createConfigFile, showNextSteps, generateInitialIncrement, WIZARD_BACK, logGoingBack, } from '../helpers/init/index.js';
|
|
28
28
|
import { triggerAdoRepoCloning } from '../helpers/init/ado-repo-cloning.js';
|
|
29
|
+
import { triggerGitHubRepoCloning } from '../helpers/init/github-repo-cloning.js';
|
|
30
|
+
import { triggerBitbucketRepoCloning } from '../helpers/init/bitbucket-repo-cloning.js';
|
|
29
31
|
import { collectLivingDocsInputs, displayJobScheduled, } from '../helpers/init/living-docs-preflight.js';
|
|
30
32
|
import { launchLivingDocsJob } from '../../core/background/job-launcher.js';
|
|
31
33
|
const __dirname = getDirname(import.meta.url);
|
|
@@ -424,6 +426,20 @@ export async function initCommand(projectName, options = {}) {
|
|
|
424
426
|
pendingJobIds.push(cloneJobId);
|
|
425
427
|
}
|
|
426
428
|
}
|
|
429
|
+
// GitHub Repository cloning (for multi-repo setups) - v0.32.7+
|
|
430
|
+
if (repoResult.githubRepoSelection && repoResult.adoClonePatternResult) {
|
|
431
|
+
const cloneJobId = await triggerGitHubRepoCloning(targetDir, repoResult.githubRepoSelection, repoResult.adoClonePatternResult);
|
|
432
|
+
if (cloneJobId) {
|
|
433
|
+
pendingJobIds.push(cloneJobId);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
// Bitbucket Repository cloning (for multi-repo setups) - v0.32.7+
|
|
437
|
+
if (repoResult.bitbucketRepoSelection && repoResult.adoClonePatternResult) {
|
|
438
|
+
const cloneJobId = await triggerBitbucketRepoCloning(targetDir, repoResult.bitbucketRepoSelection, repoResult.adoClonePatternResult);
|
|
439
|
+
if (cloneJobId) {
|
|
440
|
+
pendingJobIds.push(cloneJobId);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
427
443
|
// Issue tracker setup
|
|
428
444
|
const isFrameworkRepo = await isSpecWeaveFrameworkRepo(targetDir);
|
|
429
445
|
await setupIssueTrackerWrapper(targetDir, language, isFrameworkRepo, repoResult.hosting, isCI, repoResult.adoProjectSelection);
|