@k2works/claude-code-booster 1.10.0 → 1.11.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.
Files changed (93) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +42 -42
  3. package/bin/claude-code-booster +79 -79
  4. package/lib/assets/.claude/README.md +162 -162
  5. package/lib/assets/.claude/SKILLS_TEMPLATE.md +100 -100
  6. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  7. package/lib/assets/.claude/settings.json +11 -11
  8. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +119 -119
  9. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +87 -87
  10. package/lib/assets/.claude/skills/analyzing-business/SKILL.md +117 -117
  11. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +80 -80
  12. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +88 -88
  13. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +137 -137
  14. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +91 -91
  15. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +91 -91
  16. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +89 -87
  17. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +102 -102
  18. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +87 -87
  19. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +86 -86
  20. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +87 -87
  21. package/lib/assets/.claude/skills/creating-adr/SKILL.md +115 -115
  22. package/lib/assets/.claude/skills/developing-backend/SKILL.md +106 -106
  23. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +96 -96
  24. package/lib/assets/.claude/skills/developing-release/SKILL.md +154 -154
  25. package/lib/assets/.claude/skills/generating-slides/SKILL.md +136 -136
  26. package/lib/assets/.claude/skills/git-commit/SKILL.md +106 -106
  27. package/lib/assets/.claude/skills/killing-processes/SKILL.md +98 -98
  28. package/lib/assets/.claude/skills/managing-docs/SKILL.md +200 -200
  29. package/lib/assets/.claude/skills/managing-operations/DEPLOY.md +77 -77
  30. package/lib/assets/.claude/skills/managing-operations/SETUP_CSHARP.md +80 -80
  31. package/lib/assets/.claude/skills/managing-operations/SETUP_FRONTEND.md +84 -84
  32. package/lib/assets/.claude/skills/managing-operations/SETUP_JAVA.md +75 -75
  33. package/lib/assets/.claude/skills/managing-operations/SKILL.md +156 -156
  34. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +134 -134
  35. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +243 -243
  36. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +193 -193
  37. package/lib/assets/.claude/skills/planning-releases/SKILL.md +222 -222
  38. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +164 -164
  39. package/lib/assets/.devcontainer/devcontainer.json +34 -34
  40. package/lib/assets/.env.example +17 -17
  41. package/lib/assets/.gitattributes +4 -4
  42. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  43. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  44. package/lib/assets/AGENTS.md +94 -94
  45. package/lib/assets/CLAUDE.md +162 -162
  46. package/lib/assets/README.md +285 -269
  47. package/lib/assets/docker-compose.yml +33 -33
  48. package/lib/assets/docs/assets/css/extra.css +29 -29
  49. package/lib/assets/docs/assets/js/extra.js +44 -44
  50. package/lib/assets/docs/index.md +14 -14
  51. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +532 -532
  52. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +341 -341
  53. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +578 -578
  54. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +465 -465
  55. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +448 -448
  56. package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +242 -242
  57. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2216 -2216
  58. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1878 -1878
  59. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +554 -554
  60. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +705 -705
  61. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +1313 -1313
  62. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +311 -311
  63. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +599 -599
  64. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +528 -528
  65. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +682 -682
  66. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +442 -442
  67. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273/343/202/254/343/202/244/343/203/211.md +558 -558
  68. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +663 -663
  69. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1248 -1248
  70. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +392 -392
  71. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +235 -235
  72. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1236 -1236
  73. package/lib/assets/docs/template/ADR.md +30 -30
  74. package/lib/assets/docs/template/README.md +50 -50
  75. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +12 -12
  76. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +58 -58
  77. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +13 -13
  78. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +379 -379
  79. package/lib/assets/docs/template//345/256/214/345/205/250/345/275/242/345/274/217/343/201/256/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +68 -68
  80. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  81. package/lib/assets/docs/template//350/250/255/350/250/210.md +163 -163
  82. package/lib/assets/gulpfile.js +23 -23
  83. package/lib/assets/mkdocs.yml +65 -65
  84. package/lib/assets/ops/docker/mkdoc/Dockerfile +19 -19
  85. package/lib/assets/ops/scripts/journal.js +180 -180
  86. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  87. package/lib/assets/ops/scripts/release.js +431 -431
  88. package/lib/assets/ops/scripts/ssh.js +190 -190
  89. package/lib/assets/ops/scripts/vault.js +299 -299
  90. package/lib/assets/package-lock.json +1653 -1653
  91. package/lib/assets/package.json +40 -40
  92. package/lib/gulpfile.js +37 -37
  93. package/package.json +41 -41
