loadouts 0.1.12 → 0.1.13
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/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +3 -5
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/rule.d.ts.map +1 -1
- package/dist/cli/commands/rule.js +11 -16
- package/dist/cli/commands/rule.js.map +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +11 -16
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +32 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/core/render.d.ts +0 -1
- package/dist/core/render.d.ts.map +1 -1
- package/dist/core/render.js +0 -35
- package/dist/core/render.js.map +1 -1
- package/dist/core/types.d.ts +0 -6
- package/dist/core/types.d.ts.map +1 -1
- package/dist/lib/gitignore.d.ts +48 -20
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +178 -84
- package/dist/lib/gitignore.js.map +1 -1
- package/package.json +1 -1
package/dist/core/render.js
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
import * as path from "node:path";
|
|
13
13
|
import * as os from "node:os";
|
|
14
14
|
import { createSymlink, writeFile, removeFile, removeDir, readFile, fileExists, isDirectory, isSymlink, findSymlinkParent, ensureDir, hashContent, walkDir, } from "../lib/fs.js";
|
|
15
|
-
import { updateGitignore, removeGitignoreSection } from "../lib/gitignore.js";
|
|
16
15
|
import { registry } from "./registry.js";
|
|
17
16
|
import { expandTemplate } from "./template.js";
|
|
18
17
|
import { isUnmanagedCollision, saveState, loadState } from "./manifest.js";
|
|
@@ -130,17 +129,11 @@ function resolveExpandedOutputSpec(toolName, baseItem, expandedItem, scope) {
|
|
|
130
129
|
const targetPath = path.join(baseTargetPath, relativeWithinDir);
|
|
131
130
|
const mode = mapping.mode ??
|
|
132
131
|
(mapping.generate ? "generate" : mapping.transform ? "copy" : "symlink");
|
|
133
|
-
// For dir-layout kinds, use the base directory path with trailing slash for gitignore
|
|
134
|
-
// This ensures all files within the directory are ignored with a single entry
|
|
135
|
-
const gitignorePath = path.isAbsolute(baseTargetPath)
|
|
136
|
-
? undefined // Don't gitignore global paths
|
|
137
|
-
: baseTargetPath + "/";
|
|
138
132
|
return {
|
|
139
133
|
tool: toolName,
|
|
140
134
|
kind: expandedItem.kind,
|
|
141
135
|
sourcePath: expandedItem.sourcePath,
|
|
142
136
|
targetPath,
|
|
143
|
-
gitignorePath,
|
|
144
137
|
mode,
|
|
145
138
|
};
|
|
146
139
|
}
|
|
@@ -207,17 +200,6 @@ function resolveTargetPath(targetPath, projectRoot) {
|
|
|
207
200
|
? targetPath
|
|
208
201
|
: path.join(projectRoot, targetPath);
|
|
209
202
|
}
|
|
210
|
-
/**
|
|
211
|
-
* Compute unique gitignore paths from plan outputs.
|
|
212
|
-
* Uses gitignorePath (for dir-layout kinds) or targetPath (for file-layout).
|
|
213
|
-
*/
|
|
214
|
-
function computeGitignorePaths(outputs) {
|
|
215
|
-
const paths = new Set();
|
|
216
|
-
for (const { spec } of outputs) {
|
|
217
|
-
paths.add(spec.gitignorePath ?? spec.targetPath);
|
|
218
|
-
}
|
|
219
|
-
return Array.from(paths);
|
|
220
|
-
}
|
|
221
203
|
/**
|
|
222
204
|
* Apply a render plan to disk and save state.
|
|
223
205
|
*
|
|
@@ -299,12 +281,6 @@ export async function applyPlan(plan, loadout, projectRoot, mode = "symlink", sc
|
|
|
299
281
|
if (fileExists(fallbackMarker)) {
|
|
300
282
|
removeFile(fallbackMarker);
|
|
301
283
|
}
|
|
302
|
-
// Update .gitignore with managed paths (project scope only)
|
|
303
|
-
// Uses directory paths for dir-layout kinds instead of individual files
|
|
304
|
-
if (scope === "project") {
|
|
305
|
-
const managedPaths = computeGitignorePaths(plan.outputs);
|
|
306
|
-
updateGitignore(projectRoot, managedPaths);
|
|
307
|
-
}
|
|
308
284
|
}
|
|
309
285
|
/**
|
|
310
286
|
* Apply multiple loadouts, merging their outputs with deduplication by targetPath.
|
|
@@ -418,12 +394,6 @@ export async function applyMultiPlan(plans, loadoutRoot, projectRoot, mode = "sy
|
|
|
418
394
|
if (fileExists(fallbackMarker)) {
|
|
419
395
|
removeFile(fallbackMarker);
|
|
420
396
|
}
|
|
421
|
-
// Update .gitignore with managed paths (project scope only)
|
|
422
|
-
// Uses directory paths for dir-layout kinds instead of individual files
|
|
423
|
-
if (scope === "project") {
|
|
424
|
-
const managedPaths = computeGitignorePaths(mergedOutputs.map((o) => ({ spec: o.output.spec })));
|
|
425
|
-
updateGitignore(projectRoot, managedPaths);
|
|
426
|
-
}
|
|
427
397
|
return {
|
|
428
398
|
totalOutputs: mergedOutputs.length,
|
|
429
399
|
byTool,
|
|
@@ -436,7 +406,6 @@ export async function applyMultiPlan(plans, loadoutRoot, projectRoot, mode = "sy
|
|
|
436
406
|
/**
|
|
437
407
|
* Remove all managed outputs recorded in the state file.
|
|
438
408
|
* Does NOT clear the state file — callers decide whether to call clearState().
|
|
439
|
-
* Also removes the loadout-managed section from .gitignore (project scope only).
|
|
440
409
|
*/
|
|
441
410
|
export async function removeManaged(loadoutRoot, projectRoot, scope = "project") {
|
|
442
411
|
const state = loadState(loadoutRoot);
|
|
@@ -477,10 +446,6 @@ export async function removeManaged(loadoutRoot, projectRoot, scope = "project")
|
|
|
477
446
|
// Ignore — dir may not exist or may be unremovable
|
|
478
447
|
}
|
|
479
448
|
}
|
|
480
|
-
// Clean up .gitignore (project scope only)
|
|
481
|
-
if (scope === "project") {
|
|
482
|
-
removeGitignoreSection(projectRoot);
|
|
483
|
-
}
|
|
484
449
|
return { removed, missing };
|
|
485
450
|
}
|
|
486
451
|
//# sourceMappingURL=render.js.map
|
package/dist/core/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAqB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAc3E,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,IAAkB,EAClB,KAAY;IAEZ,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC;IAErC,MAAM,IAAI,GAAiB;QACzB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;QAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QAC/C,GAAG;QACH,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,QAAQ,EAAE,IAAI,CAAC,YAAY;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,IAAI,GACR,OAAO,CAAC,IAAI;QACZ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU;QACV,IAAI;KACL,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAkB,EAClB,IAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,6DAA6D;IAC7D,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,iDAAiD;IACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;YACnC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,CAAC,SAAS,sBAAsB,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,aAAa,CACpB,IAAkB,EAClB,IAAgC;IAEhC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;QACpD,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;QACxD,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,QAAgB,EAChB,QAAsB,EACtB,YAA0B,EAC1B,KAAY;IAEZ,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC;IAErC,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAEtF,MAAM,IAAI,GAAiB;QACzB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;QAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,iCAAiC;QAC3E,GAAG;QACH,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC,QAAQ,EAAE,QAAQ,CAAC,YAAY;QAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;IAEF,+EAA+E;IAC/E,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjE,qDAAqD;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAEhE,MAAM,IAAI,GACR,OAAO,CAAC,IAAI;QACZ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3E,sFAAsF;IACtF,8EAA8E;IAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QACnD,CAAC,CAAC,SAAS,CAAE,+BAA+B;QAC5C,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,UAAU;QACV,aAAa;QACb,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAwB,EACxB,WAAmB,EACnB,KAAY,EACZ,SAAkB;IAElB,6EAA6E;IAC7E,+EAA+E;IAC/E,uDAAuD;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QAED,gDAAgD;QAChD,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEhD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,kDAAkD;oBAClD,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,KAAK,KAAK;wBACnB,CAAC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;wBAChE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;oBAEvD,IAAI,CAAC,IAAI;wBAAE,SAAS,CAAC,iCAAiC;oBAEtD,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;wBAC9D,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;yBAC5B,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CACT,GAAG,YAAY,CAAC,YAAY,MAAM,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAClG,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,WAAmB;IAChE,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAChC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,OAAoC;IAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAgB,EAChB,OAAwB,EACxB,WAAmB,EACnB,OAAmB,SAAS,EAC5B,QAAe,SAAS;IAExB,4DAA4D;IAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAClE,IAAI,WAAW,CAAC,QAAQ,CAAC;oBAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;;oBAC1C,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEnE,8DAA8D;QAC9D,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,IAAI,WAAW,CAAC,UAAU,CAAC;gBAAE,SAAS,CAAC,UAAU,CAAC,CAAC;;gBAC9C,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,8DAA8D;QAC9D,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkE,CAAC;IAClG,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC1C,MAAM;gBACN,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAoB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAChH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAiB;QAC7B,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACtB,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEtC,sDAAsD;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,wEAAwE;IACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAYD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAA4D,EAC5D,WAAmB,EACnB,WAAmB,EACnB,OAAmB,SAAS,EAC5B,QAAe,SAAS;IAExB,0EAA0E;IAC1E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoE,CAAC;IACpG,MAAM,cAAc,GAAoB,EAAE,CAAC;IAC3C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAI,QAAQ,EAAE,CAAC;gBACb,qCAAqC;gBACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;oBAC1C,MAAM;oBACN,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3D,iBAAiB;IACjB,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7F,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,yBAAyB;IACzB,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAClE,IAAI,WAAW,CAAC,QAAQ,CAAC;oBAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;;oBAC1C,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,aAAa,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEnE,kCAAkC;QAClC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,IAAI,WAAW,CAAC,UAAU,CAAC;gBAAE,SAAS,CAAC,UAAU,CAAC,CAAC;;gBAC9C,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,8DAA8D;QAC9D,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,+DAA+D;IAC/D,MAAM,OAAO,GAAoB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAiB;QAC7B,MAAM,EAAE,WAAW;QACnB,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;QACP,QAAQ,EAAE,cAAc;KACzB,CAAC;IAEF,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEjC,sDAAsD;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,wEAAwE;IACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,qBAAqB,CACxC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACpD,CAAC;QACF,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,YAAY,EAAE,aAAa,CAAC,MAAM;QAClC,MAAM;QACN,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,WAAmB,EACnB,QAAe,SAAS;IAExB,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAElE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,IAAI,WAAW,CAAC,QAAQ,CAAC;gBAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;;gBAC1C,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QACzE,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAC9D,CAAC;IAEF,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -48,12 +48,6 @@ export interface OutputSpec {
|
|
|
48
48
|
/** Relative path from project root, or absolute for global scope outputs. */
|
|
49
49
|
targetPath: string;
|
|
50
50
|
mode: OutputMode;
|
|
51
|
-
/**
|
|
52
|
-
* Path to use for .gitignore. For dir-layout kinds, this is the base
|
|
53
|
-
* directory (with trailing slash) rather than individual files.
|
|
54
|
-
* Falls back to targetPath if not set.
|
|
55
|
-
*/
|
|
56
|
-
gitignorePath?: string;
|
|
57
51
|
}
|
|
58
52
|
export interface RenderedOutput {
|
|
59
53
|
content: string;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAKzC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAC1B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAGzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAG/B,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAGD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AAGrC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/gitignore.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Gitignore management —
|
|
2
|
+
* Gitignore management — per-target .gitignore files.
|
|
3
|
+
*
|
|
4
|
+
* Each tool's output directory (e.g., .claude/, .cursor/) gets its own
|
|
5
|
+
* .gitignore with paths relative to that directory. This ensures:
|
|
6
|
+
*
|
|
7
|
+
* - All artifacts are ignored regardless of activation state
|
|
8
|
+
* - Global scope is supported (same mechanism, absolute target dirs)
|
|
9
|
+
* - The project root .gitignore is not cluttered with tool-specific paths
|
|
10
|
+
*
|
|
11
|
+
* Gitignore is part of the artifact lifecycle (add/delete/import), not the
|
|
12
|
+
* render pipeline. Updates happen when artifacts are created or removed,
|
|
13
|
+
* not when loadouts are activated or synced.
|
|
3
14
|
*
|
|
4
15
|
* Uses markers to identify the managed section:
|
|
5
16
|
* # <loadouts>
|
|
@@ -8,36 +19,53 @@
|
|
|
8
19
|
*/
|
|
9
20
|
import type { Scope } from "../core/types.js";
|
|
10
21
|
/**
|
|
11
|
-
* Update .gitignore
|
|
22
|
+
* Update .gitignore within a specific target directory.
|
|
12
23
|
*
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
15
|
-
* - Preserves all user content outside the markers
|
|
16
|
-
* - Removes the section entirely if managedPaths is empty
|
|
24
|
+
* @param targetDir - Absolute path to the target directory (e.g., /project/.claude or ~/.claude)
|
|
25
|
+
* @param relativePaths - Paths relative to targetDir (e.g., ["rules/foo.md", "skills/bar/"])
|
|
17
26
|
*/
|
|
18
|
-
export declare function
|
|
27
|
+
export declare function updateTargetGitignore(targetDir: string, relativePaths: string[]): void;
|
|
19
28
|
/**
|
|
20
|
-
*
|
|
29
|
+
* Update .loadouts/.gitignore with state file entries.
|
|
30
|
+
* Always includes .state.json and .fallback-applied.
|
|
21
31
|
*/
|
|
22
|
-
export declare function
|
|
32
|
+
export declare function updateLoadoutsGitignore(loadoutsDir: string): void;
|
|
23
33
|
/**
|
|
24
|
-
*
|
|
34
|
+
* Compute gitignore paths for an artifact, grouped by target directory.
|
|
35
|
+
*
|
|
36
|
+
* Returns a Map of targetBase (as stored in tool.basePath[scope]) →
|
|
37
|
+
* relative paths within that directory.
|
|
38
|
+
*
|
|
39
|
+
* Instruction artifacts (CLAUDE.md, AGENTS.md) that resolve outside the
|
|
40
|
+
* tool's base directory are automatically excluded.
|
|
25
41
|
*/
|
|
26
|
-
export declare function
|
|
42
|
+
export declare function computeArtifactGitignorePaths(kindId: string, artifactName: string, scope?: Scope): Map<string, string[]>;
|
|
27
43
|
/**
|
|
28
|
-
*
|
|
44
|
+
* Rebuild gitignore entries for all artifacts in the loadouts directory.
|
|
45
|
+
*
|
|
46
|
+
* Scans all rules and skills and writes per-target .gitignore files so that
|
|
47
|
+
* every artifact is ignored regardless of whether it is currently activated.
|
|
48
|
+
* Called after artifact add/delete/import.
|
|
29
49
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
50
|
+
* @param loadoutsDir - Absolute path to .loadouts/ or ~/.config/loadouts/
|
|
51
|
+
* @param projectRoot - Project root for resolving relative target paths
|
|
52
|
+
* (unused for global scope since all paths are absolute)
|
|
53
|
+
* @param scope - "project" or "global"
|
|
32
54
|
*/
|
|
33
|
-
export declare function
|
|
55
|
+
export declare function rebuildAllGitignores(loadoutsDir: string, projectRoot: string, scope: Scope): void;
|
|
34
56
|
/**
|
|
35
|
-
*
|
|
36
|
-
* Merges with existing managed paths rather than replacing.
|
|
57
|
+
* Get the current managed paths from a target directory's .gitignore.
|
|
37
58
|
*/
|
|
38
|
-
export declare function
|
|
59
|
+
export declare function getManagedPathsFromTarget(targetDir: string): string[];
|
|
39
60
|
/**
|
|
40
|
-
* Remove
|
|
61
|
+
* Remove the legacy loadouts-managed section from the project root .gitignore.
|
|
62
|
+
* Handles both old (# <loadout>) and current (# <loadouts>) markers.
|
|
63
|
+
* Used by the `update` command to migrate from the old single-file approach.
|
|
41
64
|
*/
|
|
42
|
-
export declare function
|
|
65
|
+
export declare function removeLegacyRootGitignoreSection(projectRoot: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use getManagedPathsFromTarget instead.
|
|
68
|
+
* Still used by the update command to detect whether migration is needed.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getManagedPaths(projectRoot: string): string[];
|
|
43
71
|
//# sourceMappingURL=gitignore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAcH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAmE9C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEjE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,KAAiB,GACvB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsDvB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,GACX,IAAI,CA2BN;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAErE;AAsBD;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe1E;AAqCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D"}
|
package/dist/lib/gitignore.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Gitignore management —
|
|
2
|
+
* Gitignore management — per-target .gitignore files.
|
|
3
|
+
*
|
|
4
|
+
* Each tool's output directory (e.g., .claude/, .cursor/) gets its own
|
|
5
|
+
* .gitignore with paths relative to that directory. This ensures:
|
|
6
|
+
*
|
|
7
|
+
* - All artifacts are ignored regardless of activation state
|
|
8
|
+
* - Global scope is supported (same mechanism, absolute target dirs)
|
|
9
|
+
* - The project root .gitignore is not cluttered with tool-specific paths
|
|
10
|
+
*
|
|
11
|
+
* Gitignore is part of the artifact lifecycle (add/delete/import), not the
|
|
12
|
+
* render pipeline. Updates happen when artifacts are created or removed,
|
|
13
|
+
* not when loadouts are activated or synced.
|
|
3
14
|
*
|
|
4
15
|
* Uses markers to identify the managed section:
|
|
5
16
|
* # <loadouts>
|
|
@@ -8,40 +19,36 @@
|
|
|
8
19
|
*/
|
|
9
20
|
import * as path from "node:path";
|
|
10
21
|
import * as os from "node:os";
|
|
11
|
-
import { fileExists, readFile, writeFile } from "./fs.js";
|
|
22
|
+
import { fileExists, readFile, writeFile, listFiles, listFilesWithExtension, isDirectory, } from "./fs.js";
|
|
12
23
|
import { registry } from "../core/registry.js";
|
|
13
24
|
import { expandTemplate } from "../core/template.js";
|
|
14
25
|
const START_MARKER = "# <loadouts>";
|
|
15
26
|
const END_MARKER = "# </loadouts>";
|
|
16
27
|
const HEADER_COMMENT = "# Auto-generated by loadouts. Do not edit this section.";
|
|
28
|
+
// Legacy markers from old naming convention
|
|
29
|
+
const LEGACY_START_MARKER = "# <loadout>";
|
|
30
|
+
const LEGACY_END_MARKER = "# </loadout>";
|
|
31
|
+
// Paths always ignored within .loadouts/
|
|
32
|
+
const LOADOUTS_STATE_PATHS = [".fallback-applied", ".state.json"];
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Core write function
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
17
36
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* - Creates .gitignore if it doesn't exist
|
|
21
|
-
* - Adds or updates the managed section between markers
|
|
22
|
-
* - Preserves all user content outside the markers
|
|
23
|
-
* - Removes the section entirely if managedPaths is empty
|
|
37
|
+
* Low-level: write the managed section to a specific .gitignore file path.
|
|
24
38
|
*/
|
|
25
|
-
|
|
26
|
-
const gitignorePath = path.join(projectRoot, ".gitignore");
|
|
27
|
-
// Always include the state file
|
|
28
|
-
const allPaths = [".loadouts/.state.json", ".loadouts/.fallback-applied", ...managedPaths];
|
|
39
|
+
function updateGitignoreFile(gitignorePath, managedPaths) {
|
|
29
40
|
// Sort and deduplicate
|
|
30
|
-
const uniquePaths = [...new Set(
|
|
31
|
-
// Build the managed section content
|
|
41
|
+
const uniquePaths = [...new Set(managedPaths)].sort();
|
|
32
42
|
const managedSection = uniquePaths.length > 0
|
|
33
43
|
? `${START_MARKER}\n${HEADER_COMMENT}\n${uniquePaths.join("\n")}\n${END_MARKER}`
|
|
34
44
|
: "";
|
|
35
45
|
if (!fileExists(gitignorePath)) {
|
|
36
|
-
// Create new .gitignore with just the managed section
|
|
37
46
|
if (managedSection) {
|
|
38
47
|
writeFile(gitignorePath, managedSection + "\n");
|
|
39
48
|
}
|
|
40
49
|
return;
|
|
41
50
|
}
|
|
42
|
-
// Read existing content
|
|
43
51
|
const content = readFile(gitignorePath);
|
|
44
|
-
// Find existing managed section
|
|
45
52
|
const startIdx = content.indexOf(START_MARKER);
|
|
46
53
|
const endIdx = content.indexOf(END_MARKER);
|
|
47
54
|
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
@@ -49,21 +56,17 @@ export function updateGitignore(projectRoot, managedPaths) {
|
|
|
49
56
|
const before = content.slice(0, startIdx).trimEnd();
|
|
50
57
|
const after = content.slice(endIdx + END_MARKER.length).trimStart();
|
|
51
58
|
const parts = [before];
|
|
52
|
-
if (managedSection)
|
|
59
|
+
if (managedSection)
|
|
53
60
|
parts.push(managedSection);
|
|
54
|
-
|
|
55
|
-
if (after) {
|
|
61
|
+
if (after)
|
|
56
62
|
parts.push(after);
|
|
57
|
-
}
|
|
58
|
-
// Join with appropriate newlines
|
|
59
63
|
let newContent = parts.filter(Boolean).join("\n\n");
|
|
60
|
-
if (!newContent.endsWith("\n"))
|
|
64
|
+
if (!newContent.endsWith("\n"))
|
|
61
65
|
newContent += "\n";
|
|
62
|
-
}
|
|
63
66
|
writeFile(gitignorePath, newContent);
|
|
64
67
|
}
|
|
65
68
|
else {
|
|
66
|
-
// No existing section — append
|
|
69
|
+
// No existing section — append
|
|
67
70
|
if (!managedSection)
|
|
68
71
|
return;
|
|
69
72
|
let newContent = content.trimEnd();
|
|
@@ -71,53 +74,52 @@ export function updateGitignore(projectRoot, managedPaths) {
|
|
|
71
74
|
writeFile(gitignorePath, newContent);
|
|
72
75
|
}
|
|
73
76
|
}
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Public write functions
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
74
80
|
/**
|
|
75
|
-
*
|
|
81
|
+
* Update .gitignore within a specific target directory.
|
|
82
|
+
*
|
|
83
|
+
* @param targetDir - Absolute path to the target directory (e.g., /project/.claude or ~/.claude)
|
|
84
|
+
* @param relativePaths - Paths relative to targetDir (e.g., ["rules/foo.md", "skills/bar/"])
|
|
76
85
|
*/
|
|
77
|
-
export function
|
|
78
|
-
|
|
86
|
+
export function updateTargetGitignore(targetDir, relativePaths) {
|
|
87
|
+
updateGitignoreFile(path.join(targetDir, ".gitignore"), relativePaths);
|
|
79
88
|
}
|
|
80
89
|
/**
|
|
81
|
-
*
|
|
90
|
+
* Update .loadouts/.gitignore with state file entries.
|
|
91
|
+
* Always includes .state.json and .fallback-applied.
|
|
82
92
|
*/
|
|
83
|
-
export function
|
|
84
|
-
|
|
85
|
-
if (!fileExists(gitignorePath)) {
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
|
-
const content = readFile(gitignorePath);
|
|
89
|
-
const startIdx = content.indexOf(START_MARKER);
|
|
90
|
-
const endIdx = content.indexOf(END_MARKER);
|
|
91
|
-
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx) {
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
const section = content.slice(startIdx + START_MARKER.length, endIdx);
|
|
95
|
-
return section
|
|
96
|
-
.split("\n")
|
|
97
|
-
.map((line) => line.trim())
|
|
98
|
-
.filter((line) => line && !line.startsWith("#"));
|
|
93
|
+
export function updateLoadoutsGitignore(loadoutsDir) {
|
|
94
|
+
updateGitignoreFile(path.join(loadoutsDir, ".gitignore"), LOADOUTS_STATE_PATHS);
|
|
99
95
|
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Path computation
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
100
99
|
/**
|
|
101
|
-
* Compute
|
|
100
|
+
* Compute gitignore paths for an artifact, grouped by target directory.
|
|
101
|
+
*
|
|
102
|
+
* Returns a Map of targetBase (as stored in tool.basePath[scope]) →
|
|
103
|
+
* relative paths within that directory.
|
|
102
104
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
+
* Instruction artifacts (CLAUDE.md, AGENTS.md) that resolve outside the
|
|
106
|
+
* tool's base directory are automatically excluded.
|
|
105
107
|
*/
|
|
106
108
|
export function computeArtifactGitignorePaths(kindId, artifactName, scope = "project") {
|
|
107
109
|
const kind = registry.getKind(kindId);
|
|
108
110
|
if (!kind)
|
|
109
|
-
return
|
|
110
|
-
const
|
|
111
|
+
return new Map();
|
|
112
|
+
const byTarget = new Map();
|
|
111
113
|
for (const tool of registry.allTools()) {
|
|
114
|
+
if (!tool.supports.includes(kindId))
|
|
115
|
+
continue;
|
|
112
116
|
const mapping = registry.resolveMapping(tool.name, kindId);
|
|
113
117
|
if (!mapping)
|
|
114
118
|
continue;
|
|
115
|
-
|
|
116
|
-
// For dir-layout kinds, {name} and {stem} are the directory name
|
|
117
|
-
// For file-layout kinds, we need to include the extension
|
|
119
|
+
const targetBase = tool.basePath[scope];
|
|
118
120
|
const ext = mapping.ext ?? (kind.layout === "file" ? ".md" : "");
|
|
119
121
|
const vars = {
|
|
120
|
-
base:
|
|
122
|
+
base: targetBase,
|
|
121
123
|
home: os.homedir(),
|
|
122
124
|
stem: artifactName,
|
|
123
125
|
ext,
|
|
@@ -125,49 +127,141 @@ export function computeArtifactGitignorePaths(kindId, artifactName, scope = "pro
|
|
|
125
127
|
relative: `${kindId}s/${artifactName}${ext}`,
|
|
126
128
|
kind: kindId,
|
|
127
129
|
};
|
|
128
|
-
|
|
129
|
-
const pathTemplate = typeof mapping.path === "string"
|
|
130
|
-
? mapping.path
|
|
131
|
-
: mapping.path[scope];
|
|
130
|
+
const pathTemplate = typeof mapping.path === "string" ? mapping.path : mapping.path[scope];
|
|
132
131
|
try {
|
|
133
|
-
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
|
|
132
|
+
const expandedPath = expandTemplate(pathTemplate, scope, vars);
|
|
133
|
+
// Compute the relative path within the target directory
|
|
134
|
+
const relPath = path.relative(targetBase, expandedPath);
|
|
135
|
+
// Skip if the path escapes the target directory (e.g., instruction
|
|
136
|
+
// artifacts that expand to CLAUDE.md or AGENTS.md at the project root)
|
|
137
|
+
if (relPath.startsWith(".."))
|
|
138
|
+
continue;
|
|
139
|
+
const existing = byTarget.get(targetBase) ?? [];
|
|
140
|
+
if (kind.layout === "dir") {
|
|
141
|
+
// Dir-layout: use trailing slash so all files within are covered
|
|
142
|
+
existing.push(relPath.endsWith("/") ? relPath : relPath + "/");
|
|
137
143
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
paths.push(targetPath);
|
|
144
|
+
else {
|
|
145
|
+
existing.push(relPath);
|
|
141
146
|
}
|
|
147
|
+
byTarget.set(targetBase, existing);
|
|
142
148
|
}
|
|
143
149
|
catch {
|
|
144
|
-
// Skip if template expansion fails
|
|
145
|
-
continue;
|
|
150
|
+
// Skip if template expansion fails
|
|
146
151
|
}
|
|
147
152
|
}
|
|
148
|
-
return
|
|
153
|
+
return byTarget;
|
|
149
154
|
}
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Rebuild
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
150
158
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
159
|
+
* Rebuild gitignore entries for all artifacts in the loadouts directory.
|
|
160
|
+
*
|
|
161
|
+
* Scans all rules and skills and writes per-target .gitignore files so that
|
|
162
|
+
* every artifact is ignored regardless of whether it is currently activated.
|
|
163
|
+
* Called after artifact add/delete/import.
|
|
164
|
+
*
|
|
165
|
+
* @param loadoutsDir - Absolute path to .loadouts/ or ~/.config/loadouts/
|
|
166
|
+
* @param projectRoot - Project root for resolving relative target paths
|
|
167
|
+
* (unused for global scope since all paths are absolute)
|
|
168
|
+
* @param scope - "project" or "global"
|
|
153
169
|
*/
|
|
154
|
-
export function
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
170
|
+
export function rebuildAllGitignores(loadoutsDir, projectRoot, scope) {
|
|
171
|
+
const rulesDir = path.join(loadoutsDir, "rules");
|
|
172
|
+
const skillsDir = path.join(loadoutsDir, "skills");
|
|
173
|
+
// Collect all paths grouped by target base
|
|
174
|
+
const allByTarget = new Map();
|
|
175
|
+
// Rules
|
|
176
|
+
for (const file of listFilesWithExtension(rulesDir, ".md")) {
|
|
177
|
+
const name = file.replace(/\.md$/, "");
|
|
178
|
+
mergeIntoMap(allByTarget, computeArtifactGitignorePaths("rule", name, scope));
|
|
179
|
+
}
|
|
180
|
+
// Skills
|
|
181
|
+
for (const name of listFiles(skillsDir).filter((d) => isDirectory(path.join(skillsDir, d)))) {
|
|
182
|
+
mergeIntoMap(allByTarget, computeArtifactGitignorePaths("skill", name, scope));
|
|
183
|
+
}
|
|
184
|
+
// Write per-target .gitignore files
|
|
185
|
+
for (const [targetBase, paths] of allByTarget) {
|
|
186
|
+
const absTargetDir = path.isAbsolute(targetBase)
|
|
187
|
+
? targetBase
|
|
188
|
+
: path.join(projectRoot, targetBase);
|
|
189
|
+
updateTargetGitignore(absTargetDir, paths);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
// Read helpers
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
/**
|
|
196
|
+
* Get the current managed paths from a target directory's .gitignore.
|
|
197
|
+
*/
|
|
198
|
+
export function getManagedPathsFromTarget(targetDir) {
|
|
199
|
+
return getManagedPathsFromFile(path.join(targetDir, ".gitignore"));
|
|
200
|
+
}
|
|
201
|
+
function getManagedPathsFromFile(gitignorePath) {
|
|
202
|
+
if (!fileExists(gitignorePath))
|
|
203
|
+
return [];
|
|
204
|
+
const content = readFile(gitignorePath);
|
|
205
|
+
const startIdx = content.indexOf(START_MARKER);
|
|
206
|
+
const endIdx = content.indexOf(END_MARKER);
|
|
207
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx)
|
|
208
|
+
return [];
|
|
209
|
+
const section = content.slice(startIdx + START_MARKER.length, endIdx);
|
|
210
|
+
return section
|
|
211
|
+
.split("\n")
|
|
212
|
+
.map((line) => line.trim())
|
|
213
|
+
.filter((line) => line && !line.startsWith("#"));
|
|
161
214
|
}
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
// Migration helper
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
162
218
|
/**
|
|
163
|
-
* Remove
|
|
219
|
+
* Remove the legacy loadouts-managed section from the project root .gitignore.
|
|
220
|
+
* Handles both old (# <loadout>) and current (# <loadouts>) markers.
|
|
221
|
+
* Used by the `update` command to migrate from the old single-file approach.
|
|
164
222
|
*/
|
|
165
|
-
export function
|
|
166
|
-
const
|
|
167
|
-
if (
|
|
223
|
+
export function removeLegacyRootGitignoreSection(projectRoot) {
|
|
224
|
+
const gitignorePath = path.join(projectRoot, ".gitignore");
|
|
225
|
+
if (!fileExists(gitignorePath))
|
|
168
226
|
return;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
227
|
+
let content = readFile(gitignorePath);
|
|
228
|
+
// Remove both new and old marker sections
|
|
229
|
+
content = removeMarkerSection(content, START_MARKER, END_MARKER);
|
|
230
|
+
content = removeMarkerSection(content, LEGACY_START_MARKER, LEGACY_END_MARKER);
|
|
231
|
+
// Clean up excess blank lines
|
|
232
|
+
content = content.replace(/\n{3,}/g, "\n\n").trimEnd();
|
|
233
|
+
if (content)
|
|
234
|
+
content += "\n";
|
|
235
|
+
writeFile(gitignorePath, content || "");
|
|
236
|
+
}
|
|
237
|
+
// ---------------------------------------------------------------------------
|
|
238
|
+
// Internal utilities
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
function removeMarkerSection(content, startMarker, endMarker) {
|
|
241
|
+
const startIdx = content.indexOf(startMarker);
|
|
242
|
+
const endIdx = content.indexOf(endMarker);
|
|
243
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx)
|
|
244
|
+
return content;
|
|
245
|
+
const before = content.slice(0, startIdx).trimEnd();
|
|
246
|
+
const after = content.slice(endIdx + endMarker.length).trimStart();
|
|
247
|
+
if (before && after)
|
|
248
|
+
return before + "\n\n" + after;
|
|
249
|
+
return before || after;
|
|
250
|
+
}
|
|
251
|
+
function mergeIntoMap(target, source) {
|
|
252
|
+
for (const [key, values] of source) {
|
|
253
|
+
const existing = target.get(key) ?? [];
|
|
254
|
+
target.set(key, [...existing, ...values]);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// ---------------------------------------------------------------------------
|
|
258
|
+
// Deprecated — kept for migration use in update.ts
|
|
259
|
+
// ---------------------------------------------------------------------------
|
|
260
|
+
/**
|
|
261
|
+
* @deprecated Use getManagedPathsFromTarget instead.
|
|
262
|
+
* Still used by the update command to detect whether migration is needed.
|
|
263
|
+
*/
|
|
264
|
+
export function getManagedPaths(projectRoot) {
|
|
265
|
+
return getManagedPathsFromFile(path.join(projectRoot, ".gitignore"));
|
|
172
266
|
}
|
|
173
267
|
//# sourceMappingURL=gitignore.js.map
|