@clawplays/ospec-cli 1.0.0 → 1.0.1
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/dist/cli.js
CHANGED
|
@@ -55,7 +55,7 @@ const VerifyCommand_1 = require("./commands/VerifyCommand");
|
|
|
55
55
|
const WorkflowCommand_1 = require("./commands/WorkflowCommand");
|
|
56
56
|
const LayoutCommand_1 = require("./commands/LayoutCommand");
|
|
57
57
|
const services_1 = require("./services");
|
|
58
|
-
const CLI_VERSION = '1.0.
|
|
58
|
+
const CLI_VERSION = '1.0.1';
|
|
59
59
|
function showInitUsage() {
|
|
60
60
|
console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language en-US|zh-CN|ja-JP|ar]');
|
|
61
61
|
}
|
|
@@ -105,17 +105,25 @@ class LayoutCommand extends BaseCommand_1.BaseCommand {
|
|
|
105
105
|
}
|
|
106
106
|
const movePlan = await this.collectClassicMovePlan(rootDir);
|
|
107
107
|
const conflicts = [];
|
|
108
|
+
const removablePlaceholderPaths = new Set();
|
|
108
109
|
for (const move of movePlan) {
|
|
109
110
|
if (!(await services_1.services.fileService.exists(move.sourcePath))) {
|
|
110
111
|
continue;
|
|
111
112
|
}
|
|
112
113
|
if (await services_1.services.fileService.exists(move.targetPath)) {
|
|
114
|
+
if (await this.isPlaceholderDirectoryTree(move.targetPath)) {
|
|
115
|
+
removablePlaceholderPaths.add(move.targetPath);
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
113
118
|
conflicts.push(`${move.targetRelativePath} already exists`);
|
|
114
119
|
}
|
|
115
120
|
}
|
|
116
121
|
if (conflicts.length > 0) {
|
|
117
122
|
throw new Error(`Cannot migrate to nested layout because target paths already exist:\n- ${conflicts.join('\n- ')}`);
|
|
118
123
|
}
|
|
124
|
+
for (const targetPath of Array.from(removablePlaceholderPaths).sort((left, right) => right.localeCompare(left))) {
|
|
125
|
+
await services_1.services.fileService.remove(targetPath);
|
|
126
|
+
}
|
|
119
127
|
const movedPaths = [];
|
|
120
128
|
for (const move of movePlan) {
|
|
121
129
|
if (!(await services_1.services.fileService.exists(move.sourcePath))) {
|
|
@@ -196,5 +204,22 @@ class LayoutCommand extends BaseCommand_1.BaseCommand {
|
|
|
196
204
|
}
|
|
197
205
|
return results;
|
|
198
206
|
}
|
|
207
|
+
async isPlaceholderDirectoryTree(targetPath) {
|
|
208
|
+
const stat = await services_1.services.fileService.stat(targetPath);
|
|
209
|
+
if (!stat.isDirectory()) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
const entries = await services_1.services.fileService.readDir(targetPath);
|
|
213
|
+
if (entries.length === 0) {
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
for (const entryName of entries) {
|
|
217
|
+
const entryPath = path.join(targetPath, entryName);
|
|
218
|
+
if (!(await this.isPlaceholderDirectoryTree(entryPath))) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
199
224
|
}
|
|
200
225
|
exports.LayoutCommand = LayoutCommand;
|
|
@@ -661,8 +661,6 @@ title: ${definition.title}
|
|
|
661
661
|
|
|
662
662
|
description: ${definition.description}
|
|
663
663
|
|
|
664
|
-
version: 5.1.0
|
|
665
|
-
|
|
666
664
|
author: OSpec Team
|
|
667
665
|
|
|
668
666
|
license: MIT
|
|
@@ -831,8 +829,6 @@ title: OSpec CLI (Legacy Alias)
|
|
|
831
829
|
|
|
832
830
|
description: Legacy compatibility alias that redirects ospec-cli skill usage to the newer ospec skill name.
|
|
833
831
|
|
|
834
|
-
version: 5.1.0
|
|
835
|
-
|
|
836
832
|
author: OSpec Team
|
|
837
833
|
|
|
838
834
|
license: MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clawplays/ospec-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Official OSpec CLI package for spec-driven development (SDD) and document-driven development in AI coding agent and CLI workflows.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,20 +14,11 @@
|
|
|
14
14
|
"postinstall": "node scripts/postinstall.js",
|
|
15
15
|
"prepack": "node scripts/strip-sourcemap-refs.js",
|
|
16
16
|
"index:rebuild": "node dist/tools/build-index.js",
|
|
17
|
-
"release:cut": "node scripts/release-cut.js",
|
|
18
|
-
"release:cut:patch": "node scripts/release-cut.js patch",
|
|
19
|
-
"release:cut:minor": "node scripts/release-cut.js minor",
|
|
20
|
-
"release:cut:major": "node scripts/release-cut.js major",
|
|
21
17
|
"release:smoke": "node scripts/release-smoke.js",
|
|
22
18
|
"release:notes": "node scripts/release-notes.js",
|
|
23
19
|
"release:upload-notes": "node scripts/release-upload-notes.js",
|
|
24
|
-
"release:sync-version": "node scripts/sync-version.js",
|
|
25
|
-
"release:bump:patch": "npm version patch --no-git-tag-version",
|
|
26
|
-
"release:bump:minor": "npm version minor --no-git-tag-version",
|
|
27
|
-
"release:bump:major": "npm version major --no-git-tag-version",
|
|
28
20
|
"release:check": "npm pack --dry-run",
|
|
29
|
-
"release:publish": "npm publish --access public"
|
|
30
|
-
"version": "npm run release:sync-version"
|
|
21
|
+
"release:publish": "npm publish --access public"
|
|
31
22
|
},
|
|
32
23
|
"keywords": [
|
|
33
24
|
"ospec",
|