@@ -1,180 +1,180 @@
1
- 'use strict';
2
-
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { execSync } from 'child_process';
6
-
7
- // Increase buffer to safely handle large diffs/logs
8
- const MAX_BUFFER = 256 * 1024 * 1024; // 256 MB
9
-
10
- // Function to register the journal:generate task
11
- export default function(gulp) {
12
- // Helper function to generate journal for a specific date
13
- const generateJournalForDate = (dateStr, journalDir) => {
14
- // Format date as YYYYMMDD
15
- const dateObj = new Date(dateStr);
16
- const formattedDate = dateObj.toISOString().slice(0, 10).replace(/-/g, '');
17
-
18
- // File path for this date's journal
19
- const journalFile = path.join(journalDir, `${formattedDate}.md`);
20
-
21
- // Get commits for this date
22
- const commits = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h %s%n%b"`, { maxBuffer: MAX_BUFFER }).toString();
23
-
24
- // Skip if no commits
25
- if (!commits.trim()) {
26
- console.log(`No commits found for ${dateStr}`);
27
- return false;
28
- }
29
-
30
- // Get detailed changes for each commit on this date
31
- const commitHashesOutput = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h"`, { maxBuffer: MAX_BUFFER }).toString();
32
- const commitHashes = commitHashesOutput.split('\n').map(line => line.trim()).filter(Boolean);
33
-
34
- const detailedCommits = [];
35
-
36
- commitHashes.forEach(hash => {
37
- // Get commit details
38
- const commitMessage = execSync(`git show -s --format="%s%n%b" ${hash}`, { maxBuffer: MAX_BUFFER }).toString().trim();
39
-
40
- // Get files changed
41
- const filesChangedOutput = execSync(`git show --name-status ${hash}`, { maxBuffer: MAX_BUFFER }).toString();
42
- const filesChanged = filesChangedOutput.split('\n')
43
- .map(line => line.trim())
44
- .filter(line => /^[AMDRT]\s/.test(line));
45
-
46
- // Get code changes (diff) with robust handling for large diffs
47
- let diff = '';
48
- try {
49
- diff = execSync(`git show ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
50
- } catch (e) {
51
- // Fallback to a summary if diff is too large or any error occurs
52
- const summary = execSync(`git show --stat --oneline ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
53
- diff = `[Diff too large or failed to load. Showing summary instead.]\n\n${summary}`;
54
- }
55
-
56
- detailedCommits.push({
57
- hash,
58
- message: commitMessage,
59
- filesChanged,
60
- diff
61
- });
62
- });
63
-
64
- // Create journal content
65
- let content = `# 作業履歴 ${dateStr}\n\n`;
66
- content += `## 概要\n\n`;
67
- content += `${dateStr}の作業内容をまとめています。\n\n`;
68
-
69
- // Add each commit
70
- detailedCommits.forEach(commit => {
71
- content += `## コミット: ${commit.hash}\n\n`;
72
- content += `### メッセージ\n\n`;
73
- content += `\`\`\`\n${commit.message}\n\`\`\`\n\n`;
74
-
75
- content += `### 変更されたファイル\n\n`;
76
- commit.filesChanged.forEach(file => {
77
- content += `- ${file}\n`;
78
- });
79
- content += `\n`;
80
-
81
- content += `### 変更内容\n\n`;
82
- content += `\`\`\`diff\n${commit.diff}\n\`\`\`\n\n`;
83
-
84
- // Add PlantUML diagram placeholder if there are significant structural changes
85
- const hasStructuralChanges = commit.filesChanged.some(f =>
86
- f.endsWith('.rb') &&
87
- (f.includes('model') || f.includes('controller') || f.includes('service'))
88
- );
89
-
90
- if (hasStructuralChanges) {
91
- content += `### 構造変更\n\n`;
92
- content += `\`\`\`plantuml\n@startuml\n`;
93
- content += `' このコミットによる構造変更を表すダイアグラムをここに追加してください\n`;
94
- content += `' 例:\n`;
95
- content += `' class NewClass\n`;
96
- content += `' class ExistingClass\n`;
97
- content += `' NewClass --> ExistingClass\n`;
98
- content += `@enduml\n\`\`\`\n\n`;
99
- }
100
- });
101
-
102
- // Write to file
103
- fs.writeFileSync(journalFile, content);
104
- console.log(`Created journal entry for ${dateStr} at ${journalFile}`);
105
- return true;
106
- };
107
-
108
- // Journal generation task for a specific date
109
- gulp.task('journal:generate:date', (done) => {
110
- // Get date from command line arguments
111
- const args = process.argv.slice(3);
112
- const dateArg = args.find(arg => arg.startsWith('--date='));
113
-
114
- if (!dateArg) {
115
- console.error('Error: Please provide a date using --date=YYYY-MM-DD format');
116
- done();
117
- return;
118
- }
119
-
120
- const dateStr = dateArg.split('=')[1];
121
-
122
- // Validate date format
123
- if (!/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) {
124
- console.error('Error: Date must be in YYYY-MM-DD format');
125
- done();
126
- return;
127
- }
128
-
129
- // Directory to store journal entries
130
- const journalDir = path.join('docs', 'journal');
131
-
132
- // Create directory if it doesn't exist
133
- if (!fs.existsSync(journalDir)) {
134
- fs.mkdirSync(journalDir, { recursive: true });
135
- }
136
-
137
- const result = generateJournalForDate(dateStr, journalDir);
138
-
139
- if (!result) {
140
- console.log(`No journal entry was created for ${dateStr}`);
141
- }
142
-
143
- done();
144
- });
145
-
146
- // Journal generation task for all dates
147
- gulp.task('journal:generate', (done) => {
148
- // Directory to store journal entries
149
- const journalDir = path.join('docs', 'journal');
150
-
151
- // Create directory if it doesn't exist
152
- if (!fs.existsSync(journalDir)) {
153
- fs.mkdirSync(journalDir, { recursive: true });
154
- }
155
-
156
- // Get all commit dates
157
- const datesOutput = execSync('git log --format=%ad --date=short', { maxBuffer: MAX_BUFFER }).toString();
158
- const dates = [...new Set(datesOutput.split('\n').map(line => line.trim()).filter(Boolean))];
159
-
160
- dates.forEach(dateStr => {
161
- // Format date as YYYYMMDD
162
- const dateObj = new Date(dateStr);
163
- const formattedDate = dateObj.toISOString().slice(0, 10).replace(/-/g, '');
164
-
165
- // File path for this date's journal
166
- const journalFile = path.join(journalDir, `${formattedDate}.md`);
167
-
168
- // Skip if file already exists
169
- if (fs.existsSync(journalFile)) {
170
- return;
171
- }
172
-
173
- // Generate journal for this date
174
- generateJournalForDate(dateStr, journalDir);
175
- });
176
-
177
- console.log("Journal generation completed.");
178
- done();
179
- });
180
- }
1
+ 'use strict';
2
+
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { execSync } from 'child_process';
6
+
7
+ // Increase buffer to safely handle large diffs/logs
8
+ const MAX_BUFFER = 256 * 1024 * 1024; // 256 MB
9
+
10
+ // Function to register the journal:generate task
11
+ export default function(gulp) {
12
+ // Helper function to generate journal for a specific date
13
+ const generateJournalForDate = (dateStr, journalDir) => {
14
+ // Format date as YYYYMMDD
15
+ const dateObj = new Date(dateStr);
16
+ const formattedDate = dateObj.toISOString().slice(0, 10).replace(/-/g, '');
17
+
18
+ // File path for this date's journal
19
+ const journalFile = path.join(journalDir, `${formattedDate}.md`);
20
+
21
+ // Get commits for this date
22
+ const commits = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h %s%n%b"`, { maxBuffer: MAX_BUFFER }).toString();
23
+
24
+ // Skip if no commits
25
+ if (!commits.trim()) {
26
+ console.log(`No commits found for ${dateStr}`);
27
+ return false;
28
+ }
29
+
30
+ // Get detailed changes for each commit on this date
31
+ const commitHashesOutput = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h"`, { maxBuffer: MAX_BUFFER }).toString();
32
+ const commitHashes = commitHashesOutput.split('\n').map(line => line.trim()).filter(Boolean);
33
+
34
+ const detailedCommits = [];
35
+
36
+ commitHashes.forEach(hash => {
37
+ // Get commit details
38
+ const commitMessage = execSync(`git show -s --format="%s%n%b" ${hash}`, { maxBuffer: MAX_BUFFER }).toString().trim();
39
+
40
+ // Get files changed
41
+ const filesChangedOutput = execSync(`git show --name-status ${hash}`, { maxBuffer: MAX_BUFFER }).toString();
42
+ const filesChanged = filesChangedOutput.split('\n')
43
+ .map(line => line.trim())
44
+ .filter(line => /^[AMDRT]\s/.test(line));
45
+
46
+ // Get code changes (diff) with robust handling for large diffs
47
+ let diff = '';
48
+ try {
49
+ diff = execSync(`git show ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
50
+ } catch (e) {
51
+ // Fallback to a summary if diff is too large or any error occurs
52
+ const summary = execSync(`git show --stat --oneline ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
53
+ diff = `[Diff too large or failed to load. Showing summary instead.]\n\n${summary}`;
54
+ }
55
+
56
+ detailedCommits.push({
57
+ hash,
58
+ message: commitMessage,
59
+ filesChanged,
60
+ diff
61
+ });
62
+ });
63
+
64
+ // Create journal content
65
+ let content = `# 作業履歴 ${dateStr}\n\n`;
66
+ content += `## 概要\n\n`;
67
+ content += `${dateStr}の作業内容をまとめています。\n\n`;
68
+
69
+ // Add each commit
70
+ detailedCommits.forEach(commit => {
71
+ content += `## コミット: ${commit.hash}\n\n`;
72
+ content += `### メッセージ\n\n`;
73
+ content += `\`\`\`\n${commit.message}\n\`\`\`\n\n`;
74
+
75
+ content += `### 変更されたファイル\n\n`;
76
+ commit.filesChanged.forEach(file => {
77
+ content += `- ${file}\n`;
78
+ });
79
+ content += `\n`;
80
+
81
+ content += `### 変更内容\n\n`;
82
+ content += `\`\`\`diff\n${commit.diff}\n\`\`\`\n\n`;
83
+
84
+ // Add PlantUML diagram placeholder if there are significant structural changes
85
+ const hasStructuralChanges = commit.filesChanged.some(f =>
86
+ f.endsWith('.rb') &&
87
+ (f.includes('model') || f.includes('controller') || f.includes('service'))
88
+ );
89
+
90
+ if (hasStructuralChanges) {
91
+ content += `### 構造変更\n\n`;
92
+ content += `\`\`\`plantuml\n@startuml\n`;
93
+ content += `' このコミットによる構造変更を表すダイアグラムをここに追加してください\n`;
94
+ content += `' 例:\n`;
95
+ content += `' class NewClass\n`;
96
+ content += `' class ExistingClass\n`;
97
+ content += `' NewClass --> ExistingClass\n`;
98
+ content += `@enduml\n\`\`\`\n\n`;
99
+ }
100
+ });
101
+
102
+ // Write to file
103
+ fs.writeFileSync(journalFile, content);
104
+ console.log(`Created journal entry for ${dateStr} at ${journalFile}`);
105
+ return true;
106
+ };
107
+
108
+ // Journal generation task for a specific date
109
+ gulp.task('journal:generate:date', (done) => {
110
+ // Get date from command line arguments
111
+ const args = process.argv.slice(3);
112
+ const dateArg = args.find(arg => arg.startsWith('--date='));
113
+
114
+ if (!dateArg) {
115
+ console.error('Error: Please provide a date using --date=YYYY-MM-DD format');
116
+ done();
117
+ return;
118
+ }
119
+
120
+ const dateStr = dateArg.split('=')[1];
121
+
122
+ // Validate date format
123
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) {
124
+ console.error('Error: Date must be in YYYY-MM-DD format');
125
+ done();
126
+ return;
127
+ }
128
+
129
+ // Directory to store journal entries
130
+ const journalDir = path.join('docs', 'journal');
131
+
132
+ // Create directory if it doesn't exist
133
+ if (!fs.existsSync(journalDir)) {
134
+ fs.mkdirSync(journalDir, { recursive: true });
135
+ }
136
+
137
+ const result = generateJournalForDate(dateStr, journalDir);
138
+
139
+ if (!result) {
140
+ console.log(`No journal entry was created for ${dateStr}`);
141
+ }
142
+
143
+ done();
144
+ });
145
+
146
+ // Journal generation task for all dates
147
+ gulp.task('journal:generate', (done) => {
148
+ // Directory to store journal entries
149
+ const journalDir = path.join('docs', 'journal');
150
+
151
+ // Create directory if it doesn't exist
152
+ if (!fs.existsSync(journalDir)) {
153
+ fs.mkdirSync(journalDir, { recursive: true });
154
+ }
155
+
156
+ // Get all commit dates
157
+ const datesOutput = execSync('git log --format=%ad --date=short', { maxBuffer: MAX_BUFFER }).toString();
158
+ const dates = [...new Set(datesOutput.split('\n').map(line => line.trim()).filter(Boolean))];
159
+
160
+ dates.forEach(dateStr => {
161
+ // Format date as YYYYMMDD
162
+ const dateObj = new Date(dateStr);
163
+ const formattedDate = dateObj.toISOString().slice(0, 10).replace(/-/g, '');
164
+
165
+ // File path for this date's journal
166
+ const journalFile = path.join(journalDir, `${formattedDate}.md`);
167
+
168
+ // Skip if file already exists
169
+ if (fs.existsSync(journalFile)) {
170
+ return;
171
+ }
172
+
173
+ // Generate journal for this date
174
+ generateJournalForDate(dateStr, journalDir);
175
+ });
176
+
177
+ console.log("Journal generation completed.");
178
+ done();
179
+ });
180
+ }
@@ -1,82 +1,82 @@
1
- 'use strict';
2
-
3
- import { execSync } from 'child_process';
4
- import fs from 'fs';
5
- import path from 'path';
6
- import { cleanDockerEnv, isDockerAvailable, openUrl } from './shared.js';
7
-
8
- /**
9
- * docker compose コマンドを実行
10
- * @param {string} args - docker compose に渡す引数
11
- */
12
- function dockerCompose(args) {
13
- execSync(`docker compose ${args}`, { stdio: 'inherit', env: cleanDockerEnv() });
14
- }
15
-
16
- /**
17
- * Docker が利用可能か確認し、不可なら警告メッセージを表示して false を返す
18
- * @returns {boolean} Docker が利用可能なら true
19
- */
20
- function requireDocker() {
21
- if (isDockerAvailable()) {
22
- return true;
23
- }
24
- console.warn('Warning: Docker is not running. Skipping this task.');
25
- console.warn('Please start Docker Desktop and try again.');
26
- return false;
27
- }
28
-
29
- /**
30
- * MkDocs タスクを gulp に登録する
31
- * @param {import('gulp').Gulp} gulp - Gulp インスタンス
32
- */
33
- export default function (gulp) {
34
- gulp.task('mkdocs:serve', (done) => {
35
- if (!requireDocker()) { done(); return; }
36
- try {
37
- console.log('Starting MkDocs server...');
38
- dockerCompose('up -d mkdocs');
39
- console.log('\nDocumentation is available at http://localhost:8000');
40
- done();
41
- } catch (error) {
42
- done(error);
43
- }
44
- });
45
-
46
- gulp.task('mkdocs:build', (done) => {
47
- if (!requireDocker()) { done(); return; }
48
- try {
49
- console.log('Building MkDocs documentation...');
50
- const siteDir = path.join(process.cwd(), 'site');
51
- if (fs.existsSync(siteDir)) {
52
- fs.rmSync(siteDir, { recursive: true, force: true });
53
- }
54
- dockerCompose('run --rm mkdocs mkdocs build');
55
- console.log('\nBuild completed.');
56
- done();
57
- } catch (error) {
58
- done(error);
59
- }
60
- });
61
-
62
- gulp.task('mkdocs:stop', (done) => {
63
- if (!requireDocker()) { done(); return; }
64
- try {
65
- console.log('Stopping MkDocs server...');
66
- dockerCompose('down');
67
- console.log('Stopped.');
68
- done();
69
- } catch (error) {
70
- done(error);
71
- }
72
- });
73
-
74
- gulp.task('mkdocs:open', (done) => {
75
- try {
76
- openUrl('http://localhost:8000');
77
- done();
78
- } catch (error) {
79
- done(error);
80
- }
81
- });
82
- }
1
+ 'use strict';
2
+
3
+ import { execSync } from 'child_process';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import { cleanDockerEnv, isDockerAvailable, openUrl } from './shared.js';
7
+
8
+ /**
9
+ * docker compose コマンドを実行
10
+ * @param {string} args - docker compose に渡す引数
11
+ */
12
+ function dockerCompose(args) {
13
+ execSync(`docker compose ${args}`, { stdio: 'inherit', env: cleanDockerEnv() });
14
+ }
15
+
16
+ /**
17
+ * Docker が利用可能か確認し、不可なら警告メッセージを表示して false を返す
18
+ * @returns {boolean} Docker が利用可能なら true
19
+ */
20
+ function requireDocker() {
21
+ if (isDockerAvailable()) {
22
+ return true;
23
+ }
24
+ console.warn('Warning: Docker is not running. Skipping this task.');
25
+ console.warn('Please start Docker Desktop and try again.');
26
+ return false;
27
+ }
28
+
29
+ /**
30
+ * MkDocs タスクを gulp に登録する
31
+ * @param {import('gulp').Gulp} gulp - Gulp インスタンス
32
+ */
33
+ export default function (gulp) {
34
+ gulp.task('mkdocs:serve', (done) => {
35
+ if (!requireDocker()) { done(); return; }
36
+ try {
37
+ console.log('Starting MkDocs server...');
38
+ dockerCompose('up -d mkdocs');
39
+ console.log('\nDocumentation is available at http://localhost:8000');
40
+ done();
41
+ } catch (error) {
42
+ done(error);
43
+ }
44
+ });
45
+
46
+ gulp.task('mkdocs:build', (done) => {
47
+ if (!requireDocker()) { done(); return; }
48
+ try {
49
+ console.log('Building MkDocs documentation...');
50
+ const siteDir = path.join(process.cwd(), 'site');
51
+ if (fs.existsSync(siteDir)) {
52
+ fs.rmSync(siteDir, { recursive: true, force: true });
53
+ }
54
+ dockerCompose('run --rm mkdocs mkdocs build');
55
+ console.log('\nBuild completed.');
56
+ done();
57
+ } catch (error) {
58
+ done(error);
59
+ }
60
+ });
61
+
62
+ gulp.task('mkdocs:stop', (done) => {
63
+ if (!requireDocker()) { done(); return; }
64
+ try {
65
+ console.log('Stopping MkDocs server...');
66
+ dockerCompose('down');
67
+ console.log('Stopped.');
68
+ done();
69
+ } catch (error) {
70
+ done(error);
71
+ }
72
+ });
73
+
74
+ gulp.task('mkdocs:open', (done) => {
75
+ try {
76
+ openUrl('http://localhost:8000');
77
+ done();
78
+ } catch (error) {
79
+ done(error);
80
+ }
81
+ });
82
+ }