cursor-sdd 1.0.10 → 1.0.11
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/bin/setup.ts +16 -39
- package/package.json +1 -1
package/bin/setup.ts
CHANGED
|
@@ -10,13 +10,10 @@ const isForce = process.argv.includes('--force');
|
|
|
10
10
|
|
|
11
11
|
// パッケージのルートディレクトリを取得
|
|
12
12
|
const packageRoot = path.resolve(__dirname, '..');
|
|
13
|
-
const
|
|
14
|
-
new:
|
|
15
|
-
assign:
|
|
13
|
+
const SOURCE_BY_MODE = {
|
|
14
|
+
new: path.join(packageRoot, 'new'),
|
|
15
|
+
assign: path.join(packageRoot, 'assign'),
|
|
16
16
|
};
|
|
17
|
-
const MANAGED_FOLDERS = Array.from(
|
|
18
|
-
new Set([...FOLDERS_BY_MODE.new, ...FOLDERS_BY_MODE.assign, 'bin'])
|
|
19
|
-
);
|
|
20
17
|
|
|
21
18
|
// プロジェクトのルートを取得(node_modules の2つ上)
|
|
22
19
|
function getProjectRoot() {
|
|
@@ -63,16 +60,11 @@ function copyRecursive(src, dest) {
|
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
62
|
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (keep.has(folder)) continue;
|
|
70
|
-
const dest = path.join(targetDir, folder);
|
|
71
|
-
if (fs.existsSync(dest)) {
|
|
72
|
-
fs.rmSync(dest, { recursive: true, force: true });
|
|
73
|
-
console.log(` 🧹 Removed: ${path.relative(projectRoot, dest)}`);
|
|
74
|
-
}
|
|
63
|
+
function cleanTargetDir() {
|
|
64
|
+
if (fs.existsSync(targetDir)) {
|
|
65
|
+
fs.rmSync(targetDir, { recursive: true, force: true });
|
|
75
66
|
}
|
|
67
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
76
68
|
}
|
|
77
69
|
|
|
78
70
|
function getArgValue(flag) {
|
|
@@ -139,9 +131,11 @@ function resolveMode() {
|
|
|
139
131
|
return Promise.resolve('new');
|
|
140
132
|
}
|
|
141
133
|
|
|
142
|
-
function getFolders(
|
|
143
|
-
|
|
144
|
-
return
|
|
134
|
+
function getFolders(sourceRoot) {
|
|
135
|
+
if (!fs.existsSync(sourceRoot)) return [];
|
|
136
|
+
return fs
|
|
137
|
+
.readdirSync(sourceRoot)
|
|
138
|
+
.filter((item) => fs.statSync(path.join(sourceRoot, item)).isDirectory());
|
|
145
139
|
}
|
|
146
140
|
|
|
147
141
|
function setup({ mode, sourceRoot, folders }) {
|
|
@@ -149,22 +143,8 @@ function setup({ mode, sourceRoot, folders }) {
|
|
|
149
143
|
console.log(`📁 Target: ${targetDir}`);
|
|
150
144
|
console.log(`🎚️ Mode: ${mode}\n`);
|
|
151
145
|
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
// 最低限 .cursor がある前提で掃除だけはする
|
|
155
|
-
cleanOtherFolders(mode);
|
|
156
|
-
console.log('ℹ️ .cursor already exists. Run `npx cursor-sdd --force` to overwrite.');
|
|
157
|
-
console.log('ℹ️ Cleaned other mode folders, skipping copy due to --auto.');
|
|
158
|
-
process.exit(0);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// .cursor ディレクトリを作成
|
|
162
|
-
if (!fs.existsSync(targetDir)) {
|
|
163
|
-
fs.mkdirSync(targetDir, { recursive: true });
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// 選択したモード以外のフォルダを掃除(手動実行時も確実に実施)
|
|
167
|
-
cleanOtherFolders(mode);
|
|
146
|
+
// 既存 .cursor は問答無用で削除してクリーンにする
|
|
147
|
+
cleanTargetDir();
|
|
168
148
|
|
|
169
149
|
if (!folders.length) {
|
|
170
150
|
console.log(`ℹ️ No folders to copy for mode: ${mode}.`);
|
|
@@ -180,9 +160,6 @@ function setup({ mode, sourceRoot, folders }) {
|
|
|
180
160
|
copyRecursive(src, dest);
|
|
181
161
|
}
|
|
182
162
|
|
|
183
|
-
// 念のためコピー後にも掃除を一度実施
|
|
184
|
-
cleanOtherFolders(mode);
|
|
185
|
-
|
|
186
163
|
console.log('\n✨ Cursor SDD setup complete!\n');
|
|
187
164
|
console.log('Available commands:');
|
|
188
165
|
console.log(' /init - Initialize project specs');
|
|
@@ -195,8 +172,8 @@ function setup({ mode, sourceRoot, folders }) {
|
|
|
195
172
|
|
|
196
173
|
(async () => {
|
|
197
174
|
const mode = await resolveMode();
|
|
198
|
-
const sourceRoot = packageRoot;
|
|
199
|
-
const folders = getFolders(
|
|
175
|
+
const sourceRoot = SOURCE_BY_MODE[mode] || SOURCE_BY_MODE.new || packageRoot;
|
|
176
|
+
const folders = getFolders(sourceRoot);
|
|
200
177
|
|
|
201
178
|
setup({ mode, sourceRoot, folders });
|
|
202
179
|
})().catch((err) => {
|