sync-worktrees 0.3.1 → 0.4.1

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.
Files changed (45) hide show
  1. package/README.md +66 -2
  2. package/dist/__tests__/integration.test.js +29 -4
  3. package/dist/__tests__/integration.test.js.map +1 -1
  4. package/dist/index.js +133 -9
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/__tests__/config-loader.service.test.d.ts +2 -0
  7. package/dist/services/__tests__/config-loader.service.test.d.ts.map +1 -0
  8. package/dist/services/__tests__/config-loader.service.test.js +222 -0
  9. package/dist/services/__tests__/config-loader.service.test.js.map +1 -0
  10. package/dist/services/__tests__/git.service.test.js +56 -0
  11. package/dist/services/__tests__/git.service.test.js.map +1 -1
  12. package/dist/services/__tests__/worktree-sync.service.test.js +151 -8
  13. package/dist/services/__tests__/worktree-sync.service.test.js.map +1 -1
  14. package/dist/services/config-loader.service.d.ts +9 -0
  15. package/dist/services/config-loader.service.d.ts.map +1 -0
  16. package/dist/services/config-loader.service.js +151 -0
  17. package/dist/services/config-loader.service.js.map +1 -0
  18. package/dist/services/git.service.d.ts +5 -1
  19. package/dist/services/git.service.d.ts.map +1 -1
  20. package/dist/services/git.service.js +29 -3
  21. package/dist/services/git.service.js.map +1 -1
  22. package/dist/services/worktree-sync.service.d.ts +1 -0
  23. package/dist/services/worktree-sync.service.d.ts.map +1 -1
  24. package/dist/services/worktree-sync.service.js +52 -9
  25. package/dist/services/worktree-sync.service.js.map +1 -1
  26. package/dist/types/index.d.ts +7 -0
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/dist/utils/__tests__/config-generator.test.d.ts +2 -0
  29. package/dist/utils/__tests__/config-generator.test.d.ts.map +1 -0
  30. package/dist/utils/__tests__/config-generator.test.js +142 -0
  31. package/dist/utils/__tests__/config-generator.test.js.map +1 -0
  32. package/dist/utils/__tests__/interactive.test.js +50 -1
  33. package/dist/utils/__tests__/interactive.test.js.map +1 -1
  34. package/dist/utils/cli.d.ts +6 -1
  35. package/dist/utils/cli.d.ts.map +1 -1
  36. package/dist/utils/cli.js +19 -0
  37. package/dist/utils/cli.js.map +1 -1
  38. package/dist/utils/config-generator.d.ts +4 -0
  39. package/dist/utils/config-generator.d.ts.map +1 -0
  40. package/dist/utils/config-generator.js +77 -0
  41. package/dist/utils/config-generator.js.map +1 -0
  42. package/dist/utils/interactive.d.ts.map +1 -1
  43. package/dist/utils/interactive.js +35 -0
  44. package/dist/utils/interactive.js.map +1 -1
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -9,6 +9,7 @@ Automatically synchronize Git worktrees with remote branches. Keep your local wo
9
9
  - ⏰ Run as a scheduled cron job or one-time execution
10
10
  - 🛡️ Safe operations - won't delete worktrees with uncommitted changes or unpushed commits
11
11
  - 📝 Clear logging with timestamps and progress indicators
12
+ - 📋 Config file support for managing multiple repositories
12
13
 
13
14
  ## Installation
14
15
 
@@ -46,17 +47,28 @@ sync-worktrees \
46
47
  --runOnce
47
48
  ```
48
49
 
50
+ ### Using a config file
51
+
52
+ ```bash
53
+ sync-worktrees --config ./sync-worktrees.config.js
54
+ ```
55
+
49
56
  ## Options
50
57
 
51
58
  | Option | Alias | Description | Required | Default |
52
59
  |--------|-------|-------------|----------|---------|
53
- | `--repoPath` | `-r` | Absolute path to the target repository | Yes | - |
60
+ | `--config` | `-c` | Path to JavaScript config file | No | - |
61
+ | `--filter` | `-f` | Filter repositories by name (wildcards supported) | No | - |
62
+ | `--list` | `-l` | List configured repositories and exit | No | `false` |
63
+ | `--repoPath` | `-r` | Absolute path to the target repository | Yes* | - |
54
64
  | `--repoUrl` | `-u` | Git repository URL for cloning | No | - |
55
- | `--worktreeDir` | `-w` | Directory for storing worktrees | Yes | - |
65
+ | `--worktreeDir` | `-w` | Directory for storing worktrees | Yes* | - |
56
66
  | `--cronSchedule` | `-s` | Cron pattern for scheduling | No | `0 * * * *` (hourly) |
57
67
  | `--runOnce` | - | Execute once and exit | No | `false` |
58
68
  | `--help` | `-h` | Show help | No | - |
59
69
 
70
+ \* Required when not using a config file
71
+
60
72
  ## Examples
61
73
 
62
74
  ### Basic one-time sync
@@ -78,6 +90,58 @@ sync-worktrees \
78
90
  --runOnce
79
91
  ```
