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.
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
1
  /**
2
- * Gitignore management — update .gitignore with loadout-managed paths.
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 with loadout-managed paths.
22
+ * Update .gitignore within a specific target directory.
12
23
  *
13
- * - Creates .gitignore if it doesn't exist
14
- * - Adds or updates the managed section between markers
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 updateGitignore(projectRoot: string, managedPaths: string[]): void;
27
+ export declare function updateTargetGitignore(targetDir: string, relativePaths: string[]): void;
19
28
  /**
20
- * Remove the loadout-managed section from .gitignore.
29
+ * Update .loadouts/.gitignore with state file entries.
30
+ * Always includes .state.json and .fallback-applied.
21
31
  */
22
- export declare function removeGitignoreSection(projectRoot: string): void;
32
+ export declare function updateLoadoutsGitignore(loadoutsDir: string): void;
23
33
  /**
24
- * Get the current managed paths from .gitignore (for testing/inspection).
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 getManagedPaths(projectRoot: string): string[];
42
+ export declare function computeArtifactGitignorePaths(kindId: string, artifactName: string, scope?: Scope): Map<string, string[]>;
27
43
  /**
28
- * Compute the gitignore paths for an artifact across all tools.
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
- * For dir-layout kinds (skills), returns directory paths with trailing slash.
31
- * For file-layout kinds (rules), returns individual file paths.
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 computeArtifactGitignorePaths(kindId: string, artifactName: string, scope?: Scope): string[];
55
+ export declare function rebuildAllGitignores(loadoutsDir: string, projectRoot: string, scope: Scope): void;
34
56
  /**
35
- * Add gitignore paths for a newly created artifact.
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 addArtifactToGitignore(projectRoot: string, kindId: string, artifactName: string, scope?: Scope): void;
59
+ export declare function getManagedPathsFromTarget(targetDir: string): string[];
39
60
  /**
40
- * Remove gitignore paths for a deleted artifact.
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 removeArtifactFromGitignore(projectRoot: string, kindId: string, artifactName: string, scope?: Scope): void;
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;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CA0DN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,KAAiB,GACvB,MAAM,EAAE,CAiDV;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,KAAiB,GACvB,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,KAAiB,GACvB,IAAI,CAUN"}
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"}
@@ -1,5 +1,16 @@
1
1
  /**
2
- * Gitignore management — update .gitignore with loadout-managed paths.
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
- * Update .gitignore with loadout-managed paths.
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
- export function updateGitignore(projectRoot, managedPaths) {
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(allPaths)].sort();
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 the managed section
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
- * Remove the loadout-managed section from .gitignore.
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 removeGitignoreSection(projectRoot) {
78
- updateGitignore(projectRoot, []);
86
+ export function updateTargetGitignore(targetDir, relativePaths) {
87
+ updateGitignoreFile(path.join(targetDir, ".gitignore"), relativePaths);
79
88
  }
80
89
  /**
81
- * Get the current managed paths from .gitignore (for testing/inspection).
90
+ * Update .loadouts/.gitignore with state file entries.
91
+ * Always includes .state.json and .fallback-applied.
82
92
  */
83
- export function getManagedPaths(projectRoot) {
84
- const gitignorePath = path.join(projectRoot, ".gitignore");
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 the gitignore paths for an artifact across all tools.
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
- * For dir-layout kinds (skills), returns directory paths with trailing slash.
104
- * For file-layout kinds (rules), returns individual file paths.
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 paths = [];
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
- // Build template variables
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: tool.basePath[scope],
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
- // Expand the path template
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
- let targetPath = expandTemplate(pathTemplate, scope, vars);
134
- // For dir-layout kinds, ensure trailing slash for directory pattern
135
- if (kind.layout === "dir" && !targetPath.endsWith("/")) {
136
- targetPath += "/";
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
- // Only include project-relative paths (skip global/absolute paths)
139
- if (!path.isAbsolute(targetPath)) {
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 (e.g., missing variables)
145
- continue;
150
+ // Skip if template expansion fails
146
151
  }
147
152
  }
148
- return paths;
153
+ return byTarget;
149
154
  }
155
+ // ---------------------------------------------------------------------------
156
+ // Rebuild
157
+ // ---------------------------------------------------------------------------
150
158
  /**
151
- * Add gitignore paths for a newly created artifact.
152
- * Merges with existing managed paths rather than replacing.
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 addArtifactToGitignore(projectRoot, kindId, artifactName, scope = "project") {
155
- const newPaths = computeArtifactGitignorePaths(kindId, artifactName, scope);
156
- if (newPaths.length === 0)
157
- return;
158
- const existingPaths = getManagedPaths(projectRoot);
159
- const mergedPaths = [...new Set([...existingPaths, ...newPaths])];
160
- updateGitignore(projectRoot, mergedPaths);
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 gitignore paths for a deleted artifact.
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 removeArtifactFromGitignore(projectRoot, kindId, artifactName, scope = "project") {
166
- const pathsToRemove = new Set(computeArtifactGitignorePaths(kindId, artifactName, scope));
167
- if (pathsToRemove.size === 0)
223
+ export function removeLegacyRootGitignoreSection(projectRoot) {
224
+ const gitignorePath = path.join(projectRoot, ".gitignore");
225
+ if (!fileExists(gitignorePath))
168
226
  return;
169
- const existingPaths = getManagedPaths(projectRoot);
170
- const filteredPaths = existingPaths.filter((p) => !pathsToRemove.has(p));
171
- updateGitignore(projectRoot, filteredPaths);
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