sync-worktrees 0.4.1 → 0.5.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -80
  3. package/dist/index.js +7 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/config-loader.service.js +7 -7
  6. package/dist/services/config-loader.service.js.map +1 -1
  7. package/dist/services/git.service.d.ts +3 -0
  8. package/dist/services/git.service.d.ts.map +1 -1
  9. package/dist/services/git.service.js +70 -19
  10. package/dist/services/git.service.js.map +1 -1
  11. package/dist/types/index.d.ts +2 -2
  12. package/dist/types/index.d.ts.map +1 -1
  13. package/dist/utils/cli.d.ts +1 -0
  14. package/dist/utils/cli.d.ts.map +1 -1
  15. package/dist/utils/cli.js +10 -12
  16. package/dist/utils/cli.js.map +1 -1
  17. package/dist/utils/config-generator.d.ts.map +1 -1
  18. package/dist/utils/config-generator.js +55 -20
  19. package/dist/utils/config-generator.js.map +1 -1
  20. package/dist/utils/git-url.d.ts +15 -0
  21. package/dist/utils/git-url.d.ts.map +1 -0
  22. package/dist/utils/git-url.js +41 -0
  23. package/dist/utils/git-url.js.map +1 -0
  24. package/dist/utils/interactive.d.ts.map +1 -1
  25. package/dist/utils/interactive.js +43 -28
  26. package/dist/utils/interactive.js.map +1 -1
  27. package/package.json +8 -5
  28. package/dist/__tests__/fixtures/git-responses.d.ts +0 -114
  29. package/dist/__tests__/fixtures/git-responses.d.ts.map +0 -1
  30. package/dist/__tests__/fixtures/git-responses.js +0 -119
  31. package/dist/__tests__/fixtures/git-responses.js.map +0 -1
  32. package/dist/__tests__/helpers/mock-helpers.d.ts +0 -29
  33. package/dist/__tests__/helpers/mock-helpers.d.ts.map +0 -1
  34. package/dist/__tests__/helpers/mock-helpers.js +0 -82
  35. package/dist/__tests__/helpers/mock-helpers.js.map +0 -1
  36. package/dist/__tests__/integration.test.d.ts +0 -2
  37. package/dist/__tests__/integration.test.d.ts.map +0 -1
  38. package/dist/__tests__/integration.test.js +0 -300
  39. package/dist/__tests__/integration.test.js.map +0 -1
  40. package/dist/__tests__/setup.d.ts +0 -2
  41. package/dist/__tests__/setup.d.ts.map +0 -1
  42. package/dist/__tests__/setup.js +0 -18
  43. package/dist/__tests__/setup.js.map +0 -1
  44. package/dist/services/__tests__/config-loader.service.test.d.ts +0 -2
  45. package/dist/services/__tests__/config-loader.service.test.d.ts.map +0 -1
  46. package/dist/services/__tests__/config-loader.service.test.js +0 -222
  47. package/dist/services/__tests__/config-loader.service.test.js.map +0 -1
  48. package/dist/services/__tests__/git.service.test.d.ts +0 -2
  49. package/dist/services/__tests__/git.service.test.d.ts.map +0 -1
  50. package/dist/services/__tests__/git.service.test.js +0 -289
  51. package/dist/services/__tests__/git.service.test.js.map +0 -1
  52. package/dist/services/__tests__/worktree-sync.service.test.d.ts +0 -2
  53. package/dist/services/__tests__/worktree-sync.service.test.d.ts.map +0 -1
  54. package/dist/services/__tests__/worktree-sync.service.test.js +0 -342
  55. package/dist/services/__tests__/worktree-sync.service.test.js.map +0 -1
  56. package/dist/utils/__tests__/config-generator.test.d.ts +0 -2
  57. package/dist/utils/__tests__/config-generator.test.d.ts.map +0 -1
  58. package/dist/utils/__tests__/config-generator.test.js +0 -142
  59. package/dist/utils/__tests__/config-generator.test.js.map +0 -1
  60. package/dist/utils/__tests__/interactive.test.d.ts +0 -2
  61. package/dist/utils/__tests__/interactive.test.d.ts.map +0 -1
  62. package/dist/utils/__tests__/interactive.test.js +0 -281
  63. package/dist/utils/__tests__/interactive.test.js.map +0 -1