80
92
 
93
+ ### Using a config file
94
+ ```bash
95
+ # Sync all repositories in config
96
+ sync-worktrees --config ./sync-worktrees.config.js
97
+
98
+ # Sync specific repositories
99
+ sync-worktrees --config ./sync-worktrees.config.js --filter "frontend-*,backend-*"
100
+
101
+ # List configured repositories
102
+ sync-worktrees --config ./sync-worktrees.config.js --list
103
+
104
+ # Override config settings
105
+ sync-worktrees --config ./sync-worktrees.config.js --runOnce
106
+ ```
107
+
108
+ ## Configuration File
109
+
110
+ The config file is a JavaScript module that exports configuration for multiple repositories. This allows you to manage multiple repositories with different settings in a single command.
111
+
112
+ ### Basic Config Structure
113
+
114
+ ```javascript
115
+ module.exports = {
116
+ // Optional global defaults
117
+ defaults: {
118
+ cronSchedule: "0 * * * *",
119
+ runOnce: false
120
+ },
121
+
122
+ // Array of repository configurations
123
+ repositories: [
124
+ {
125
+ name: "my-project", // Unique identifier
126
+ repoUrl: "https://github.com/user/repo.git",
127
+ repoPath: "/path/to/repo",
128
+ worktreeDir: "/path/to/worktrees",
129
+ cronSchedule: "*/30 * * * *", // Override default
130
+ runOnce: false // Override default
131
+ }
132
+ ]
133
+ };
134
+ ```
135
+
136
+ ### Advanced Features
137
+
138
+ - **Environment variables**: Use `process.env` to read from environment
139
+ - **Dynamic paths**: Use Node.js modules like `path` and `os`
140
+ - **Conditional config**: Include/exclude repos based on environment
141
+ - **Relative paths**: Resolved relative to the config file location
142
+
143
+ See `sync-worktrees.config.example.js` for more examples.
144
+
81
145
  ## How it works
82
146
 
83
147
  1. **Initialization**: Clones the repository if it doesn't exist (when `--repoUrl` is provided)
@@ -248,6 +248,29 @@ globals_1.jest.mock("node-cron");
248
248
  "old-feature", // Remove (not in remote)
249
249
  "dirty-branch", // Skip removal (has changes)
250
250
  ]);
251
+ // Mock git worktree list --porcelain
252
+ const mockRawCalls = [];
253
+ mockGit.raw.mockImplementation(async (args) => {
254
+ mockRawCalls.push(args);
255
+ if (args[0] === "worktree" && args[1] === "list" && args[2] === "--porcelain") {
256
+ return `worktree /test/repo
257
+ branch refs/heads/main
258
+
259
+ worktree /test/worktrees/feature-1
260
+ branch refs/heads/feature-1
261
+
262
+ worktree /test/worktrees/old-feature
263
+ branch refs/heads/old-feature
264
+
265
+ worktree /test/worktrees/dirty-branch
266
+ branch refs/heads/dirty-branch
267
+ `;
268
+ }
269
+ return "";
270
+ });
271
+ // Mock fs.stat and fs.rm for orphaned directory cleanup
272
+ fs.stat.mockResolvedValue({ isDirectory: globals_1.jest.fn().mockReturnValue(true) });
273
+ fs.rm.mockResolvedValue(undefined);
251
274
  // Mock status checks
