sync-worktrees 0.1.1 → 0.3.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.
@@ -138,6 +138,28 @@ globals_1.jest.mock("node-cron");
138
138
  });
139
139
  (0, globals_1.expect)(cron.schedule).toHaveBeenCalledWith("*/5 * * * *", globals_1.expect.any(Function));
140
140
  });
141
+ (0, globals_1.it)("should run initial sync before scheduling cron job", async () => {
142
+ const config = {
143
+ repoPath: "/test/repo",
144
+ worktreeDir: "/test/worktrees",
145
+ cronSchedule: "*/30 * * * *",
146
+ runOnce: false,
147
+ };
148
+ const service = new worktree_sync_service_1.WorktreeSyncService(config);
149
+ const syncSpy = globals_1.jest.spyOn(service, "sync");
150
+ await service.initialize();
151
+ // Simulate what index.ts does: initial sync then cron schedule
152
+ await service.sync();
153
+ // Verify sync was called for initial run
154
+ (0, globals_1.expect)(syncSpy).toHaveBeenCalledTimes(1);
155
+ // Then schedule cron
156
+ const cronCallback = globals_1.jest.fn();
157
+ cron.schedule("*/30 * * * *", cronCallback);
158
+ (0, globals_1.expect)(cron.schedule).toHaveBeenCalledWith("*/30 * * * *", globals_1.expect.any(Function));
159
+ // Verify the initial sync operations were performed
160
+ (0, globals_1.expect)(mockGit.fetch).toHaveBeenCalledWith(["--all", "--prune"]);
161
+ (0, globals_1.expect)(mockGit.branch).toHaveBeenCalledWith(["-r"]);
162
+ });
141
163
  (0, globals_1.it)("should run once and exit when runOnce is true", async () => {
142
164
  const config = {
143
165
  repoPath: "/test/repo",
@@ -1 +1 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -38,13 +38,22 @@ 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
+ }
51
+ console.log("\nšŸ“‹ CLI Command (for future reference):");
52
+ console.log(` ${(0, cli_1.reconstructCliCommand)(config)}`);
53
+ console.log("");
43
54
  const syncService = new worktree_sync_service_1.WorktreeSyncService(config);
44
55
  try {
45
- // Initialize the repository (clone if needed)
46
56
  await syncService.initialize();
47
- // Decide whether to run once or schedule the job
48
57
  if (config.runOnce) {
49
58
  console.log("Running the sync process once as requested by --runOnce flag.");
50
59
  await syncService.sync();
@@ -53,6 +62,8 @@ async function main() {
53
62
  console.log("Git Worktree Sync script started as a scheduled job.");
54
63
  console.log(`Job is scheduled with cron pattern: "${config.cronSchedule}"`);
55
64
  console.log(`To see options, run: node ${path.basename(process.argv[1])} --help`);
65
+ console.log("Running initial sync...");
66
+ await syncService.sync();
56
67
  console.log("Waiting for the next scheduled run...");
57
68
  cron.schedule(config.cronSchedule, async () => {
58
69
  try {
@@ -69,7 +80,6 @@ async function main() {
69
80
  process.exit(1);
70
81
  }
71
82
  }
72
- // Run the main function
73
83
  main().catch((error) => {
74
84
  console.error("āŒ Unhandled error:", error);
75
85
  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,qCAAuF;AACvF,qDAAsD;AAItD,KAAK,UAAU,IAAI;IACjB,MAAM,aAAa,GAAG,IAAA,oBAAc,GAAE,CAAC;IAEvC,IAAI,MAAc,CAAC;IACnB,IAAI,IAAA,uBAAiB,EAAC,aAAa,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,aAAa,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,aAAuB,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,2BAAqB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAElF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YAEzB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YAErD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBAC5C,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +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,5 @@
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;
4
+ export declare function reconstructCliCommand(config: Config): string;
3
5
  //# 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;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B5D"}
package/dist/utils/cli.js CHANGED
@@ -4,15 +4,16 @@ 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;
8
+ exports.reconstructCliCommand = reconstructCliCommand;
7
9
  const yargs_1 = __importDefault(require("yargs"));
8
10
  const helpers_1 = require("yargs/helpers");
9
11
  function parseArguments() {
10
- return (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
12
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
11
13
  .option("repoPath", {
12
14
  alias: "r",
13
15
  type: "string",
14
16
  description: "Absolute path to the target local repository directory.",
15
- demandOption: true,
16
17
  })
17
18
  .option("repoUrl", {
18
19
  alias: "u",
@@ -23,7 +24,6 @@ function parseArguments() {
23
24
  alias: "w",
24
25
  type: "string",
25
26
  description: "Absolute path to the directory for storing worktrees.",
26
- demandOption: true,
27
27
  })
28
28
  .option("cronSchedule", {
29
29
  alias: "s",
@@ -39,5 +39,35 @@ function parseArguments() {
39
39
  .help()
40
40
  .alias("help", "h")
41
41
  .parseSync();
42
+ return {
43
+ repoPath: argv.repoPath,
44
+ repoUrl: argv.repoUrl,
45
+ worktreeDir: argv.worktreeDir,
46
+ cronSchedule: argv.cronSchedule,
47
+ runOnce: argv.runOnce,
48
+ };
49
+ }
50
+ function isInteractiveMode(config) {
51
+ return !config.repoPath || !config.worktreeDir;
52
+ }
53
+ function reconstructCliCommand(config) {
54
+ const executable = process.argv[1].includes("ts-node") ? "ts-node src/index.ts" : "sync-worktrees";
55
+ const args = [];
56
+ if (config.repoPath) {
57
+ args.push(`--repoPath "${config.repoPath}"`);
58
+ }
59
+ if (config.repoUrl) {
60
+ args.push(`--repoUrl "${config.repoUrl}"`);
61
+ }
62
+ if (config.worktreeDir) {
63
+ args.push(`--worktreeDir "${config.worktreeDir}"`);
64
+ }
65
+ if (config.cronSchedule && config.cronSchedule !== "0 * * * *") {
66
+ args.push(`--cronSchedule "${config.cronSchedule}"`);
67
+ }
68
+ if (config.runOnce) {
69
+ args.push("--runOnce");
70
+ }
71
+ return `${executable} ${args.join(" ")}`;
42
72
  }
43
73
  //# 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;AAED,sDA0BC;AA5ED,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;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEnG,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3C,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.3.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"}