forge-orkes 0.3.10 → 0.3.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/create-forge.js +16 -5
- package/package.json +1 -1
package/bin/create-forge.js
CHANGED
|
@@ -84,9 +84,10 @@ function collectFiles(dir, base) {
|
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
86
|
* Compare and overwrite framework-owned or template-only files.
|
|
87
|
+
* If autoClean is true, delete dest files not in template (for framework-owned dirs).
|
|
87
88
|
* Returns { updated, added, unchanged, removed } arrays of relative paths.
|
|
88
89
|
*/
|
|
89
|
-
function upgradeDir(relDir) {
|
|
90
|
+
function upgradeDir(relDir, { autoClean = false } = {}) {
|
|
90
91
|
const srcDir = path.join(templateDir, relDir);
|
|
91
92
|
const destDir = path.join(targetDir, relDir);
|
|
92
93
|
|
|
@@ -122,6 +123,16 @@ function upgradeDir(relDir) {
|
|
|
122
123
|
for (const rel of destFiles) {
|
|
123
124
|
const srcPath = path.join(srcDir, rel);
|
|
124
125
|
if (!fs.existsSync(srcPath)) {
|
|
126
|
+
const destPath = path.join(destDir, rel);
|
|
127
|
+
if (autoClean) {
|
|
128
|
+
fs.unlinkSync(destPath);
|
|
129
|
+
// Remove empty parent dirs up to relDir
|
|
130
|
+
let dir = path.dirname(destPath);
|
|
131
|
+
while (dir !== destDir && fs.existsSync(dir) && fs.readdirSync(dir).length === 0) {
|
|
132
|
+
fs.rmdirSync(dir);
|
|
133
|
+
dir = path.dirname(dir);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
125
136
|
result.removed.push(path.join(relDir, rel));
|
|
126
137
|
}
|
|
127
138
|
}
|
|
@@ -304,9 +315,9 @@ async function upgrade() {
|
|
|
304
315
|
removed: [],
|
|
305
316
|
};
|
|
306
317
|
|
|
307
|
-
// 1. Process framework-owned directories
|
|
318
|
+
// 1. Process framework-owned directories (auto-clean stale files)
|
|
308
319
|
for (const dir of FRAMEWORK_OWNED_DIRS) {
|
|
309
|
-
const dirResult = upgradeDir(dir);
|
|
320
|
+
const dirResult = upgradeDir(dir, { autoClean: true });
|
|
310
321
|
results.updated.push(...dirResult.updated);
|
|
311
322
|
results.added.push(...dirResult.added);
|
|
312
323
|
results.unchanged.push(...dirResult.unchanged);
|
|
@@ -365,9 +376,9 @@ async function upgrade() {
|
|
|
365
376
|
}
|
|
366
377
|
|
|
367
378
|
if (results.removed.length > 0) {
|
|
368
|
-
console.log(`
|
|
379
|
+
console.log(` Cleaned up (${results.removed.length}):`);
|
|
369
380
|
for (const f of results.removed) {
|
|
370
|
-
console.log(` ${f} (
|
|
381
|
+
console.log(` ${f} (removed — no longer in framework)`);
|
|
371
382
|
}
|
|
372
383
|
console.log();
|
|
373
384
|
}
|