252
275
  const statusChecks = new Map([
253
276
  ["/test/worktrees/old-feature", true], // Clean, can remove
@@ -261,12 +284,14 @@ globals_1.jest.mock("node-cron");
261
284
  const service = new worktree_sync_service_1.WorktreeSyncService(config);
262
285
  await service.initialize();
263
286
  await service.sync();
287
+ // Filter out the worktree list calls
288
+ const operationCalls = mockRawCalls.filter((args) => !(args[1] === "list" && args[2] === "--porcelain"));
264
289
  // Should add feature-2
265
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
266
- // Should remove old-feature
267
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "remove", "old-feature", "--force"]);
290
+ (0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
291
+ // Should remove old-feature with full path
292
+ (0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "remove", "/test/worktrees/old-feature", "--force"]);
268
293
  // Should NOT remove dirty-branch
269
- (0, globals_1.expect)(mockGit.raw).not.toHaveBeenCalledWith(["worktree", "remove", "dirty-branch", "--force"]);
294
+ (0, globals_1.expect)(operationCalls).not.toContainEqual(["worktree", "remove", "/test/worktrees/dirty-branch", "--force"]);
270
295
  // Should log warning about dirty-branch
271
296
  (0, globals_1.expect)(console.log).toHaveBeenCalledWith(globals_1.expect.stringContaining("Skipping removal of 'dirty-branch'"));
272
297
  });
@@ -1 +1 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -35,19 +35,13 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  })();
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  const path = __importStar(require("path"));
38
+ const prompts_1 = require("@inquirer/prompts");
38
39
  const cron = __importStar(require("node-cron"));
40
+ const config_loader_service_1 = require("./services/config-loader.service");
39
41
  const worktree_sync_service_1 = require("./services/worktree-sync.service");
40
42
  const cli_1 = require("./utils/cli");
41
43
  const interactive_1 = require("./utils/interactive");
