sync-worktrees 0.1.1 → 0.2.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/dist/index.js CHANGED
@@ -38,13 +38,19 @@ const path = __importStar(require("path"));
38
38
  const cron = __importStar(require("node-cron"));
39
39
  const worktree_sync_service_1 = require("./services/worktree-sync.service");
40
40
  const cli_1 = require("./utils/cli");
41
+ const interactive_1 = require("./utils/interactive");
41
42
  async function main() {
42
- const config = (0, cli_1.parseArguments)();
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
+ }
43
51
  const syncService = new worktree_sync_service_1.WorktreeSyncService(config);
44
52
  try {
45
- // Initialize the repository (clone if needed)
46
53
  await syncService.initialize();
47
- // Decide whether to run once or schedule the job
48
54
  if (config.runOnce) {
49
55
  console.log("Running the sync process once as requested by --runOnce flag.");
50
56
  await syncService.sync();
@@ -69,7 +75,6 @@ async function main() {
69
75
  process.exit(1);
70
76
  }
71
77
  }
72
- // Run the main function
73
78
  main().catch((error) => {
74
79
  console.error("āŒ Unhandled error:", error);
75
80
  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,qCAA6C;AAE7C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAA,oBAAc,GAAE,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;QAE/B,iDAAiD;QACjD,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;YAClF,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,wBAAwB;AACxB,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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAE7B,gDAAkC;AAElC,4EAAuE;AACvE,qCAAgE;AAChE,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,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;YAClF,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 +1 @@
1
- {"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,MAAM;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAkCb,kBAAkB;YAclB,iBAAiB;CA+BhC"}
1
+ {"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,MAAM;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Bb,kBAAkB;YAclB,iBAAiB;CA+BhC"}
@@ -50,21 +50,15 @@ class WorktreeSyncService {
50
50
  async sync() {
51
51
  console.log(`[${new Date().toISOString()}] Starting worktree synchronization...`);
52
52
  try {
53
- // 1. Fetch latest changes and prune deleted remote branches
54
53
  console.log("Step 1: Fetching latest data from remote...");
55
54
  await this.gitService.fetchAll();
56
- // 2. Get remote branches
57
55
  const remoteBranches = await this.gitService.getRemoteBranches();
58
56
  console.log(`Found ${remoteBranches.length} remote branches.`);
59
- // 3. Get existing worktree directories
60
57
  await fs.mkdir(this.config.worktreeDir, { recursive: true });
61
58
  const worktreeDirs = await fs.readdir(this.config.worktreeDir);
62
59
  console.log(`Found ${worktreeDirs.length} existing worktree directories.`);
63
- // 4. Create new worktrees
64
60
  await this.createNewWorktrees(remoteBranches, worktreeDirs);
65
- // 5. Prune old worktrees (with safety check)
66
61
  await this.pruneOldWorktrees(remoteBranches, worktreeDirs);
67
- // 6. Cleanup
68
62
  await this.gitService.pruneWorktrees();
69
63
  console.log("Step 4: Pruned worktree metadata.");
70
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-sync.service.js","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-sync.service.js","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interactive.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/interactive.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,232 @@
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
+ }));
47
+ (0, globals_1.describe)("Interactive prompt utility", () => {
48
+ const mockExistsSync = globals_1.jest.mocked(fs.existsSync);
49
+ // Get the mocked functions with proper typing
50
+ const { input, select } = globals_1.jest.requireMock("@inquirer/prompts");
51
+ (0, globals_1.beforeEach)(() => {
52
+ globals_1.jest.clearAllMocks();
53
+ globals_1.jest.spyOn(console, "log").mockImplementation(() => { });
54
+ mockExistsSync.mockReturnValue(true);
55
+ });
56
+ (0, globals_1.afterEach)(() => {
57
+ globals_1.jest.restoreAllMocks();
58
+ });
59
+ (0, globals_1.describe)("promptForConfig", () => {
60
+ (0, globals_1.it)("should prompt for all missing fields", async () => {
61
+ input
62
+ .mockResolvedValueOnce("/path/to/repo") // repoPath
63
+ .mockResolvedValueOnce("/path/to/worktrees") // worktreeDir
64
+ .mockResolvedValueOnce("*/10 * * * *"); // cronSchedule
65
+ select.mockResolvedValueOnce("scheduled"); // runMode
66
+ const result = await (0, interactive_1.promptForConfig)({});
67
+ (0, globals_1.expect)(input).toHaveBeenCalledTimes(3);
68
+ (0, globals_1.expect)(select).toHaveBeenCalledTimes(1);
69
+ (0, globals_1.expect)(result).toEqual({
70
+ repoPath: "/path/to/repo",
71
+ repoUrl: undefined,
72
+ worktreeDir: "/path/to/worktrees",
73
+ cronSchedule: "*/10 * * * *",
74
+ runOnce: false,
75
+ });
76
+ });
77
+ (0, globals_1.it)("should not prompt for provided fields", async () => {
78
+ const partialConfig = {
79
+ repoPath: "/existing/repo",
80
+ worktreeDir: "/existing/worktrees",
81
+ };
82
+ select.mockResolvedValueOnce("once"); // runMode
83
+ const result = await (0, interactive_1.promptForConfig)(partialConfig);
84
+ (0, globals_1.expect)(input).not.toHaveBeenCalled();
85
+ (0, globals_1.expect)(select).toHaveBeenCalledTimes(1);
86
+ (0, globals_1.expect)(result).toEqual({
87
+ repoPath: "/existing/repo",
88
+ repoUrl: undefined,
89
+ worktreeDir: "/existing/worktrees",
90
+ cronSchedule: "0 * * * *",
91
+ runOnce: true,
92
+ });
93
+ });
94
+ (0, globals_1.it)("should prompt for repo URL when repo path doesn't exist", async () => {
95
+ mockExistsSync.mockReturnValue(false);
96
+ input
97
+ .mockResolvedValueOnce("/new/repo") // repoPath
98
+ .mockResolvedValueOnce("https://github.com/user/repo.git") // repoUrl
99
+ .mockResolvedValueOnce("/worktrees"); // worktreeDir
100
+ select.mockResolvedValueOnce("once"); // runMode
101
+ const result = await (0, interactive_1.promptForConfig)({});
102
+ (0, globals_1.expect)(input).toHaveBeenCalledTimes(3);
103
+ (0, globals_1.expect)(result.repoUrl).toBe("https://github.com/user/repo.git");
104
+ });
105
+ (0, globals_1.it)("should convert relative paths to absolute paths", async () => {
106
+ const cwd = process.cwd();
107
+ input
108
+ .mockResolvedValueOnce("./my-repo") // repoPath (relative)
109
+ .mockResolvedValueOnce("../worktrees"); // worktreeDir (relative)
110
+ select.mockResolvedValueOnce("once"); // runMode
111
+ const result = await (0, interactive_1.promptForConfig)({});
112
+ (0, globals_1.expect)(result.repoPath).toBe(path.resolve(cwd, "./my-repo"));
113
+ (0, globals_1.expect)(result.worktreeDir).toBe(path.resolve(cwd, "../worktrees"));
114
+ });
115
+ (0, globals_1.it)("should not prompt for cron schedule when runOnce is true", async () => {
116
+ select.mockResolvedValueOnce("once"); // runMode
117
+ const result = await (0, interactive_1.promptForConfig)({
118
+ repoPath: "/repo",
119
+ worktreeDir: "/worktrees",
120
+ });
121
+ // Should not prompt for cronSchedule
122
+ (0, globals_1.expect)(input).not.toHaveBeenCalled();
123
+ (0, globals_1.expect)(result.runOnce).toBe(true);
124
+ (0, globals_1.expect)(result.cronSchedule).toBe("0 * * * *"); // default value
125
+ });
126
+ (0, globals_1.it)("should use provided runOnce value", async () => {
127
+ const result = await (0, interactive_1.promptForConfig)({
128
+ repoPath: "/repo",
129
+ worktreeDir: "/worktrees",
130
+ runOnce: true,
131
+ });
132
+ // Should not prompt for runMode
133
+ (0, globals_1.expect)(select).not.toHaveBeenCalled();
134
+ (0, globals_1.expect)(result.runOnce).toBe(true);
135
+ });
136
+ (0, globals_1.it)("should use provided cronSchedule", async () => {
137
+ select.mockResolvedValueOnce("scheduled"); // runMode
138
+ const result = await (0, interactive_1.promptForConfig)({
139
+ repoPath: "/repo",
140
+ worktreeDir: "/worktrees",
141
+ cronSchedule: "0 0 * * *",
142
+ });
143
+ // Should not prompt for cronSchedule
144
+ (0, globals_1.expect)(input).not.toHaveBeenCalled();
145
+ (0, globals_1.expect)(result.cronSchedule).toBe("0 0 * * *");
146
+ });
147
+ (0, globals_1.it)("should validate empty repository path", async () => {
148
+ input
149
+ .mockResolvedValueOnce("/path/to/repo") // repoPath
150
+ .mockResolvedValueOnce("/path/to/worktrees"); // worktreeDir
151
+ select.mockResolvedValueOnce("once"); // runMode
152
+ await (0, interactive_1.promptForConfig)({});
153
+ const validateFn = input.mock.calls[0][0].validate;
154
+ // Test validation
155
+ (0, globals_1.expect)(validateFn("")).toBe("Repository path is required");
156
+ (0, globals_1.expect)(validateFn(" ")).toBe("Repository path is required");
157
+ (0, globals_1.expect)(validateFn("/valid/path")).toBe(true);
158
+ });
159
+ (0, globals_1.it)("should validate empty worktree directory", async () => {
160
+ input
161
+ .mockResolvedValueOnce("/path/to/repo") // repoPath
162
+ .mockResolvedValueOnce("/path/to/worktrees"); // worktreeDir
163
+ select.mockResolvedValueOnce("once"); // runMode
164
+ await (0, interactive_1.promptForConfig)({});
165
+ const validateFn = input.mock.calls[1][0].validate;
166
+ // Test validation
167
+ (0, globals_1.expect)(validateFn("")).toBe("Worktree directory is required");
168
+ (0, globals_1.expect)(validateFn(" ")).toBe("Worktree directory is required");
169
+ (0, globals_1.expect)(validateFn("/valid/path")).toBe(true);
170
+ });
171
+ (0, globals_1.it)("should validate repository URL when path doesn't exist", async () => {
172
+ mockExistsSync.mockReturnValue(false);
173
+ input
174
+ .mockResolvedValueOnce("/new/repo") // repoPath
175
+ .mockResolvedValueOnce("https://github.com/user/repo.git") // repoUrl
176
+ .mockResolvedValueOnce("/worktrees"); // worktreeDir
177
+ select.mockResolvedValueOnce("once"); // runMode
178
+ await (0, interactive_1.promptForConfig)({});
179
+ const validateFn = input.mock.calls[1][0].validate;
180
+ // Test validation
181
+ (0, globals_1.expect)(validateFn("")).toBe("Repository URL is required since the repository path doesn't exist");
182
+ (0, globals_1.expect)(validateFn(" ")).toBe("Repository URL is required since the repository path doesn't exist");
183
+ (0, globals_1.expect)(validateFn("https://github.com/user/repo.git")).toBe(true);
184
+ });
185
+ (0, globals_1.it)("should validate cron schedule format", async () => {
186
+ select.mockResolvedValueOnce("scheduled"); // runMode
187
+ input.mockResolvedValueOnce("*/5 * * * *"); // cronSchedule
188
+ await (0, interactive_1.promptForConfig)({
189
+ repoPath: "/repo",
190
+ worktreeDir: "/worktrees",
191
+ });
192
+ const validateFn = input.mock.calls[0][0].validate;
193
+ // Test validation
194
+ (0, globals_1.expect)(validateFn("")).toBe("Cron schedule is required");
195
+ (0, globals_1.expect)(validateFn(" ")).toBe("Cron schedule is required");
196
+ (0, globals_1.expect)(validateFn("invalid")).toBe("Invalid cron pattern. Expected format: '* * * * *'");
197
+ (0, globals_1.expect)(validateFn("* * * *")).toBe("Invalid cron pattern. Expected format: '* * * * *'");
198
+ (0, globals_1.expect)(validateFn("* * * * *")).toBe(true);
199
+ (0, globals_1.expect)(validateFn("0 */5 * * *")).toBe(true);
200
+ });
201
+ (0, globals_1.it)("should not prompt for repo URL when path exists", async () => {
202
+ mockExistsSync.mockReturnValue(true);
203
+ input.mockResolvedValueOnce("/worktrees"); // worktreeDir only
204
+ select.mockResolvedValueOnce("once"); // runMode
205
+ const result = await (0, interactive_1.promptForConfig)({
206
+ repoPath: "/existing/repo",
207
+ });
208
+ (0, globals_1.expect)(input).toHaveBeenCalledTimes(1); // Only worktreeDir
209
+ (0, globals_1.expect)(result.repoUrl).toBeUndefined();
210
+ });
211
+ (0, globals_1.it)("should handle all fields provided", async () => {
212
+ const result = await (0, interactive_1.promptForConfig)({
213
+ repoPath: "/repo",
214
+ repoUrl: "https://github.com/user/repo.git",
215
+ worktreeDir: "/worktrees",
216
+ cronSchedule: "0 0 * * *",
217
+ runOnce: false,
218
+ });
219
+ // Should not prompt for anything
220
+ (0, globals_1.expect)(input).not.toHaveBeenCalled();
221
+ (0, globals_1.expect)(select).not.toHaveBeenCalled();
222
+ (0, globals_1.expect)(result).toEqual({
223
+ repoPath: "/repo",
224
+ repoUrl: "https://github.com/user/repo.git",
225
+ worktreeDir: "/worktrees",
226
+ cronSchedule: "0 0 * * *",
227
+ runOnce: false,
228
+ });
229
+ });
230
+ });
231
+ });
232
+ //# sourceMappingURL=interactive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/interactive.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,2CAAkF;AAElF,gDAAiD;AAEjD,iBAAiB;AACjB,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,4BAA4B;AAC5B,cAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;IAChB,MAAM,EAAE,cAAI,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,IAAA,kBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,cAAc,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAElD,8CAA8C;IAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC,WAAW,CAAC,mBAAmB,CAG7D,CAAC;IAEF,IAAA,oBAAU,EAAC,GAAG,EAAE;QACd,cAAI,CAAC,aAAa,EAAE,CAAC;QACrB,cAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,mBAAS,EAAC,GAAG,EAAE;QACb,cAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAA,YAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,KAAK;iBACF,qBAAqB,CAAC,eAAe,CAAC,CAAC,WAAW;iBAClD,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,cAAc;iBAC1D,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;YAEzD,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YAErD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAEzC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,oBAAoB;gBACjC,YAAY,EAAE,cAAc;gBAC5B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,aAAa,GAAG;gBACpB,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW,EAAE,qBAAqB;aACnC,CAAC;YAEF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,aAAa,CAAC,CAAC;YAEpD,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,qBAAqB;gBAClC,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEtC,KAAK;iBACF,qBAAqB,CAAC,WAAW,CAAC,CAAC,WAAW;iBAC9C,qBAAqB,CAAC,kCAAkC,CAAC,CAAC,UAAU;iBACpE,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc;YAEtD,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAEzC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAA,gBAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAE1B,KAAK;iBACF,qBAAqB,CAAC,WAAW,CAAC,CAAC,sBAAsB;iBACzD,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,yBAAyB;YAEnE,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAEzC,IAAA,gBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YAC7D,IAAA,gBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC;gBACnC,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,qCAAqC;YACrC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAA,gBAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,gBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB;QACjE,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC;gBACnC,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,YAAY;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,gCAAgC;YAChC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACtC,IAAA,gBAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YAErD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC;gBACnC,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,WAAW;aAC1B,CAAC,CAAC;YAEH,qCAAqC;YACrC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAA,gBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,KAAK;iBACF,qBAAqB,CAAC,eAAe,CAAC,CAAC,WAAW;iBAClD,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc;YAE9D,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAE1B,MAAM,UAAU,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE5D,kBAAkB;YAClB,IAAA,gBAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC3D,IAAA,gBAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9D,IAAA,gBAAM,EAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,KAAK;iBACF,qBAAqB,CAAC,eAAe,CAAC,CAAC,WAAW;iBAClD,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc;YAE9D,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAE1B,MAAM,UAAU,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE5D,kBAAkB;YAClB,IAAA,gBAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC9D,IAAA,gBAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACjE,IAAA,gBAAM,EAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEtC,KAAK;iBACF,qBAAqB,CAAC,WAAW,CAAC,CAAC,WAAW;iBAC9C,qBAAqB,CAAC,kCAAkC,CAAC,CAAC,UAAU;iBACpE,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc;YAEtD,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YAE1B,MAAM,UAAU,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE5D,kBAAkB;YAClB,IAAA,gBAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAClG,IAAA,gBAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACrG,IAAA,gBAAM,EAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YAErD,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe;YAE3D,MAAM,IAAA,6BAAe,EAAC;gBACpB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,MAAM,UAAU,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE5D,kBAAkB;YAClB,IAAA,gBAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzD,IAAA,gBAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC5D,IAAA,gBAAM,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACzF,IAAA,gBAAM,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACzF,IAAA,gBAAM,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAA,gBAAM,EAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAErC,KAAK,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB;YAE9D,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC;gBACnC,QAAQ,EAAE,gBAAgB;aAC3B,CAAC,CAAC;YAEH,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;YAC3D,IAAA,gBAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,YAAE,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC;gBACnC,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEtC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { Config } from "../types";
2
- export declare function parseArguments(): Config;
2
+ export declare function parseArguments(): Partial<Config>;
3
+ export declare function isInteractiveMode(config: Partial<Config>): boolean;
3
4
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,cAAc,IAAI,MAAM,CAiCvC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAuChD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAElE"}
package/dist/utils/cli.js CHANGED
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseArguments = parseArguments;
7
+ exports.isInteractiveMode = isInteractiveMode;
7
8
  const yargs_1 = __importDefault(require("yargs"));
8
9
  const helpers_1 = require("yargs/helpers");
9
10
  function parseArguments() {
10
- return (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
11
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
11
12
  .option("repoPath", {
12
13
  alias: "r",
13
14
  type: "string",
14
15
  description: "Absolute path to the target local repository directory.",
15
- demandOption: true,
16
16
  })
17
17
  .option("repoUrl", {
18
18
  alias: "u",
@@ -23,7 +23,6 @@ function parseArguments() {
23
23
  alias: "w",
24
24
  type: "string",
25
25
  description: "Absolute path to the directory for storing worktrees.",
26
- demandOption: true,
27
26
  })
28
27
  .option("cronSchedule", {
29
28
  alias: "s",
@@ -39,5 +38,15 @@ function parseArguments() {
39
38
  .help()
40
39
  .alias("help", "h")
41
40
  .parseSync();
41
+ return {
42
+ repoPath: argv.repoPath,
43
+ repoUrl: argv.repoUrl,
44
+ worktreeDir: argv.worktreeDir,
45
+ cronSchedule: argv.cronSchedule,
46
+ runOnce: argv.runOnce,
47
+ };
48
+ }
49
+ function isInteractiveMode(config) {
50
+ return !config.repoPath || !config.worktreeDir;
42
51
  }
43
52
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;;;AAKA,wCAiCC;AAtCD,kDAA0B;AAC1B,2CAAwC;AAIxC,SAAgB,cAAc;IAC5B,OAAO,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC,MAAM,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oFAAoF;KAClG,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;QACpE,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,cAAc,EAAE;QACtB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,WAAW;KACrB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8DAA8D;QAC3E,OAAO,EAAE,KAAK;KACf,CAAC;SACD,IAAI,EAAE;SACN,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;SAClB,SAAS,EAAY,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;;;AAKA,wCAuCC;AAED,8CAEC;AAhDD,kDAA0B;AAC1B,2CAAwC;AAIxC,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtC,MAAM,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yDAAyD;KACvE,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oFAAoF;KAClG,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;KACrE,CAAC;SACD,MAAM,CAAC,cAAc,EAAE;QACtB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,WAAW;KACrB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8DAA8D;QAC3E,OAAO,EAAE,KAAK;KACf,CAAC;SACD,IAAI,EAAE;SACN,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;SAClB,SAAS,EAAE,CAAC;IAEf,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAuB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Config } from "../types";
2
+ export declare function promptForConfig(partialConfig: Partial<Config>): Promise<Config>;
3
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGrF"}
@@ -0,0 +1,135 @@
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
+ exports.promptForConfig = promptForConfig;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const prompts_1 = require("@inquirer/prompts");
40
+ async function promptForConfig(partialConfig) {
41
+ console.log("šŸ”§ Welcome to sync-worktrees interactive setup!\n");
42
+ let repoPath = partialConfig.repoPath;
43
+ if (!repoPath) {
44
+ repoPath = await (0, prompts_1.input)({
45
+ message: "Enter the path to your Git repository:",
46
+ validate: (value) => {
47
+ if (!value.trim()) {
48
+ return "Repository path is required";
49
+ }
50
+ return true;
51
+ },
52
+ });
53
+ if (!path.isAbsolute(repoPath)) {
54
+ repoPath = path.resolve(repoPath);
55
+ }
56
+ }
57
+ let repoUrl = partialConfig.repoUrl;
58
+ if (repoPath && !fs.existsSync(repoPath)) {
59
+ repoUrl = await (0, prompts_1.input)({
60
+ message: "Enter the Git repository URL (leave empty if repository already exists):",
61
+ default: partialConfig.repoUrl || "",
62
+ validate: (value) => {
63
+ if (!value.trim()) {
64
+ return "Repository URL is required since the repository path doesn't exist";
65
+ }
66
+ return true;
67
+ },
68
+ });
69
+ }
70
+ let worktreeDir = partialConfig.worktreeDir;
71
+ if (!worktreeDir) {
72
+ worktreeDir = await (0, prompts_1.input)({
73
+ message: "Enter the directory for storing worktrees:",
74
+ validate: (value) => {
75
+ if (!value.trim()) {
76
+ return "Worktree directory is required";
77
+ }
78
+ return true;
79
+ },
80
+ });
81
+ if (!path.isAbsolute(worktreeDir)) {
82
+ worktreeDir = path.resolve(worktreeDir);
83
+ }
84
+ }
85
+ let runOnce = partialConfig.runOnce;
86
+ let cronSchedule = partialConfig.cronSchedule || "0 * * * *";
87
+ if (runOnce === undefined) {
88
+ const runMode = await (0, prompts_1.select)({
89
+ message: "How would you like to run the sync?",
90
+ choices: [
91
+ { name: "Run once", value: "once" },
92
+ { name: "Schedule with cron", value: "scheduled" },
93
+ ],
94
+ });
95
+ runOnce = runMode === "once";
96
+ if (!runOnce && !partialConfig.cronSchedule) {
97
+ cronSchedule = await (0, prompts_1.input)({
98
+ message: "Enter the cron schedule (or press enter for default):",
99
+ default: "0 * * * *",
100
+ validate: (value) => {
101
+ if (!value.trim()) {
102
+ return "Cron schedule is required";
103
+ }
104
+ const parts = value.trim().split(" ");
105
+ if (parts.length < 5) {
106
+ return "Invalid cron pattern. Expected format: '* * * * *'";
107
+ }
108
+ return true;
109
+ },
110
+ });
111
+ }
112
+ }
113
+ const finalConfig = {
114
+ repoPath,
115
+ repoUrl,
116
+ worktreeDir,
117
+ cronSchedule,
118
+ runOnce: runOnce || false,
119
+ };
120
+ console.log("\nšŸ“‹ Configuration summary:");
121
+ console.log(` Repository: ${finalConfig.repoPath}`);
122
+ if (finalConfig.repoUrl) {
123
+ console.log(` Clone from: ${finalConfig.repoUrl}`);
124
+ }
125
+ console.log(` Worktrees: ${finalConfig.worktreeDir}`);
126
+ if (finalConfig.runOnce) {
127
+ console.log(` Mode: Run once`);
128
+ }
129
+ else {
130
+ console.log(` Mode: Scheduled (${finalConfig.cronSchedule})`);
131
+ }
132
+ console.log("");
133
+ return finalConfig;
134
+ }
135
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sync-worktrees",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Synchronize Git worktrees with remote repository branches",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -31,6 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/yordan-kanchelov/sync-worktrees#readme",
33
33
  "dependencies": {
34
+ "@inquirer/prompts": "^7.6.0",
34
35
  "node-cron": "^4.2.0",
35
36
  "simple-git": "^3.28.0",
36
37
  "yargs": "^18.0.0"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/cli.test.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const globals_1 = require("@jest/globals");
4
- // Skip these tests due to ESM module issues with yargs
5
- globals_1.describe.skip("CLI Parser", () => {
6
- (0, globals_1.it)("tests are skipped due to ESM module issues", () => {
7
- (0, globals_1.expect)(true).toBe(true);
8
- });
9
- });
10
- //# sourceMappingURL=cli.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/cli.test.ts"],"names":[],"mappings":";;AAAA,2CAAqD;AAErD,uDAAuD;AACvD,kBAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IAC/B,IAAA,YAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}