sync-worktrees 0.3.0 → 0.4.0
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/README.md +66 -2
- package/dist/__tests__/integration.test.js +56 -3
- package/dist/__tests__/integration.test.js.map +1 -1
- package/dist/index.js +133 -9
- package/dist/index.js.map +1 -1
- package/dist/services/__tests__/config-loader.service.test.d.ts +2 -0
- package/dist/services/__tests__/config-loader.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/config-loader.service.test.js +222 -0
- package/dist/services/__tests__/config-loader.service.test.js.map +1 -0
- package/dist/services/__tests__/git.service.test.js +56 -0
- package/dist/services/__tests__/git.service.test.js.map +1 -1
- package/dist/services/__tests__/worktree-sync.service.test.js +88 -10
- package/dist/services/__tests__/worktree-sync.service.test.js.map +1 -1
- package/dist/services/config-loader.service.d.ts +9 -0
- package/dist/services/config-loader.service.d.ts.map +1 -0
- package/dist/services/config-loader.service.js +151 -0
- package/dist/services/config-loader.service.js.map +1 -0
- package/dist/services/git.service.d.ts +5 -0
- package/dist/services/git.service.d.ts.map +1 -1
- package/dist/services/git.service.js +31 -0
- package/dist/services/git.service.js.map +1 -1
- package/dist/services/worktree-sync.service.d.ts +1 -0
- package/dist/services/worktree-sync.service.d.ts.map +1 -1
- package/dist/services/worktree-sync.service.js +41 -8
- package/dist/services/worktree-sync.service.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/__tests__/config-generator.test.d.ts +2 -0
- package/dist/utils/__tests__/config-generator.test.d.ts.map +1 -0
- package/dist/utils/__tests__/config-generator.test.js +142 -0
- package/dist/utils/__tests__/config-generator.test.js.map +1 -0
- package/dist/utils/__tests__/interactive.test.js +50 -1
- package/dist/utils/__tests__/interactive.test.js.map +1 -1
- package/dist/utils/cli.d.ts +6 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +19 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/config-generator.d.ts +4 -0
- package/dist/utils/config-generator.d.ts.map +1 -0
- package/dist/utils/config-generator.js +77 -0
- package/dist/utils/config-generator.js.map +1 -0
- package/dist/utils/interactive.d.ts.map +1 -1
- package/dist/utils/interactive.js +35 -0
- package/dist/utils/interactive.js.map +1 -1
- 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
|
-
| `--
|
|
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)
|
|
@@ -101,6 +101,34 @@ globals_1.jest.mock("node-cron");
|
|
|
101
101
|
// Should prune at the end
|
|
102
102
|
(0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "prune"]);
|
|
103
103
|
});
|
|
104
|
+
(0, globals_1.it)("should skip creating worktree for currently checked out branch", async () => {
|
|
105
|
+
// Mock readdir to return empty (no existing worktrees)
|
|
106
|
+
fs.readdir.mockResolvedValueOnce([]);
|
|
107
|
+
// Mock branch calls - first for remote branches, second for current branch
|
|
108
|
+
mockGit.branch
|
|
109
|
+
.mockResolvedValueOnce({
|
|
110
|
+
all: ["origin/main", "origin/feature-1", "origin/feature-2"],
|
|
111
|
+
current: "feature-1",
|
|
112
|
+
})
|
|
113
|
+
.mockResolvedValueOnce({
|
|
114
|
+
current: "feature-1",
|
|
115
|
+
});
|
|
116
|
+
const config = {
|
|
117
|
+
repoPath: "/test/repo",
|
|
118
|
+
repoUrl: "https://github.com/test/repo.git",
|
|
119
|
+
worktreeDir: "/test/worktrees",
|
|
120
|
+
cronSchedule: "0 * * * *",
|
|
121
|
+
runOnce: true,
|
|
122
|
+
};
|
|
123
|
+
const service = new worktree_sync_service_1.WorktreeSyncService(config);
|
|
124
|
+
await service.initialize();
|
|
125
|
+
await service.sync();
|
|
126
|
+
// Should NOT create worktree for feature-1 (current branch)
|
|
127
|
+
(0, globals_1.expect)(mockGit.raw).not.toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-1", "feature-1"]);
|
|
128
|
+
// Should create worktrees for main and feature-2
|
|
129
|
+
(0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/main", "main"]);
|
|
130
|
+
(0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
|
|
131
|
+
});
|
|
104
132
|
(0, globals_1.it)("should handle repository cloning on first run", async () => {
|
|
105
133
|
// Simulate repo doesn't exist
|
|
106
134
|
fs.access.mockRejectedValueOnce(new Error("ENOENT"));
|
|
@@ -220,6 +248,29 @@ globals_1.jest.mock("node-cron");
|
|
|
220
248
|
"old-feature", // Remove (not in remote)
|
|
221
249
|
"dirty-branch", // Skip removal (has changes)
|
|
222
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);
|
|
223
274
|
// Mock status checks
|
|
224
275
|
const statusChecks = new Map([
|
|
225
276
|
["/test/worktrees/old-feature", true], // Clean, can remove
|
|
@@ -233,12 +284,14 @@ globals_1.jest.mock("node-cron");
|
|
|
233
284
|
const service = new worktree_sync_service_1.WorktreeSyncService(config);
|
|
234
285
|
await service.initialize();
|
|
235
286
|
await service.sync();
|
|
287
|
+
// Filter out the worktree list calls
|
|
288
|
+
const operationCalls = mockRawCalls.filter((args) => !(args[1] === "list" && args[2] === "--porcelain"));
|
|
236
289
|
// Should add feature-2
|
|
237
|
-
(0, globals_1.expect)(
|
|
290
|
+
(0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
|
|
238
291
|
// Should remove old-feature
|
|
239
|
-
(0, globals_1.expect)(
|
|
292
|
+
(0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "remove", "old-feature", "--force"]);
|
|
240
293
|
// Should NOT remove dirty-branch
|
|
241
|
-
(0, globals_1.expect)(
|
|
294
|
+
(0, globals_1.expect)(operationCalls).not.toContainEqual(["worktree", "remove", "dirty-branch", "--force"]);
|
|
242
295
|
// Should log warning about dirty-branch
|
|
243
296
|
(0, globals_1.expect)(console.log).toHaveBeenCalledWith(globals_1.expect.stringContaining("Skipping removal of 'dirty-branch'"));
|
|
244
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAElC,2CAAuE;AACvE,gDAAkC;AAClC,4DAAmC;AAEnC,6EAAwE;AAKxE,iCAAiC;AACjC,cAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,cAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvB,uDAAuD;AAEvD,IAAA,kBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,OAA+B,CAAC;IACpC,IAAI,iBAAwD,CAAC;IAE7D,IAAA,oBAAU,EAAC,GAAG,EAAE;QACd,cAAI,CAAC,aAAa,EAAE,CAAC;QAErB,iBAAiB;QACjB,OAAO,GAAG;YACR,KAAK,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAClD,MAAM,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC;gBACvC,GAAG,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;gBAC5D,OAAO,EAAE,MAAM;aAChB,CAAC;YACF,GAAG,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC;gBACvC,OAAO,EAAE,cAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;aACzC,CAAC;YACF,KAAK,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAC5C,CAAC;QAER,oBAAkC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE7D,kBAAkB;QAClB,iBAAiB,GAAG;YAClB,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;YAChB,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;SAChB,CAAC;QACD,IAAI,CAAC,QAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAEhE,gBAAgB;QACf,EAAE,CAAC,MAAyB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1D,EAAE,CAAC,KAAwB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACzD,EAAE,CAAC,OAA0B,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAA,YAAE,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAEhD,sBAAsB;YACtB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,2BAA2B;YAC3B,IAAA,gBAAM,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACrD,IAAA,gBAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YACjE,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,IAAA,gBAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAA,gBAAM,EAAC,EAAE,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;YAE3D,sDAAsD;YACtD,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;YACxG,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;YAExG,0BAA0B;YAC1B,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,uDAAuD;YACtD,EAAE,CAAC,OAA0B,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAEzD,2EAA2E;YAC3E,OAAO,CAAC,MAAM;iBACX,qBAAqB,CAAC;gBACrB,GAAG,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;gBAC5D,OAAO,EAAE,WAAW;aACd,CAAC;iBACR,qBAAqB,CAAC;gBACrB,OAAO,EAAE,WAAW;aACd,CAAC,CAAC;YAEZ,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,4DAA4D;YAC5D,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;YAE5G,iDAAiD;YACjD,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9F,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,8BAA8B;YAC7B,EAAE,CAAC,MAAyB,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEzE,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,8BAA8B;YAC9B,IAAA,gBAAM,EAAC,oBAAS,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,kCAAkC;YAC5E,IAAA,gBAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,kCAAkC,EAAE,gBAAgB,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAA,YAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,aAAa;gBAC3B,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,yDAAyD;YAEzD,iCAAiC;YACjC,4DAA4D;YAC5D,wDAAwD;YACxD,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,aAAa,EAAE,gBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,cAAc;gBAC5B,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,cAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,+DAA+D;YAC/D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,yCAAyC;YACzC,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAEzC,qBAAqB;YACrB,MAAM,YAAY,GAAG,cAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAE5C,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,gBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEjF,oDAAoD;YACpD,IAAA,gBAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YACjE,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,+BAA+B;YAC/B,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,YAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,kBAAkB;YAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,iCAAiC;YACjC,MAAM,IAAA,gBAAM,EAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC9D,IAAA,gBAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,wCAAwC,EAAE,gBAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,+BAA+B;YAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAE9F,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,sDAAsD;YACtD,MAAM,IAAA,gBAAM,EAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAA,YAAE,EAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,iEAAiE;YAChE,EAAE,CAAC,OAA0B,CAAC,iBAAiB,CAAC;gBAC/C,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,0BAA0B;gBACvC,aAAa,EAAE,yBAAyB;gBACxC,cAAc,EAAE,6BAA6B;aAC9C,CAAC,CAAC;YAEH,qCAAqC;YACrC,MAAM,YAAY,GAAe,EAAE,CAAC;YACnC,OAAO,CAAC,GAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAc,EAAE,EAAE;gBAC1E,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;oBAC9E,OAAO;;;;;;;;;;;CAWhB,CAAC;gBACM,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,wDAAwD;YACvD,EAAE,CAAC,IAAuB,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,cAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,EAAE,CAAC,EAAqB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEvD,qBAAqB;YACrB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;gBAC3B,CAAC,6BAA6B,EAAE,IAAI,CAAC,EAAE,oBAAoB;gBAC3D,CAAC,8BAA8B,EAAE,KAAK,CAAC,EAAE,oBAAoB;aAC9D,CAAC,CAAC;YAEF,OAAO,CAAC,MAAyB,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAC/D,MAAM,WAAW,GAAI,oBAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC;gBAClG,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;gBACtD,OAAO,EAAE,OAAO,EAAE,cAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAS,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,qCAAqC;YACrC,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC;YAEzG,uBAAuB;YACvB,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;YAErG,4BAA4B;YAC5B,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;YAExF,iCAAiC;YACjC,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;YAE7F,wCAAwC;YACxC,IAAA,gBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,gBAAM,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
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
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|