@@ -1,281 +0,0 @@
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"));
37
- const path = __importStar(require("path"));
38
- const globals_1 = require("@jest/globals");
39
- const interactive_1 = require("../interactive");
40
- // Mock fs module
41
- globals_1.jest.mock("fs");
42
- // Mock the inquirer prompts
43
- globals_1.jest.mock("@inquirer/prompts", () => ({
44
- input: globals_1.jest.fn(),
45
- select: globals_1.jest.fn(),
46
- confirm: globals_1.jest.fn(),
47
- }));
48
- // Mock the config generator
49
- globals_1.jest.mock("../config-generator", () => ({
50
- generateConfigFile: globals_1.jest.fn(),
51
- getDefaultConfigPath: globals_1.jest.fn(() => "/default/config.js"),
52
- }));
53
- (0, globals_1.describe)("Interactive prompt utility", () => {
54
- const mockExistsSync = globals_1.jest.mocked(fs.existsSync);
55
- // Get the mocked functions with proper typing
56
- const { input, select, confirm } = globals_1.jest.requireMock("@inquirer/prompts");
57
- const { generateConfigFile } = globals_1.jest.requireMock("../config-generator");
58
- (0, globals_1.beforeEach)(() => {
59
- globals_1.jest.clearAllMocks();
60
- globals_1.jest.spyOn(console, "log").mockImplementation(() => { });
61
- globals_1.jest.spyOn(console, "error").mockImplementation(() => { });
62
- mockExistsSync.mockReturnValue(true);
63
- // Default to not saving config in tests
64
- confirm.mockResolvedValue(false);
65
- });
66
- (0, globals_1.afterEach)(() => {
67
- globals_1.jest.restoreAllMocks();
68
- });
69
- (0, globals_1.describe)("promptForConfig", () => {
70
- (0, globals_1.it)("should prompt for all missing fields", async () => {
71
- input
72
- .mockResolvedValueOnce("/path/to/repo") // repoPath
73
- .mockResolvedValueOnce("/path/to/worktrees") // worktreeDir
74
- .mockResolvedValueOnce("*/10 * * * *"); // cronSchedule
75
- select.mockResolvedValueOnce("scheduled"); // runMode
76
- const result = await (0, interactive_1.promptForConfig)({});
77
- (0, globals_1.expect)(input).toHaveBeenCalledTimes(3);
78
- (0, globals_1.expect)(select).toHaveBeenCalledTimes(1);
79
- (0, globals_1.expect)(result).toEqual({
80
- repoPath: "/path/to/repo",
81
- repoUrl: undefined,
82
- worktreeDir: "/path/to/worktrees",
83
- cronSchedule: "*/10 * * * *",
84
- runOnce: false,
85
- });
86
- });
87
- (0, globals_1.it)("should not prompt for provided fields", async () => {
88
- const partialConfig = {
89
- repoPath: "/existing/repo",
90
- worktreeDir: "/existing/worktrees",
91
- };
92
- select.mockResolvedValueOnce("once"); // runMode
93
- const result = await (0, interactive_1.promptForConfig)(partialConfig);
94
- (0, globals_1.expect)(input).not.toHaveBeenCalled();
95
- (0, globals_1.expect)(select).toHaveBeenCalledTimes(1);
96
- (0, globals_1.expect)(result).toEqual({
97
- repoPath: "/existing/repo",
98
- repoUrl: undefined,
99
- worktreeDir: "/existing/worktrees",
100
- cronSchedule: "0 * * * *",
101
- runOnce: true,
102
- });
103
- });
104
- (0, globals_1.it)("should prompt for repo URL when repo path doesn't exist", async () => {
105
- mockExistsSync.mockReturnValue(false);
106
- input
107
- .mockResolvedValueOnce("/new/repo") // repoPath
108
- .mockResolvedValueOnce("https://github.com/user/repo.git") // repoUrl
109
- .mockResolvedValueOnce("/worktrees"); // worktreeDir
110
- select.mockResolvedValueOnce("once"); // runMode
111
- const result = await (0, interactive_1.promptForConfig)({});
112
- (0, globals_1.expect)(input).toHaveBeenCalledTimes(3);
113
- (0, globals_1.expect)(result.repoUrl).toBe("https://github.com/user/repo.git");
114
- });
115
- (0, globals_1.it)("should convert relative paths to absolute paths", async () => {
116
- const cwd = process.cwd();
117
- input
118
- .mockResolvedValueOnce("./my-repo") // repoPath (relative)
119
- .mockResolvedValueOnce("../worktrees"); // worktreeDir (relative)
120
- select.mockResolvedValueOnce("once"); // runMode
121
- const result = await (0, interactive_1.promptForConfig)({});
122
- (0, globals_1.expect)(result.repoPath).toBe(path.resolve(cwd, "./my-repo"));
123
- (0, globals_1.expect)(result.worktreeDir).toBe(path.resolve(cwd, "../worktrees"));
124
- });
125
- (0, globals_1.it)("should not prompt for cron schedule when runOnce is true", async () => {
126
- select.mockResolvedValueOnce("once"); // runMode
127
- const result = await (0, interactive_1.promptForConfig)({
128
- repoPath: "/repo",
129
- worktreeDir: "/worktrees",
130
- });
131
- // Should not prompt for cronSchedule
132
- (0, globals_1.expect)(input).not.toHaveBeenCalled();
133
- (0, globals_1.expect)(result.runOnce).toBe(true);
134
- (0, globals_1.expect)(result.cronSchedule).toBe("0 * * * *"); // default value
135
- });
136
- (0, globals_1.it)("should use provided runOnce value", async () => {
137
- const result = await (0, interactive_1.promptForConfig)({
138
- repoPath: "/repo",
139
- worktreeDir: "/worktrees",
140
- runOnce: true,
141
- });
142
- // Should not prompt for runMode
143
- (0, globals_1.expect)(select).not.toHaveBeenCalled();
144
- (0, globals_1.expect)(result.runOnce).toBe(true);
145
- });
146
- (0, globals_1.it)("should use provided cronSchedule", async () => {
147
- select.mockResolvedValueOnce("scheduled"); // runMode
148
- const result = await (0, interactive_1.promptForConfig)({
149
- repoPath: "/repo",
150
- worktreeDir: "/worktrees",
151
- cronSchedule: "0 0 * * *",
152
- });
153
- // Should not prompt for cronSchedule
154
- (0, globals_1.expect)(input).not.toHaveBeenCalled();
155
- (0, globals_1.expect)(result.cronSchedule).toBe("0 0 * * *");
156
- });
157
- (0, globals_1.it)("should validate empty repository path", async () => {
158
- input
159
- .mockResolvedValueOnce("/path/to/repo") // repoPath
160
- .mockResolvedValueOnce("/path/to/worktrees"); // worktreeDir
161
- select.mockResolvedValueOnce("once"); // runMode
162
- await (0, interactive_1.promptForConfig)({});
163
- const validateFn = input.mock.calls[0][0].validate;
164
- // Test validation
165
- (0, globals_1.expect)(validateFn("")).toBe("Repository path is required");
166
- (0, globals_1.expect)(validateFn(" ")).toBe("Repository path is required");
167
- (0, globals_1.expect)(validateFn("/valid/path")).toBe(true);
168
- });
169
- (0, globals_1.it)("should validate empty worktree directory", async () => {
170
- input
171
- .mockResolvedValueOnce("/path/to/repo") // repoPath
172
- .mockResolvedValueOnce("/path/to/worktrees"); // worktreeDir
173
- select.mockResolvedValueOnce("once"); // runMode
174
- await (0, interactive_1.promptForConfig)({});
175
- const validateFn = input.mock.calls[1][0].validate;
176
- // Test validation
177
- (0, globals_1.expect)(validateFn("")).toBe("Worktree directory is required");
178
- (0, globals_1.expect)(validateFn(" ")).toBe("Worktree directory is required");
179
- (0, globals_1.expect)(validateFn("/valid/path")).toBe(true);
180
- });
181
- (0, globals_1.it)("should validate repository URL when path doesn't exist", async () => {
182
- mockExistsSync.mockReturnValue(false);
183
- input
184
- .mockResolvedValueOnce("/new/repo") // repoPath
185
- .mockResolvedValueOnce("https://github.com/user/repo.git") // repoUrl
186
- .mockResolvedValueOnce("/worktrees"); // worktreeDir
187
- select.mockResolvedValueOnce("once"); // runMode
188
- await (0, interactive_1.promptForConfig)({});
189
- const validateFn = input.mock.calls[1][0].validate;
190
- // Test validation
191
- (0, globals_1.expect)(validateFn("")).toBe("Repository URL is required since the repository path doesn't exist");
192
- (0, globals_1.expect)(validateFn(" ")).toBe("Repository URL is required since the repository path doesn't exist");
193
- (0, globals_1.expect)(validateFn("https://github.com/user/repo.git")).toBe(true);
194
- });
195
- (0, globals_1.it)("should validate cron schedule format", async () => {
196
- select.mockResolvedValueOnce("scheduled"); // runMode
197
- input.mockResolvedValueOnce("*/5 * * * *"); // cronSchedule
198
- await (0, interactive_1.promptForConfig)({
199
- repoPath: "/repo",
200
- worktreeDir: "/worktrees",
201
- });
202
- const validateFn = input.mock.calls[0][0].validate;
203
- // Test validation
204
- (0, globals_1.expect)(validateFn("")).toBe("Cron schedule is required");
205
- (0, globals_1.expect)(validateFn(" ")).toBe("Cron schedule is required");
206
- (0, globals_1.expect)(validateFn("invalid")).toBe("Invalid cron pattern. Expected format: '* * * * *'");
207
- (0, globals_1.expect)(validateFn("* * * *")).toBe("Invalid cron pattern. Expected format: '* * * * *'");
208
- (0, globals_1.expect)(validateFn("* * * * *")).toBe(true);
209
- (0, globals_1.expect)(validateFn("0 */5 * * *")).toBe(true);
210
- });
211
- (0, globals_1.it)("should not prompt for repo URL when path exists", async () => {
212
- mockExistsSync.mockReturnValue(true);
213
- input.mockResolvedValueOnce("/worktrees"); // worktreeDir only
214
- select.mockResolvedValueOnce("once"); // runMode
215
- const result = await (0, interactive_1.promptForConfig)({
216
- repoPath: "/existing/repo",
217
- });
218
- (0, globals_1.expect)(input).toHaveBeenCalledTimes(1); // Only worktreeDir
219
- (0, globals_1.expect)(result.repoUrl).toBeUndefined();
220
- });
221
- (0, globals_1.it)("should handle all fields provided", async () => {
222
- const result = await (0, interactive_1.promptForConfig)({
223
- repoPath: "/repo",
224
- repoUrl: "https://github.com/user/repo.git",
225
- worktreeDir: "/worktrees",
226
- cronSchedule: "0 0 * * *",
227
- runOnce: false,
228
- });
229
- // Should not prompt for anything
230
- (0, globals_1.expect)(input).not.toHaveBeenCalled();
231
- (0, globals_1.expect)(select).not.toHaveBeenCalled();
232
- (0, globals_1.expect)(result).toEqual({
233
- repoPath: "/repo",
234
- repoUrl: "https://github.com/user/repo.git",
235
- worktreeDir: "/worktrees",
236
- cronSchedule: "0 0 * * *",
237
- runOnce: false,
238
- });
239
- });
240
- (0, globals_1.it)("should prompt to save config file", async () => {
241
- confirm.mockResolvedValueOnce(true); // saveConfig
242
- input
243
- .mockResolvedValueOnce("/repo") // repoPath
244
- .mockResolvedValueOnce("/worktrees") // worktreeDir
245
- .mockResolvedValueOnce("/custom/config.js"); // configPath
246
- select.mockResolvedValueOnce("once"); // runMode
247
- await (0, interactive_1.promptForConfig)({});
248
- (0, globals_1.expect)(confirm).toHaveBeenCalledWith({
249
- message: "Would you like to save this configuration to a file for future use?",
250
- default: true,
251
- });
252
- (0, globals_1.expect)(input).toHaveBeenCalledWith(globals_1.expect.objectContaining({
253
- message: "Enter the path for the config file:",
254
- default: "/default/config.js",
255
- }));
256
- (0, globals_1.expect)(generateConfigFile).toHaveBeenCalledWith(globals_1.expect.objectContaining({
257
- repoPath: "/repo",
258
- worktreeDir: "/worktrees",
259
- }), "/custom/config.js");
260
- });
261
- (0, globals_1.it)("should handle config file save errors", async () => {
262
- confirm.mockResolvedValueOnce(true); // saveConfig
263
- generateConfigFile.mockRejectedValueOnce(new Error("Write failed"));
264
- input
265
- .mockResolvedValueOnce("/repo") // repoPath
266
- .mockResolvedValueOnce("/worktrees") // worktreeDir
267
- .mockResolvedValueOnce("/custom/config.js"); // configPath
268
- select.mockResolvedValueOnce("once"); // runMode
269
- const result = await (0, interactive_1.promptForConfig)({});
270
- (0, globals_1.expect)(generateConfigFile).toHaveBeenCalled();
271
- (0, globals_1.expect)(result).toEqual({
272
- repoPath: "/repo",
273
- worktreeDir: "/worktrees",
274
- cronSchedule: "0 * * * *",
275
- runOnce: true,
276
- repoUrl: undefined,
277
- });
278
- });
279
- });
280
- });
281
- //# sourceMappingURL=interactive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/interactive.test.ts"],"names":[],"mappings":"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"}