cursor-sdd 1.0.9 → 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 -36
- 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,18 +60,11 @@ function copyRecursive(src, dest) {
|
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
62
|
|
|
66
|
-
function
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
const keep = new Set(FOLDERS_BY_MODE[mode] || []);
|
|
70
|
-
for (const folder of MANAGED_FOLDERS) {
|
|
71
|
-
if (keep.has(folder)) continue;
|
|
72
|
-
const dest = path.join(targetDir, folder);
|
|
73
|
-
if (fs.existsSync(dest)) {
|
|
74
|
-
fs.rmSync(dest, { recursive: true, force: true });
|
|
75
|
-
console.log(` 🧹 Removed: ${path.relative(projectRoot, dest)}`);
|
|
76
|
-
}
|
|
63
|
+
function cleanTargetDir() {
|
|
64
|
+
if (fs.existsSync(targetDir)) {
|
|
65
|
+
fs.rmSync(targetDir, { recursive: true, force: true });
|
|
77
66
|
}
|
|
67
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
78
68
|
}
|
|
79
69
|
|
|
80
70
|
function getArgValue(flag) {
|
|
@@ -141,9 +131,11 @@ function resolveMode() {
|
|
|
141
131
|
return Promise.resolve('new');
|
|
142
132
|
}
|
|
143
133
|
|
|
144
|
-
function getFolders(
|
|
145
|
-
|
|
146
|
-
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());
|
|
147
139
|
}
|
|
148
140
|
|
|
149
141
|
function setup({ mode, sourceRoot, folders }) {
|
|
@@ -151,20 +143,8 @@ function setup({ mode, sourceRoot, folders }) {
|
|
|
151
143
|
console.log(`📁 Target: ${targetDir}`);
|
|
152
144
|
console.log(`🎚️ Mode: ${mode}\n`);
|
|
153
145
|
|
|
154
|
-
//
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
// 自動実行時は既存の .cursor がある場合スキップ
|
|
158
|
-
if (isAuto && fs.existsSync(targetDir) && !isForce) {
|
|
159
|
-
console.log('ℹ️ .cursor already exists. Run `npx cursor-sdd --force` to overwrite.');
|
|
160
|
-
console.log('ℹ️ Cleaned other mode folders, skipping copy due to --auto.');
|
|
161
|
-
process.exit(0);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// .cursor ディレクトリを作成
|
|
165
|
-
if (!fs.existsSync(targetDir)) {
|
|
166
|
-
fs.mkdirSync(targetDir, { recursive: true });
|
|
167
|
-
}
|
|
146
|
+
// 既存 .cursor は問答無用で削除してクリーンにする
|
|
147
|
+
cleanTargetDir();
|
|
168
148
|
|
|
169
149
|
if (!folders.length) {
|
|
170
150
|
console.log(`ℹ️ No folders to copy for mode: ${mode}.`);
|
|
@@ -192,8 +172,8 @@ function setup({ mode, sourceRoot, folders }) {
|
|
|
192
172
|
|
|
193
173
|
(async () => {
|
|
194
174
|
const mode = await resolveMode();
|
|
195
|
-
const sourceRoot = packageRoot;
|
|
196
|
-
const folders = getFolders(
|
|
175
|
+
const sourceRoot = SOURCE_BY_MODE[mode] || SOURCE_BY_MODE.new || packageRoot;
|
|
176
|
+
const folders = getFolders(sourceRoot);
|
|
197
177
|
|
|
198
178
|
setup({ mode, sourceRoot, folders });
|
|
199
179
|
})().catch((err) => {
|