42
- async function main() {
43
- const partialConfig = (0, cli_1.parseArguments)();
44
- let config;
45
- if ((0, cli_1.isInteractiveMode)(partialConfig)) {
46
- config = await (0, interactive_1.promptForConfig)(partialConfig);
47
- }
48
- else {
49
- config = partialConfig;
50
- }
44
+ async function runSingleRepository(config) {
51
45
  console.log("\n📋 CLI Command (for future reference):");
52
46
  console.log(` ${(0, cli_1.reconstructCliCommand)(config)}`);
53
47
  console.log("");
@@ -80,6 +74,136 @@ async function main() {
80
74
  process.exit(1);
81
75
  }
82
76
  }
77
+ async function runMultipleRepositories(repositories, runOnce) {
78
+ const services = new Map();
79
+ console.log(`\n🔄 Syncing ${repositories.length} repositories...`);
80
+ for (const repoConfig of repositories) {
81
+ console.log(`\n📦 Repository: ${repoConfig.name}`);
82
+ console.log(` Path: ${repoConfig.repoPath}`);
83
+ console.log(` Worktrees: ${repoConfig.worktreeDir}`);
84
+ const syncService = new worktree_sync_service_1.WorktreeSyncService(repoConfig);
85
+ services.set(repoConfig.name, syncService);
86
+ try {
87
+ await syncService.initialize();
88
+ await syncService.sync();
89
+ }
90
+ catch (error) {
91
+ console.error(`❌ Error syncing repository '${repoConfig.name}':`, error.message);
92
+ }
93
+ }
94
+ if (!runOnce) {
95
+ console.log("\n⏰ Scheduling cron jobs for all repositories...");
96
+ const cronJobs = new Map();
97
+ for (const repoConfig of repositories) {
98
+ const syncService = services.get(repoConfig.name);
99
+ if (!syncService)
100
+ continue;
101
+ if (!cronJobs.has(repoConfig.cronSchedule)) {
102
+ cronJobs.set(repoConfig.cronSchedule, repoConfig.cronSchedule);
103
+ cron.schedule(repoConfig.cronSchedule, async () => {
104
+ const reposToSync = repositories.filter((r) => r.cronSchedule === repoConfig.cronSchedule);
105
+ for (const repo of reposToSync) {
106
+ const service = services.get(repo.name);
107
+ if (!service)
108
+ continue;
109
+ console.log(`\n🔄 Running scheduled sync for: ${repo.name}`);
110
+ try {
111
+ await service.sync();
112
+ }
113
+ catch (error) {
114
+ console.error(`Error during scheduled sync for '${repo.name}':`, error);
115
+ }
116
+ }
117
+ });
118
+ }
119
+ }
120
+ console.log("\n✅ All repositories scheduled. Waiting for next runs...");
121
+ for (const [schedule] of cronJobs) {
122
+ const repoCount = repositories.filter((r) => r.cronSchedule === schedule).length;
123
+ console.log(` ${schedule}: ${repoCount} repository(ies)`);
124
+ }
125
+ }
126
+ }
127
+ async function listRepositories(configPath) {
128
+ const configLoader = new config_loader_service_1.ConfigLoaderService();
129
+ try {
130
+ const configFile = await configLoader.loadConfigFile(configPath);
131
+ const configDir = path.dirname(path.resolve(configPath));
132
+ console.log("\n📋 Configured repositories:\n");
133
+ configFile.repositories.forEach((repo, index) => {
134
+ const resolved = configLoader.resolveRepositoryConfig(repo, configFile.defaults, configDir);
135
+ console.log(`${index + 1}. ${resolved.name}`);
136
+ console.log(` Repository: ${resolved.repoPath}`);
137
+ console.log(` Worktrees: ${resolved.worktreeDir}`);
138
+ console.log(` Schedule: ${resolved.cronSchedule}`);
139
+ console.log(` Run Once: ${resolved.runOnce}`);
140
+ if (resolved.repoUrl) {
141
+ console.log(` URL: ${resolved.repoUrl}`);
142
+ }
143
+ console.log("");
144
+ });
145
+ }
146
+ catch (error) {
147
+ console.error("❌ Error loading config file:", error.message);
148
+ process.exit(1);
149
+ }
150
+ }
151
+ async function main() {
152
+ const options = (0, cli_1.parseArguments)();
153
+ if (options.config) {
154
+ const configLoader = new config_loader_service_1.ConfigLoaderService();
155
+ if (options.list) {
156
+ await listRepositories(options.config);
157
+ return;
158
+ }
159
+ try {
160
+ const configFile = await configLoader.loadConfigFile(options.config);
161
+ const configDir = path.dirname(path.resolve(options.config));
162
+ let repositories = configFile.repositories.map((repo) => configLoader.resolveRepositoryConfig(repo, configFile.defaults, configDir));
163
+ if (options.filter) {
164
+ repositories = configLoader.filterRepositories(repositories, options.filter);
165
+ if (repositories.length === 0) {
166
+ console.error(`❌ No repositories match filter: ${options.filter}`);
167
+ process.exit(1);
168
+ }
169
+ }
170
+ const globalRunOnce = options.runOnce ?? configFile.defaults?.runOnce ?? false;
171
+ await runMultipleRepositories(repositories, globalRunOnce);
172
+ }
173
+ catch (error) {
174
+ if (error instanceof Error && error.message.includes("Config file not found")) {
175
+ console.error(`\n❌ Config file not found: ${options.config}`);
176
+ const createConfig = await (0, prompts_1.confirm)({
177
+ message: "Would you like to run interactive setup to create a config file?",
178
+ default: true,
179
+ });
180
+ if (createConfig) {
181
+ // Run interactive mode which will offer to save config
182
+ const config = await (0, interactive_1.promptForConfig)({});
183
+ await runSingleRepository(config);
184
+ }
185
+ else {
186
+ console.log("\n💡 You can create a config file manually or run without --config for interactive setup.");
187
+ process.exit(1);
188
+ }
189
+ }
190
+ else {
191
+ console.error("❌ Error loading config file:", error.message);
192
+ process.exit(1);
193
+ }
194
+ }
195
+ }
196
+ else {
197
+ let config;
198
+ if ((0, cli_1.isInteractiveMode)(options)) {
199
+ config = await (0, interactive_1.promptForConfig)(options);
200
+ }
201
+ else {
202
+ config = options;
203
+ }
204
+ await runSingleRepository(config);
205
+ }
206
+ }
83
207
  main().catch((error) => {
84
208
  console.error("❌ Unhandled error:", error);
85
209
  process.exit(1);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAE7B,gDAAkC;AAElC,4EAAuE;AACvE,qCAAuF;AACvF,qDAAsD;AAItD,KAAK,UAAU,IAAI;IACjB,MAAM,aAAa,GAAG,IAAA,oBAAc,GAAE,CAAC;IAEvC,IAAI,MAAc,CAAC;IACnB,IAAI,IAAA,uBAAiB,EAAC,aAAa,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,aAAa,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,aAAuB,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,2BAAqB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAElF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YAEzB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YAErD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBAC5C,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config-loader.service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/config-loader.service.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs/promises"));
37
+ const path = __importStar(require("path"));
38
+ const globals_1 = require("@jest/globals");
39
+ const config_loader_service_1 = require("../config-loader.service");
40
+ (0, globals_1.describe)("ConfigLoaderService", () => {
41
+ let configLoader;
42
+ let tempDir;
43
+ (0, globals_1.beforeEach)(async () => {
44
+ configLoader = new config_loader_service_1.ConfigLoaderService();
45
+ tempDir = await fs.mkdtemp(path.join(process.cwd(), "test-config-"));
46
+ });
47
+ afterEach(async () => {
48
+ await fs.rm(tempDir, { recursive: true, force: true });
49
+ });
50
+ (0, globals_1.describe)("loadConfigFile", () => {
51
+ (0, globals_1.it)("should load a valid config file", async () => {
52
+ const configPath = path.join(tempDir, "test.config.js");
53
+ const configContent = `
54
+ module.exports = {
55
+ repositories: [
56
+ {
57
+ name: "test-repo",
58
+ repoPath: "/path/to/repo",
59
+ worktreeDir: "/path/to/worktrees"
60
+ }
61
+ ]
62
+ };
63
+ `;
64
+ await fs.writeFile(configPath, configContent);
65
+ const config = await configLoader.loadConfigFile(configPath);
66
+ (0, globals_1.expect)(config.repositories).toHaveLength(1);
67
+ (0, globals_1.expect)(config.repositories[0].name).toBe("test-repo");
68
+ });
69
+ (0, globals_1.it)("should load config with defaults", async () => {
70
+ const configPath = path.join(tempDir, "test.config.js");
71
+ const configContent = `
72
+ module.exports = {
73
+ defaults: {
74
+ cronSchedule: "*/30 * * * *",
75
+ runOnce: true
76
+ },
77
+ repositories: [
78
+ {
79
+ name: "test-repo",
80
+ repoPath: "/path/to/repo",
81
+ worktreeDir: "/path/to/worktrees"
82
+ }
83
+ ]
84
+ };
85
+ `;
86
+ await fs.writeFile(configPath, configContent);
87
+ const config = await configLoader.loadConfigFile(configPath);
88
+ (0, globals_1.expect)(config.defaults).toEqual({
89
+ cronSchedule: "*/30 * * * *",
90
+ runOnce: true,
91
+ });
92
+ });
93
+ (0, globals_1.it)("should throw error for non-existent file", async () => {
94
+ const configPath = path.join(tempDir, "non-existent.config.js");
95
+ await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file not found");
96
+ });
97
+ (0, globals_1.it)("should throw error for invalid config format", async () => {
98
+ const configPath = path.join(tempDir, "invalid.config.js");
99
+ const configContent = `module.exports = "not an object";`;
100
+ await fs.writeFile(configPath, configContent);
101
+ await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file must export an object");
102
+ });
103
+ (0, globals_1.it)("should throw error for missing repositories array", async () => {
104
+ const configPath = path.join(tempDir, "invalid.config.js");
105
+ const configContent = `module.exports = { defaults: {} };`;
106
+ await fs.writeFile(configPath, configContent);
107
+ await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file must have a 'repositories' array");
108
+ });
109
+ (0, globals_1.it)("should throw error for duplicate repository names", async () => {
110
+ const configPath = path.join(tempDir, "duplicate.config.js");
111
+ const configContent = `
112
+ module.exports = {
113
+ repositories: [
114
+ {
115
+ name: "duplicate",
116
+ repoPath: "/path1",
117
+ worktreeDir: "/worktrees1"
118
+ },
119
+ {
120
+ name: "duplicate",
121
+ repoPath: "/path2",
122
+ worktreeDir: "/worktrees2"
123
+ }
124
+ ]
125
+ };
126
+ `;
127
+ await fs.writeFile(configPath, configContent);
128
+ await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Duplicate repository name: duplicate");
129
+ });
130
+ });
131
+ (0, globals_1.describe)("resolveRepositoryConfig", () => {
132
+ (0, globals_1.it)("should resolve relative paths", () => {
133
+ const repo = {
134
+ name: "test",
135
+ repoPath: "./relative/path",
136
+ worktreeDir: "./relative/worktrees",
137
+ cronSchedule: "0 * * * *",
138
+ runOnce: false,
139
+ };
140
+ const resolved = configLoader.resolveRepositoryConfig(repo, {}, "/base/dir");
141
+ (0, globals_1.expect)(resolved.repoPath).toBe("/base/dir/relative/path");
142
+ (0, globals_1.expect)(resolved.worktreeDir).toBe("/base/dir/relative/worktrees");
143
+ });
144
+ (0, globals_1.it)("should preserve absolute paths", () => {
145
+ const repo = {
146
+ name: "test",
147
+ repoPath: "/absolute/path",
148
+ worktreeDir: "/absolute/worktrees",
149
+ cronSchedule: "0 * * * *",
150
+ runOnce: false,
151
+ };
152
+ const resolved = configLoader.resolveRepositoryConfig(repo, {}, "/base/dir");
153
+ (0, globals_1.expect)(resolved.repoPath).toBe("/absolute/path");
154
+ (0, globals_1.expect)(resolved.worktreeDir).toBe("/absolute/worktrees");
155
+ });
156
+ (0, globals_1.it)("should apply defaults", () => {
157
+ const repo = {
158
+ name: "test",
159
+ repoPath: "/path",
160
+ worktreeDir: "/worktrees",
161
+ cronSchedule: undefined,
162
+ runOnce: undefined,
163
+ };
164
+ const defaults = {
165
+ cronSchedule: "*/15 * * * *",
166
+ runOnce: true,
167
+ };
168
+ const resolved = configLoader.resolveRepositoryConfig(repo, defaults);
169
+ (0, globals_1.expect)(resolved.cronSchedule).toBe("*/15 * * * *");
170
+ (0, globals_1.expect)(resolved.runOnce).toBe(true);
171
+ });
172
+ (0, globals_1.it)("should override defaults with repo config", () => {
173
+ const repo = {
174
+ name: "test",
175
+ repoPath: "/path",
176
+ worktreeDir: "/worktrees",
177
+ cronSchedule: "0 0 * * *",
178
+ runOnce: false,
179
+ };
180
+ const defaults = {
181
+ cronSchedule: "*/15 * * * *",
182
+ runOnce: true,
183
+ };
184
+ const resolved = configLoader.resolveRepositoryConfig(repo, defaults);
185
+ (0, globals_1.expect)(resolved.cronSchedule).toBe("0 0 * * *");
186
+ (0, globals_1.expect)(resolved.runOnce).toBe(false);
187
+ });
188
+ });
189
+ (0, globals_1.describe)("filterRepositories", () => {
190
+ const repos = [
191
+ { name: "frontend-app", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
192
+ { name: "backend-api", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
193
+ { name: "docs", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
194
+ { name: "admin-dashboard", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
195
+ ];
196
+ (0, globals_1.it)("should return all repos when no filter", () => {
197
+ const filtered = configLoader.filterRepositories(repos);
198
+ (0, globals_1.expect)(filtered).toEqual(repos);
199
+ });
200
+ (0, globals_1.it)("should filter by exact name", () => {
201
+ const filtered = configLoader.filterRepositories(repos, "docs");
202
+ (0, globals_1.expect)(filtered).toHaveLength(1);
203
+ (0, globals_1.expect)(filtered[0].name).toBe("docs");
204
+ });
205
+ (0, globals_1.it)("should filter by wildcard pattern", () => {
206
+ const filtered = configLoader.filterRepositories(repos, "*-app");
207
+ (0, globals_1.expect)(filtered).toHaveLength(1);
208
+ (0, globals_1.expect)(filtered[0].name).toBe("frontend-app");
209
+ });
210
+ (0, globals_1.it)("should filter by multiple patterns", () => {
211
+ const filtered = configLoader.filterRepositories(repos, "docs,*-api");
212
+ (0, globals_1.expect)(filtered).toHaveLength(2);
213
+ (0, globals_1.expect)(filtered.map((r) => r.name)).toEqual(["backend-api", "docs"]);
214
+ });
215
+ (0, globals_1.it)("should handle complex wildcard patterns", () => {
216
+ const filtered = configLoader.filterRepositories(repos, "*end*");
217
+ (0, globals_1.expect)(filtered).toHaveLength(2);
218
+ (0, globals_1.expect)(filtered.map((r) => r.name).sort()).toEqual(["backend-api", "frontend-app"]);
219
+ });
220
+ });
221
+ });
222
+ //# sourceMappingURL=config-loader.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/config-loader.service.test.ts"],"names":[],"mappings":"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"}