@sk8metal/michi-cli 0.5.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +136 -1
- package/README.md +2 -1
- package/dist/scripts/config/config-schema.d.ts +35 -0
- package/dist/scripts/config/config-schema.d.ts.map +1 -1
- package/dist/scripts/config/config-schema.js +56 -0
- package/dist/scripts/config/config-schema.js.map +1 -1
- package/dist/scripts/confluence-sync.d.ts.map +1 -1
- package/dist/scripts/confluence-sync.js +15 -2
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/github-actions-client.d.ts +79 -0
- package/dist/scripts/github-actions-client.d.ts.map +1 -0
- package/dist/scripts/github-actions-client.js +182 -0
- package/dist/scripts/github-actions-client.js.map +1 -0
- package/dist/scripts/health-check-service.d.ts +46 -0
- package/dist/scripts/health-check-service.d.ts.map +1 -0
- package/dist/scripts/health-check-service.js +114 -0
- package/dist/scripts/health-check-service.js.map +1 -0
- package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
- package/dist/scripts/markdown-to-confluence.js +25 -3
- package/dist/scripts/markdown-to-confluence.js.map +1 -1
- package/dist/scripts/mermaid-converter.d.ts +24 -0
- package/dist/scripts/mermaid-converter.d.ts.map +1 -0
- package/dist/scripts/mermaid-converter.js +49 -0
- package/dist/scripts/mermaid-converter.js.map +1 -0
- package/dist/scripts/template/multi-repo-renderer.d.ts +67 -0
- package/dist/scripts/template/multi-repo-renderer.d.ts.map +1 -0
- package/dist/scripts/template/multi-repo-renderer.js +123 -0
- package/dist/scripts/template/multi-repo-renderer.js.map +1 -0
- package/dist/scripts/template/renderer.d.ts +4 -0
- package/dist/scripts/template/renderer.d.ts.map +1 -1
- package/dist/scripts/template/renderer.js.map +1 -1
- package/dist/scripts/test-execution-generator.d.ts.map +1 -1
- package/dist/scripts/test-execution-generator.js +94 -11
- package/dist/scripts/test-execution-generator.js.map +1 -1
- package/dist/scripts/test-script-runner.d.ts +33 -0
- package/dist/scripts/test-script-runner.d.ts.map +1 -0
- package/dist/scripts/test-script-runner.js +77 -0
- package/dist/scripts/test-script-runner.js.map +1 -0
- package/dist/scripts/utils/config-loader.d.ts +21 -1
- package/dist/scripts/utils/config-loader.d.ts.map +1 -1
- package/dist/scripts/utils/config-loader.js +149 -3
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +30 -0
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -0
- package/dist/scripts/utils/multi-repo-validator.js +105 -0
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -0
- package/dist/scripts/utils/spec-archiver.d.ts +38 -0
- package/dist/scripts/utils/spec-archiver.d.ts.map +1 -0
- package/dist/scripts/utils/spec-archiver.js +210 -0
- package/dist/scripts/utils/spec-archiver.js.map +1 -0
- package/dist/scripts/utils/spec-updater.d.ts +4 -0
- package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
- package/dist/scripts/utils/spec-updater.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +262 -14
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/multi-repo-add-repo.d.ts +26 -0
- package/dist/src/commands/multi-repo-add-repo.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-add-repo.js +56 -0
- package/dist/src/commands/multi-repo-add-repo.js.map +1 -0
- package/dist/src/commands/multi-repo-ci-status.d.ts +46 -0
- package/dist/src/commands/multi-repo-ci-status.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-ci-status.js +285 -0
- package/dist/src/commands/multi-repo-ci-status.js.map +1 -0
- package/dist/src/commands/multi-repo-confluence-sync.d.ts +45 -0
- package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-confluence-sync.js +135 -0
- package/dist/src/commands/multi-repo-confluence-sync.js.map +1 -0
- package/dist/src/commands/multi-repo-init.d.ts +26 -0
- package/dist/src/commands/multi-repo-init.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-init.js +101 -0
- package/dist/src/commands/multi-repo-init.js.map +1 -0
- package/dist/src/commands/multi-repo-list.d.ts +28 -0
- package/dist/src/commands/multi-repo-list.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-list.js +38 -0
- package/dist/src/commands/multi-repo-list.js.map +1 -0
- package/dist/src/commands/multi-repo-test.d.ts +56 -0
- package/dist/src/commands/multi-repo-test.d.ts.map +1 -0
- package/dist/src/commands/multi-repo-test.js +70 -0
- package/dist/src/commands/multi-repo-test.js.map +1 -0
- package/dist/src/commands/setup-existing.d.ts.map +1 -1
- package/dist/src/commands/setup-existing.js +30 -8
- package/dist/src/commands/setup-existing.js.map +1 -1
- package/dist/src/commands/spec-archive.d.ts +17 -0
- package/dist/src/commands/spec-archive.d.ts.map +1 -0
- package/dist/src/commands/spec-archive.js +40 -0
- package/dist/src/commands/spec-archive.js.map +1 -0
- package/dist/src/commands/spec-list.d.ts +15 -0
- package/dist/src/commands/spec-list.d.ts.map +1 -0
- package/dist/src/commands/spec-list.js +55 -0
- package/dist/src/commands/spec-list.js.map +1 -0
- package/docs/user-guide/guides/multi-repo-guide.md +591 -0
- package/docs/user-guide/guides/multi-repo-migration-guide.md +516 -0
- package/docs/user-guide/reference/multi-repo-api.md +771 -0
- package/docs/user-guide/reference/quick-reference.md +22 -37
- package/package.json +1 -4
- package/scripts/__tests__/config-loader-multi-repo.test.ts +342 -0
- package/scripts/__tests__/github-actions-client.test.ts +543 -0
- package/scripts/__tests__/health-check-service.test.ts +142 -0
- package/scripts/__tests__/markdown-to-confluence.test.ts +262 -0
- package/scripts/__tests__/mermaid-converter.test.ts +236 -0
- package/scripts/__tests__/multi-repo-config-schema.test.ts +335 -0
- package/scripts/__tests__/multi-repo-validator.test.ts +524 -0
- package/scripts/__tests__/spec-archiver.test.ts +512 -0
- package/scripts/__tests__/test-script-runner.test.ts +217 -0
- package/scripts/config/config-schema.ts +64 -0
- package/scripts/confluence-sync.ts +16 -2
- package/scripts/github-actions-client.ts +258 -0
- package/scripts/health-check-service.ts +171 -0
- package/scripts/markdown-to-confluence.ts +37 -6
- package/scripts/mermaid-converter.ts +56 -0
- package/scripts/template/__tests__/multi-repo-renderer.test.ts +261 -0
- package/scripts/template/multi-repo-renderer.ts +172 -0
- package/scripts/template/renderer.ts +5 -0
- package/scripts/test-execution-generator.ts +104 -11
- package/scripts/test-script-runner.ts +130 -0
- package/scripts/utils/__tests__/config-validator.test.ts +104 -6
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +335 -0
- package/scripts/utils/config-loader.ts +197 -3
- package/scripts/utils/multi-repo-validator.ts +141 -0
- package/scripts/utils/spec-archiver.ts +260 -0
- package/scripts/utils/spec-updater.ts +4 -0
- package/templates/claude/agents/pr-size-monitor/AGENT.md +330 -0
- package/templates/claude/commands/michi/spec-impl.md +208 -35
- package/templates/claude-agent/agents/doc-reviewer.md +176 -0
- package/templates/claude-agent/rules/doc-review-rules.md +98 -0
- package/templates/claude-agent/rules/doc-review.md +91 -0
- package/templates/multi-repo/docs/ci-status.md +51 -0
- package/templates/multi-repo/docs/release-notes.md +99 -0
- package/templates/multi-repo/overview/architecture.md +102 -0
- package/templates/multi-repo/overview/requirements.md +68 -0
- package/templates/multi-repo/overview/sequence.md +79 -0
- package/templates/multi-repo/steering/multi-repo.md +74 -0
- package/templates/multi-repo/tests/strategy.md +89 -0
- package/dist/scripts/__tests__/create-project.test.d.ts +0 -2
- package/dist/scripts/__tests__/create-project.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/create-project.test.js +0 -243
- package/dist/scripts/__tests__/create-project.test.js.map +0 -1
- package/dist/scripts/__tests__/jira-transitions.test.d.ts +0 -5
- package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/jira-transitions.test.js +0 -172
- package/dist/scripts/__tests__/jira-transitions.test.js.map +0 -1
- package/dist/scripts/__tests__/multi-project-estimate.test.d.ts +0 -2
- package/dist/scripts/__tests__/multi-project-estimate.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/multi-project-estimate.test.js +0 -118
- package/dist/scripts/__tests__/multi-project-estimate.test.js.map +0 -1
- package/dist/scripts/__tests__/setup-existing-project.test.d.ts +0 -2
- package/dist/scripts/__tests__/setup-existing-project.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/setup-existing-project.test.js +0 -208
- package/dist/scripts/__tests__/setup-existing-project.test.js.map +0 -1
- package/dist/scripts/__tests__/setup-interactive.test.d.ts +0 -2
- package/dist/scripts/__tests__/setup-interactive.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/setup-interactive.test.js +0 -166
- package/dist/scripts/__tests__/setup-interactive.test.js.map +0 -1
- package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +0 -5
- package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/spec-impl-workflow.test.js +0 -323
- package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +0 -1
- package/dist/scripts/__tests__/spec-loader.test.d.ts +0 -5
- package/dist/scripts/__tests__/spec-loader.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/spec-loader.test.js +0 -153
- package/dist/scripts/__tests__/spec-loader.test.js.map +0 -1
- package/dist/scripts/__tests__/validate-phase.test.d.ts +0 -5
- package/dist/scripts/__tests__/validate-phase.test.d.ts.map +0 -1
- package/dist/scripts/__tests__/validate-phase.test.js +0 -249
- package/dist/scripts/__tests__/validate-phase.test.js.map +0 -1
- package/dist/scripts/constants/__tests__/environments.test.d.ts +0 -2
- package/dist/scripts/constants/__tests__/environments.test.d.ts.map +0 -1
- package/dist/scripts/constants/__tests__/environments.test.js +0 -125
- package/dist/scripts/constants/__tests__/environments.test.js.map +0 -1
- package/dist/scripts/constants/__tests__/languages.test.d.ts +0 -2
- package/dist/scripts/constants/__tests__/languages.test.d.ts.map +0 -1
- package/dist/scripts/constants/__tests__/languages.test.js +0 -82
- package/dist/scripts/constants/__tests__/languages.test.js.map +0 -1
- package/dist/scripts/create-project.d.ts +0 -16
- package/dist/scripts/create-project.d.ts.map +0 -1
- package/dist/scripts/create-project.js +0 -334
- package/dist/scripts/create-project.js.map +0 -1
- package/dist/scripts/list-projects.d.ts +0 -7
- package/dist/scripts/list-projects.d.ts.map +0 -1
- package/dist/scripts/list-projects.js +0 -88
- package/dist/scripts/list-projects.js.map +0 -1
- package/dist/scripts/template/__tests__/renderer.test.d.ts +0 -2
- package/dist/scripts/template/__tests__/renderer.test.d.ts.map +0 -1
- package/dist/scripts/template/__tests__/renderer.test.js +0 -165
- package/dist/scripts/template/__tests__/renderer.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/aidlc-parser.test.js +0 -315
- package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/business-days.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/business-days.test.js +0 -171
- package/dist/scripts/utils/__tests__/business-days.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/config-loader.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/config-loader.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/config-loader.test.js +0 -314
- package/dist/scripts/utils/__tests__/config-loader.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/config-validator.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/config-validator.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/config-validator.test.js +0 -396
- package/dist/scripts/utils/__tests__/config-validator.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/env-config.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/env-config.test.js +0 -216
- package/dist/scripts/utils/__tests__/env-config.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/feature-name-validator.test.js +0 -106
- package/dist/scripts/utils/__tests__/feature-name-validator.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +0 -202
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/project-meta.test.d.ts +0 -6
- package/dist/scripts/utils/__tests__/project-meta.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/project-meta.test.js +0 -154
- package/dist/scripts/utils/__tests__/project-meta.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/security-validator.test.d.ts +0 -6
- package/dist/scripts/utils/__tests__/security-validator.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/security-validator.test.js +0 -219
- package/dist/scripts/utils/__tests__/security-validator.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/spec-updater.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/spec-updater.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/spec-updater.test.js +0 -158
- package/dist/scripts/utils/__tests__/spec-updater.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/tasks-converter.test.js +0 -500
- package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +0 -314
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +0 -1
- package/dist/scripts/utils/__tests__/test-runner.test.d.ts +0 -5
- package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +0 -1
- package/dist/scripts/utils/__tests__/test-runner.test.js +0 -64
- package/dist/scripts/utils/__tests__/test-runner.test.js.map +0 -1
- package/dist/src/__tests__/cli.test.d.ts +0 -5
- package/dist/src/__tests__/cli.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli.test.js +0 -58
- package/dist/src/__tests__/cli.test.js.map +0 -1
- package/dist/src/__tests__/integration/internationalization.test.d.ts +0 -8
- package/dist/src/__tests__/integration/internationalization.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/internationalization.test.js +0 -333
- package/dist/src/__tests__/integration/internationalization.test.js.map +0 -1
- package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +0 -5
- package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/claude-agent.test.js +0 -122
- package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +0 -1
- package/dist/src/__tests__/integration/setup/claude.test.d.ts +0 -5
- package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/claude.test.js +0 -193
- package/dist/src/__tests__/integration/setup/claude.test.js.map +0 -1
- package/dist/src/__tests__/integration/setup/cursor.test.d.ts +0 -5
- package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/cursor.test.js +0 -166
- package/dist/src/__tests__/integration/setup/cursor.test.js.map +0 -1
- package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +0 -32
- package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +0 -72
- package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +0 -1
- package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +0 -38
- package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/helpers/test-project.js +0 -83
- package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +0 -1
- package/dist/src/__tests__/integration/setup/init.test.d.ts +0 -5
- package/dist/src/__tests__/integration/setup/init.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/init.test.js +0 -352
- package/dist/src/__tests__/integration/setup/init.test.js.map +0 -1
- package/dist/src/__tests__/integration/setup/validation.test.d.ts +0 -5
- package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +0 -1
- package/dist/src/__tests__/integration/setup/validation.test.js +0 -301
- package/dist/src/__tests__/integration/setup/validation.test.js.map +0 -1
- package/dist/src/commands/__tests__/init.test.d.ts +0 -5
- package/dist/src/commands/__tests__/init.test.d.ts.map +0 -1
- package/dist/src/commands/__tests__/init.test.js +0 -255
- package/dist/src/commands/__tests__/init.test.js.map +0 -1
- package/dist/src/commands/__tests__/migrate.test.d.ts +0 -5
- package/dist/src/commands/__tests__/migrate.test.d.ts.map +0 -1
- package/dist/src/commands/__tests__/migrate.test.js +0 -216
- package/dist/src/commands/__tests__/migrate.test.js.map +0 -1
- package/scripts/create-project.ts +0 -386
- package/scripts/list-projects.ts +0 -112
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Actions Client
|
|
3
|
+
* GitHub Actions APIへのアクセスを抽象化し、Workflow Runsの取得とレート制限対策を提供
|
|
4
|
+
*/
|
|
5
|
+
import { Octokit } from '@octokit/rest';
|
|
6
|
+
/**
|
|
7
|
+
* GitHub Workflow Runを解析してCI結果に変換
|
|
8
|
+
* @param run GitHub Workflow Run情報
|
|
9
|
+
* @returns CI結果
|
|
10
|
+
*/
|
|
11
|
+
export function parseGitHubWorkflowRun(run) {
|
|
12
|
+
// statusマッピング
|
|
13
|
+
let status;
|
|
14
|
+
let testStatus;
|
|
15
|
+
if (run.status === 'completed') {
|
|
16
|
+
if (run.conclusion === 'success') {
|
|
17
|
+
status = 'success';
|
|
18
|
+
testStatus = 'passed';
|
|
19
|
+
}
|
|
20
|
+
else if (run.conclusion === 'failure') {
|
|
21
|
+
status = 'failure';
|
|
22
|
+
testStatus = 'failed';
|
|
23
|
+
}
|
|
24
|
+
else if (run.conclusion === 'cancelled') {
|
|
25
|
+
status = 'unknown';
|
|
26
|
+
testStatus = 'skipped';
|
|
27
|
+
}
|
|
28
|
+
else if (run.conclusion === 'skipped') {
|
|
29
|
+
status = 'unknown';
|
|
30
|
+
testStatus = 'skipped';
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
status = 'unknown';
|
|
34
|
+
testStatus = 'unknown';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (run.status === 'in_progress' || run.status === 'queued') {
|
|
38
|
+
status = 'running';
|
|
39
|
+
testStatus = 'unknown';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
status = 'unknown';
|
|
43
|
+
testStatus = 'unknown';
|
|
44
|
+
}
|
|
45
|
+
// 日時変換
|
|
46
|
+
const lastExecutionTime = new Date(run.updated_at);
|
|
47
|
+
// 失敗詳細
|
|
48
|
+
const failureDetails = status === 'failure' ? run.html_url : undefined;
|
|
49
|
+
return {
|
|
50
|
+
status,
|
|
51
|
+
testStatus,
|
|
52
|
+
lastExecutionTime,
|
|
53
|
+
failureDetails,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Exponential Backoffで再試行
|
|
58
|
+
* @param fn 実行する関数
|
|
59
|
+
* @param maxRetries 最大再試行回数
|
|
60
|
+
* @returns 関数の実行結果
|
|
61
|
+
*/
|
|
62
|
+
async function exponentialBackoff(fn, maxRetries = 3) {
|
|
63
|
+
let lastError;
|
|
64
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
65
|
+
try {
|
|
66
|
+
return await fn();
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const octokitError = error;
|
|
70
|
+
lastError = octokitError;
|
|
71
|
+
// レート制限エラーでない場合は即座にスロー
|
|
72
|
+
if (octokitError.status !== 403 || !octokitError.response?.headers) {
|
|
73
|
+
throw octokitError;
|
|
74
|
+
}
|
|
75
|
+
// 最後の試行の場合はスロー
|
|
76
|
+
if (attempt === maxRetries - 1) {
|
|
77
|
+
throw octokitError;
|
|
78
|
+
}
|
|
79
|
+
// Exponential Backoff: 1秒、2秒、4秒
|
|
80
|
+
const waitTime = Math.pow(2, attempt) * 1000;
|
|
81
|
+
await new Promise((resolve) => setTimeout(resolve, waitTime));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
throw lastError ?? new Error('Unexpected error in exponentialBackoff');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* GitHub Actions Client
|
|
88
|
+
*/
|
|
89
|
+
export class GitHubActionsClient {
|
|
90
|
+
octokit;
|
|
91
|
+
constructor() {
|
|
92
|
+
const token = process.env.GITHUB_TOKEN;
|
|
93
|
+
if (!token) {
|
|
94
|
+
throw new Error('GITHUB_TOKENが設定されていません');
|
|
95
|
+
}
|
|
96
|
+
this.octokit = new Octokit({
|
|
97
|
+
auth: token,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* リポジトリの最新Workflow Runを取得
|
|
102
|
+
* @param owner リポジトリオーナー
|
|
103
|
+
* @param repo リポジトリ名
|
|
104
|
+
* @param branch ブランチ名
|
|
105
|
+
* @returns Workflow Run情報(成功/失敗)
|
|
106
|
+
*/
|
|
107
|
+
async getLatestWorkflowRun(owner, repo, branch) {
|
|
108
|
+
try {
|
|
109
|
+
const response = await exponentialBackoff(async () => {
|
|
110
|
+
return await this.octokit.actions.listWorkflowRunsForRepo({
|
|
111
|
+
owner,
|
|
112
|
+
repo,
|
|
113
|
+
branch,
|
|
114
|
+
status: 'completed',
|
|
115
|
+
per_page: 1,
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
if (!response.data.workflow_runs ||
|
|
119
|
+
response.data.workflow_runs.length === 0) {
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
error: {
|
|
123
|
+
type: 'NOT_FOUND',
|
|
124
|
+
message: `リポジトリ ${owner}/${repo} のWorkflow Runが見つかりません`,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const run = response.data.workflow_runs[0];
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
data: run,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
// エラーハンドリング
|
|
136
|
+
const octokitError = error;
|
|
137
|
+
if (octokitError.status === 404) {
|
|
138
|
+
return {
|
|
139
|
+
success: false,
|
|
140
|
+
error: {
|
|
141
|
+
type: 'NOT_FOUND',
|
|
142
|
+
message: octokitError.message || 'リポジトリが見つかりません',
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
else if (octokitError.status === 403) {
|
|
147
|
+
// レート制限
|
|
148
|
+
const resetTime = octokitError.response?.headers?.['x-ratelimit-reset'];
|
|
149
|
+
const retryAfter = resetTime
|
|
150
|
+
? parseInt(resetTime, 10) - Math.floor(Date.now() / 1000)
|
|
151
|
+
: 3600;
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
error: {
|
|
155
|
+
type: 'RATE_LIMIT_EXCEEDED',
|
|
156
|
+
retryAfter: Math.max(retryAfter, 0),
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
else if (octokitError.status === 401) {
|
|
161
|
+
return {
|
|
162
|
+
success: false,
|
|
163
|
+
error: {
|
|
164
|
+
type: 'UNAUTHORIZED',
|
|
165
|
+
message: octokitError.message || '認証エラー',
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
return {
|
|
171
|
+
success: false,
|
|
172
|
+
error: {
|
|
173
|
+
type: 'SERVER_ERROR',
|
|
174
|
+
message: octokitError.message || 'サーバーエラー',
|
|
175
|
+
statusCode: octokitError.status || 500,
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=github-actions-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-actions-client.js","sourceRoot":"","sources":["../../scripts/github-actions-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ヘルスチェックサービス
|
|
3
|
+
* 依存サービスの状態を確認してテスト実行前の環境チェックを行う
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* サービスステータス
|
|
7
|
+
*/
|
|
8
|
+
export interface ServiceStatus {
|
|
9
|
+
serviceName: string;
|
|
10
|
+
status: 'healthy' | 'unhealthy';
|
|
11
|
+
message?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ヘルスチェック結果
|
|
15
|
+
*/
|
|
16
|
+
export interface HealthCheckResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
servicesStatus: ServiceStatus[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* ヘルスチェックサービス
|
|
22
|
+
*/
|
|
23
|
+
export declare class HealthCheckService {
|
|
24
|
+
/**
|
|
25
|
+
* ヘルスチェックを実行
|
|
26
|
+
*
|
|
27
|
+
* @param projectName プロジェクト名
|
|
28
|
+
* @param projectRoot プロジェクトルートディレクトリ(デフォルト: process.cwd())
|
|
29
|
+
* @returns ヘルスチェック結果
|
|
30
|
+
*/
|
|
31
|
+
runHealthCheck(projectName: string, projectRoot?: string): Promise<HealthCheckResult>;
|
|
32
|
+
/**
|
|
33
|
+
* ヘルスチェックスクリプトの出力を解析
|
|
34
|
+
*
|
|
35
|
+
* 出力形式:
|
|
36
|
+
* ```
|
|
37
|
+
* service-name: healthy
|
|
38
|
+
* service-name: unhealthy - error message
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @param output スクリプト出力
|
|
42
|
+
* @returns サービスステータス配列
|
|
43
|
+
*/
|
|
44
|
+
private parseHealthCheckOutput;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=health-check-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-service.d.ts","sourceRoot":"","sources":["../../scripts/health-check-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAWD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;;;OAMG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,iBAAiB,CAAC;IAsF7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;CAuB/B"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ヘルスチェックサービス
|
|
3
|
+
* 依存サービスの状態を確認してテスト実行前の環境チェックを行う
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
/**
|
|
9
|
+
* ヘルスチェックサービス
|
|
10
|
+
*/
|
|
11
|
+
export class HealthCheckService {
|
|
12
|
+
/**
|
|
13
|
+
* ヘルスチェックを実行
|
|
14
|
+
*
|
|
15
|
+
* @param projectName プロジェクト名
|
|
16
|
+
* @param projectRoot プロジェクトルートディレクトリ(デフォルト: process.cwd())
|
|
17
|
+
* @returns ヘルスチェック結果
|
|
18
|
+
*/
|
|
19
|
+
async runHealthCheck(projectName, projectRoot = process.cwd()) {
|
|
20
|
+
// 1. ヘルスチェックスクリプトの存在確認
|
|
21
|
+
const scriptPath = join(projectRoot, 'docs', 'michi', projectName, 'tests', 'scripts', 'health-check.sh');
|
|
22
|
+
if (!existsSync(scriptPath)) {
|
|
23
|
+
console.log(`ℹ️ ヘルスチェックスクリプトが見つかりません: ${scriptPath}。ヘルスチェックをスキップします。`);
|
|
24
|
+
return {
|
|
25
|
+
success: true,
|
|
26
|
+
servicesStatus: [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// 2. ヘルスチェックスクリプトを実行
|
|
30
|
+
try {
|
|
31
|
+
console.log('🔍 ヘルスチェックを実行中...');
|
|
32
|
+
const output = execSync(scriptPath, {
|
|
33
|
+
encoding: 'utf-8',
|
|
34
|
+
timeout: 30000, // 30秒タイムアウト
|
|
35
|
+
});
|
|
36
|
+
// 3. スクリプト出力を解析
|
|
37
|
+
const servicesStatus = this.parseHealthCheckOutput(output);
|
|
38
|
+
// 4. unhealthyなサービスがある場合は失敗
|
|
39
|
+
const hasUnhealthyServices = servicesStatus.some((s) => s.status === 'unhealthy');
|
|
40
|
+
if (hasUnhealthyServices) {
|
|
41
|
+
console.log('❌ ヘルスチェックが失敗しました');
|
|
42
|
+
servicesStatus.forEach((s) => {
|
|
43
|
+
const icon = s.status === 'healthy' ? '✅' : '❌';
|
|
44
|
+
const message = s.message ? ` - ${s.message}` : '';
|
|
45
|
+
console.log(` ${icon} ${s.serviceName}: ${s.status}${message}`);
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
success: false,
|
|
49
|
+
servicesStatus,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
console.log('✅ ヘルスチェックが成功しました');
|
|
53
|
+
servicesStatus.forEach((s) => {
|
|
54
|
+
console.log(` ✅ ${s.serviceName}: ${s.status}`);
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
success: true,
|
|
58
|
+
servicesStatus,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
// スクリプト実行エラー
|
|
63
|
+
const execError = error;
|
|
64
|
+
console.error('❌ ヘルスチェックスクリプトの実行に失敗しました:', execError.message);
|
|
65
|
+
if (execError.status !== undefined && execError.status !== 0) {
|
|
66
|
+
// 終了コードが非0の場合は失敗
|
|
67
|
+
const output = execError.stdout || execError.stderr || '';
|
|
68
|
+
const outputStr = Buffer.isBuffer(output) ? output.toString('utf-8') : String(output);
|
|
69
|
+
const servicesStatus = this.parseHealthCheckOutput(outputStr);
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
servicesStatus,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// その他のエラー(タイムアウト、パーミッションエラーなど)
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
servicesStatus: [],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* ヘルスチェックスクリプトの出力を解析
|
|
84
|
+
*
|
|
85
|
+
* 出力形式:
|
|
86
|
+
* ```
|
|
87
|
+
* service-name: healthy
|
|
88
|
+
* service-name: unhealthy - error message
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @param output スクリプト出力
|
|
92
|
+
* @returns サービスステータス配列
|
|
93
|
+
*/
|
|
94
|
+
parseHealthCheckOutput(output) {
|
|
95
|
+
const servicesStatus = [];
|
|
96
|
+
const lines = output.trim().split('\n');
|
|
97
|
+
for (const line of lines) {
|
|
98
|
+
const match = line.match(/^(\S+):\s+(healthy|unhealthy)(?:\s+-\s+(.+))?$/);
|
|
99
|
+
if (!match) {
|
|
100
|
+
continue; // 不正な形式の行はスキップ
|
|
101
|
+
}
|
|
102
|
+
const serviceName = match[1];
|
|
103
|
+
const status = match[2];
|
|
104
|
+
const message = match[3];
|
|
105
|
+
servicesStatus.push({
|
|
106
|
+
serviceName,
|
|
107
|
+
status,
|
|
108
|
+
message,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return servicesStatus;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=health-check-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-service.js","sourceRoot":"","sources":["../../scripts/health-check-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-to-confluence.d.ts","sourceRoot":"","sources":["../../scripts/markdown-to-confluence.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"markdown-to-confluence.d.ts","sourceRoot":"","sources":["../../scripts/markdown-to-confluence.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiCpE;AAuFD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CA0B3E"}
|
|
@@ -11,12 +11,27 @@ const md = new MarkdownIt({
|
|
|
11
11
|
* Markdown を Confluence Storage Format (HTML) に変換
|
|
12
12
|
*/
|
|
13
13
|
export function convertMarkdownToConfluence(markdown) {
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
// 1. Mermaidブロックをプレースホルダーに置き換え
|
|
15
|
+
const mermaidBlocks = [];
|
|
16
|
+
const withPlaceholders = markdown.replace(/```mermaid\n([\s\S]*?)```/g, (match, diagram) => {
|
|
17
|
+
const placeholder = `<!--MERMAID_BLOCK_${mermaidBlocks.length}-->`;
|
|
18
|
+
mermaidBlocks.push(diagram.trim());
|
|
19
|
+
return placeholder;
|
|
20
|
+
});
|
|
21
|
+
// 2. MarkdownIt でHTMLに変換
|
|
22
|
+
let html = md.render(withPlaceholders);
|
|
23
|
+
// 3. Confluence固有の変換
|
|
17
24
|
html = convertCodeBlocks(html);
|
|
18
25
|
html = convertTables(html);
|
|
19
26
|
html = convertInfoBoxes(html);
|
|
27
|
+
// 4. プレースホルダーをConfluenceマクロに戻す
|
|
28
|
+
html = html.replace(/<!--MERMAID_BLOCK_(\d+)-->/g, (match, index) => {
|
|
29
|
+
const diagram = mermaidBlocks[parseInt(index)];
|
|
30
|
+
const escapedDiagram = escapeCDATA(diagram);
|
|
31
|
+
return `<ac:structured-macro ac:name="mermaid">
|
|
32
|
+
<ac:plain-text-body><![CDATA[${escapedDiagram}]]></ac:plain-text-body>
|
|
33
|
+
</ac:structured-macro>`;
|
|
34
|
+
});
|
|
20
35
|
return html;
|
|
21
36
|
}
|
|
22
37
|
/**
|
|
@@ -79,6 +94,13 @@ function decodeHtmlEntities(text) {
|
|
|
79
94
|
return entities[entity] || entity;
|
|
80
95
|
});
|
|
81
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* CDATA内の ]]> をエスケープ
|
|
99
|
+
*/
|
|
100
|
+
function escapeCDATA(text) {
|
|
101
|
+
// ]]> を ]]]]><![CDATA[> に置換してエスケープ
|
|
102
|
+
return text.replace(/]]>/g, ']]]]><![CDATA[>');
|
|
103
|
+
}
|
|
82
104
|
export function createConfluencePage(options) {
|
|
83
105
|
const { githubUrl, content, approvers = ['企画', '部長'], projectName } = options;
|
|
84
106
|
const approversList = approvers.map(a => a.startsWith('@') ? a : `@${a}`).join(',');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-to-confluence.js","sourceRoot":"","sources":["../../scripts/markdown-to-confluence.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC;IACxB,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,
|
|
1
|
+
{"version":3,"file":"markdown-to-confluence.js","sourceRoot":"","sources":["../../scripts/markdown-to-confluence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MermaidダイアグラムをConfluenceマクロ形式に変換
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* MermaidConverter
|
|
6
|
+
* MarkdownテキストからMermaidブロックを検出し、Confluenceマクロ形式に変換
|
|
7
|
+
*/
|
|
8
|
+
export declare class MermaidConverter {
|
|
9
|
+
/**
|
|
10
|
+
* MarkdownテキストからMermaidブロックをConfluenceマクロ形式に変換
|
|
11
|
+
*
|
|
12
|
+
* @param markdown Markdownテキスト
|
|
13
|
+
* @returns 変換後のテキスト
|
|
14
|
+
*/
|
|
15
|
+
convertMermaidToConfluence(markdown: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* CDATA内の ]]> をエスケープ
|
|
18
|
+
*
|
|
19
|
+
* @param text テキスト
|
|
20
|
+
* @returns エスケープ後のテキスト
|
|
21
|
+
*/
|
|
22
|
+
private escapeCDATA;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mermaid-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-converter.d.ts","sourceRoot":"","sources":["../../scripts/mermaid-converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IA8BpD;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MermaidダイアグラムをConfluenceマクロ形式に変換
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* MermaidConverter
|
|
6
|
+
* MarkdownテキストからMermaidブロックを検出し、Confluenceマクロ形式に変換
|
|
7
|
+
*/
|
|
8
|
+
export class MermaidConverter {
|
|
9
|
+
/**
|
|
10
|
+
* MarkdownテキストからMermaidブロックをConfluenceマクロ形式に変換
|
|
11
|
+
*
|
|
12
|
+
* @param markdown Markdownテキスト
|
|
13
|
+
* @returns 変換後のテキスト
|
|
14
|
+
*/
|
|
15
|
+
convertMermaidToConfluence(markdown) {
|
|
16
|
+
// Mermaidブロックを検出する正規表現
|
|
17
|
+
// ```mermaid\n([\s\S]*?)\n```
|
|
18
|
+
const mermaidBlockRegex = /```mermaid\n([\s\S]*?)```/g;
|
|
19
|
+
// Mermaidブロックを検出
|
|
20
|
+
const matches = Array.from(markdown.matchAll(mermaidBlockRegex));
|
|
21
|
+
// Mermaidブロックがない場合は変更なし
|
|
22
|
+
if (matches.length === 0) {
|
|
23
|
+
return markdown;
|
|
24
|
+
}
|
|
25
|
+
// Mermaidブロックを Confluence マクロ形式に変換
|
|
26
|
+
const converted = markdown.replace(mermaidBlockRegex, (match, diagram) => {
|
|
27
|
+
// 前後の空白を削除
|
|
28
|
+
const trimmedDiagram = diagram.trim();
|
|
29
|
+
// CDATA終了マーカー ]]> をエスケープ
|
|
30
|
+
const escapedDiagram = this.escapeCDATA(trimmedDiagram);
|
|
31
|
+
// Confluenceマクロ形式に変換
|
|
32
|
+
return `<ac:structured-macro ac:name="mermaid">
|
|
33
|
+
<ac:plain-text-body><![CDATA[${escapedDiagram}]]></ac:plain-text-body>
|
|
34
|
+
</ac:structured-macro>`;
|
|
35
|
+
});
|
|
36
|
+
return converted;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* CDATA内の ]]> をエスケープ
|
|
40
|
+
*
|
|
41
|
+
* @param text テキスト
|
|
42
|
+
* @returns エスケープ後のテキスト
|
|
43
|
+
*/
|
|
44
|
+
escapeCDATA(text) {
|
|
45
|
+
// ]]> を ]]]]><![CDATA[> に置換してエスケープ
|
|
46
|
+
return text.replace(/]]>/g, ']]]]><![CDATA[>');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=mermaid-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-converter.js","sourceRoot":"","sources":["../../scripts/mermaid-converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;;;;OAKG;IACH,0BAA0B,CAAC,QAAgB;QACzC,uBAAuB;QACvB,8BAA8B;QAC9B,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;QAEvD,iBAAiB;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjE,wBAAwB;QACxB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,mCAAmC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACvE,WAAW;YACX,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAEtC,yBAAyB;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAExD,qBAAqB;YACrB,OAAO;iCACoB,cAAc;uBACxB,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAY;QAC9B,mCAAmC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Repo template renderer
|
|
3
|
+
*
|
|
4
|
+
* Provides template rendering functionality for Multi-Repo projects
|
|
5
|
+
*/
|
|
6
|
+
export interface MultiRepoTemplateContext {
|
|
7
|
+
PROJECT_NAME: string;
|
|
8
|
+
JIRA_KEY: string;
|
|
9
|
+
CONFLUENCE_SPACE: string;
|
|
10
|
+
CREATED_AT: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create Multi-Repo template context
|
|
14
|
+
*
|
|
15
|
+
* @param projectName - Project name
|
|
16
|
+
* @param jiraKey - JIRA project key
|
|
17
|
+
* @param confluenceSpace - Confluence space key
|
|
18
|
+
* @param createdAt - Created timestamp (ISO 8601 format)
|
|
19
|
+
* @returns Multi-Repo template context
|
|
20
|
+
*/
|
|
21
|
+
export declare const createMultiRepoTemplateContext: (projectName: string, jiraKey: string, confluenceSpace: string, createdAt?: string) => MultiRepoTemplateContext;
|
|
22
|
+
/**
|
|
23
|
+
* Load Multi-Repo template file
|
|
24
|
+
*
|
|
25
|
+
* Security: Path traversal prevention with three-layer validation:
|
|
26
|
+
* 1. Validate template name (no path separators)
|
|
27
|
+
* 2. Resolve absolute paths
|
|
28
|
+
* 3. Verify path containment
|
|
29
|
+
*
|
|
30
|
+
* @param templateName - Template name (e.g., "overview/requirements", "steering/multi-repo")
|
|
31
|
+
* @param projectRoot - Project root directory
|
|
32
|
+
* @returns Template content
|
|
33
|
+
* @throws {Error} If template file not found or path traversal detected
|
|
34
|
+
*/
|
|
35
|
+
export declare const loadMultiRepoTemplate: (templateName: string, projectRoot?: string) => string;
|
|
36
|
+
/**
|
|
37
|
+
* Render Multi-Repo template with placeholder replacement
|
|
38
|
+
*
|
|
39
|
+
* @param template - Template string
|
|
40
|
+
* @param context - Multi-Repo template context
|
|
41
|
+
* @returns Rendered template string
|
|
42
|
+
*/
|
|
43
|
+
export declare const renderMultiRepoTemplate: (template: string, context: MultiRepoTemplateContext) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Load and render Multi-Repo template
|
|
46
|
+
*
|
|
47
|
+
* @param templateName - Template name
|
|
48
|
+
* @param context - Multi-Repo template context
|
|
49
|
+
* @param projectRoot - Project root directory
|
|
50
|
+
* @returns Rendered template string
|
|
51
|
+
*/
|
|
52
|
+
export declare const loadAndRenderMultiRepoTemplate: (templateName: string, context: MultiRepoTemplateContext, projectRoot?: string) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Batch render multiple Multi-Repo templates
|
|
55
|
+
*
|
|
56
|
+
* @param templateNames - Array of template names
|
|
57
|
+
* @param context - Multi-Repo template context
|
|
58
|
+
* @param projectRoot - Project root directory
|
|
59
|
+
* @returns Map of template names to rendered strings
|
|
60
|
+
*/
|
|
61
|
+
export declare const renderMultiRepoTemplates: (templateNames: string[], context: MultiRepoTemplateContext, projectRoot?: string) => Record<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* List of all Multi-Repo template names
|
|
64
|
+
*/
|
|
65
|
+
export declare const MULTI_REPO_TEMPLATES: readonly ["overview/requirements", "overview/architecture", "overview/sequence", "steering/multi-repo", "tests/strategy", "docs/ci-status", "docs/release-notes"];
|
|
66
|
+
export type MultiRepoTemplateName = typeof MULTI_REPO_TEMPLATES[number];
|
|
67
|
+
//# sourceMappingURL=multi-repo-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-repo-renderer.d.ts","sourceRoot":"","sources":["../../../scripts/template/multi-repo-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GACzC,aAAa,MAAM,EACnB,SAAS,MAAM,EACf,iBAAiB,MAAM,EACvB,YAAY,MAAM,KACjB,wBAKD,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,EACpB,cAAa,MAAsB,KAClC,MAiCF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,SAAS,wBAAwB,KAChC,MAcF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GACzC,cAAc,MAAM,EACpB,SAAS,wBAAwB,EACjC,cAAa,MAAsB,KAClC,MAGF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EAAE,EACvB,SAAS,wBAAwB,EACjC,cAAa,MAAsB,KAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAYvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,mKAQvB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC"}
|