sync-worktrees 0.4.0 → 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 (66) 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 +4 -1
  8. package/dist/services/git.service.d.ts.map +1 -1
  9. package/dist/services/git.service.js +72 -21
  10. package/dist/services/git.service.js.map +1 -1
  11. package/dist/services/worktree-sync.service.d.ts.map +1 -1
  12. package/dist/services/worktree-sync.service.js +14 -3
  13. package/dist/services/worktree-sync.service.js.map +1 -1
  14. package/dist/types/index.d.ts +2 -2
  15. package/dist/types/index.d.ts.map +1 -1
  16. package/dist/utils/cli.d.ts +1 -0
  17. package/dist/utils/cli.d.ts.map +1 -1
  18. package/dist/utils/cli.js +10 -12
  19. package/dist/utils/cli.js.map +1 -1
  20. package/dist/utils/config-generator.d.ts.map +1 -1
  21. package/dist/utils/config-generator.js +55 -20
  22. package/dist/utils/config-generator.js.map +1 -1
  23. package/dist/utils/git-url.d.ts +15 -0
  24. package/dist/utils/git-url.d.ts.map +1 -0
  25. package/dist/utils/git-url.js +41 -0
  26. package/dist/utils/git-url.js.map +1 -0
  27. package/dist/utils/interactive.d.ts.map +1 -1
  28. package/dist/utils/interactive.js +43 -28
  29. package/dist/utils/interactive.js.map +1 -1
  30. package/package.json +8 -5
  31. package/dist/__tests__/fixtures/git-responses.d.ts +0 -114
  32. package/dist/__tests__/fixtures/git-responses.d.ts.map +0 -1
  33. package/dist/__tests__/fixtures/git-responses.js +0 -119
  34. package/dist/__tests__/fixtures/git-responses.js.map +0 -1
  35. package/dist/__tests__/helpers/mock-helpers.d.ts +0 -29
  36. package/dist/__tests__/helpers/mock-helpers.d.ts.map +0 -1
  37. package/dist/__tests__/helpers/mock-helpers.js +0 -82
  38. package/dist/__tests__/helpers/mock-helpers.js.map +0 -1
  39. package/dist/__tests__/integration.test.d.ts +0 -2
  40. package/dist/__tests__/integration.test.d.ts.map +0 -1
  41. package/dist/__tests__/integration.test.js +0 -300
  42. package/dist/__tests__/integration.test.js.map +0 -1
  43. package/dist/__tests__/setup.d.ts +0 -2
  44. package/dist/__tests__/setup.d.ts.map +0 -1
  45. package/dist/__tests__/setup.js +0 -18
  46. package/dist/__tests__/setup.js.map +0 -1
  47. package/dist/services/__tests__/config-loader.service.test.d.ts +0 -2
  48. package/dist/services/__tests__/config-loader.service.test.d.ts.map +0 -1
  49. package/dist/services/__tests__/config-loader.service.test.js +0 -222
  50. package/dist/services/__tests__/config-loader.service.test.js.map +0 -1
  51. package/dist/services/__tests__/git.service.test.d.ts +0 -2
  52. package/dist/services/__tests__/git.service.test.d.ts.map +0 -1
  53. package/dist/services/__tests__/git.service.test.js +0 -289
  54. package/dist/services/__tests__/git.service.test.js.map +0 -1
  55. package/dist/services/__tests__/worktree-sync.service.test.d.ts +0 -2
  56. package/dist/services/__tests__/worktree-sync.service.test.d.ts.map +0 -1
  57. package/dist/services/__tests__/worktree-sync.service.test.js +0 -272
  58. package/dist/services/__tests__/worktree-sync.service.test.js.map +0 -1
  59. package/dist/utils/__tests__/config-generator.test.d.ts +0 -2
  60. package/dist/utils/__tests__/config-generator.test.d.ts.map +0 -1
  61. package/dist/utils/__tests__/config-generator.test.js +0 -142
  62. package/dist/utils/__tests__/config-generator.test.js.map +0 -1
  63. package/dist/utils/__tests__/interactive.test.d.ts +0 -2
  64. package/dist/utils/__tests__/interactive.test.d.ts.map +0 -1
  65. package/dist/utils/__tests__/interactive.test.js +0 -281
  66. package/dist/utils/__tests__/interactive.test.js.map +0 -1
@@ -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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"}
@@ -1,9 +1,9 @@
1
1
  export interface Config {
2
- repoPath: string;
3
- repoUrl?: string;
2
+ repoUrl: string;
4
3
  worktreeDir: string;
5
4
  cronSchedule: string;
6
5
  runOnce: boolean;
6
+ bareRepoDir?: string;
7
7
  }
8
8
  export interface RepositoryConfig extends Config {
9
9
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,MAAM;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,MAAM;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B"}
@@ -3,6 +3,7 @@ export interface CliOptions extends Partial<Config> {
3
3
  config?: string;
4
4
  filter?: string;
5
5
  list?: boolean;
6
+ bareRepoDir?: string;
6
7
  }
7
8
  export declare function parseArguments(): CliOptions;
8
9
  export declare function isInteractiveMode(config: Partial<Config>): boolean;
@@ -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,MAAM,WAAW,UAAW,SAAQ,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,cAAc,IAAI,UAAU,CA0D3C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAElE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B5D"}
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,MAAM,WAAW,UAAW,SAAQ,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,IAAI,UAAU,CA0D3C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAElE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB5D"}
package/dist/utils/cli.js CHANGED
@@ -26,15 +26,15 @@ function parseArguments() {
26
26
  description: "List configured repositories and exit",
27
27
  default: false,
28
28
  })
29
- .option("repoPath", {
30
- alias: "r",
29
+ .option("bareRepoDir", {
30
+ alias: "b",
31
31
  type: "string",
32
- description: "Absolute path to the target local repository directory.",
32
+ description: "Directory for storing bare repositories (default: .bare/<repo-name>).",
33
33
  })
34
34
  .option("repoUrl", {
35
35
  alias: "u",
36
36
  type: "string",
37
- description: "Git repository URL (e.g., SSH or HTTPS). Used to clone if repoPath does not exist.",
37
+ description: "Git repository URL (e.g., SSH or HTTPS).",
38
38
  })
39
39
  .option("worktreeDir", {
40
40
  alias: "w",
@@ -59,28 +59,26 @@ function parseArguments() {
59
59
  config: argv.config,
60
60
  filter: argv.filter,
61
61
  list: argv.list,
62
- repoPath: argv.repoPath,
63
62
  repoUrl: argv.repoUrl,
64
63
  worktreeDir: argv.worktreeDir,
65
64
  cronSchedule: argv.cronSchedule,
66
65
  runOnce: argv.runOnce,
66
+ bareRepoDir: argv.bareRepoDir,
67
67
  };
68
68
  }
69
69
  function isInteractiveMode(config) {
70
- return !config.repoPath || !config.worktreeDir;
70
+ return !config.repoUrl || !config.worktreeDir;
71
71
  }
72
72
  function reconstructCliCommand(config) {
73
73
  const executable = process.argv[1].includes("ts-node") ? "ts-node src/index.ts" : "sync-worktrees";
74
74
  const args = [];
75
- if (config.repoPath) {
76
- args.push(`--repoPath "${config.repoPath}"`);
77
- }
78
- if (config.repoUrl) {
79
- args.push(`--repoUrl "${config.repoUrl}"`);
80
- }
75
+ args.push(`--repoUrl "${config.repoUrl}"`);
81
76
  if (config.worktreeDir) {
82
77
  args.push(`--worktreeDir "${config.worktreeDir}"`);
83
78
  }
79
+ if (config.bareRepoDir) {
80
+ args.push(`--bareRepoDir "${config.bareRepoDir}"`);
81
+ }
84
82
  if (config.cronSchedule && config.cronSchedule !== "0 * * * *") {
85
83
  args.push(`--cronSchedule "${config.cronSchedule}"`);
86
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../src/utils/config-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC1F;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
1
+ {"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../src/utils/config-generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA2CvC,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C1F;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -37,37 +37,72 @@ exports.generateConfigFile = generateConfigFile;
37
37
  exports.getDefaultConfigPath = getDefaultConfigPath;
38
38
  const fs = __importStar(require("fs/promises"));
39
39
  const path = __importStar(require("path"));
40
+ const git_url_1 = require("./git-url");
41
+ /**
42
+ * Serializes a JavaScript object to a clean module.exports format
43
+ */
44
+ function serializeToModuleExports(obj, indent = 0) {
45
+ const spaces = " ".repeat(indent);
46
+ const innerSpaces = " ".repeat(indent + 2);
47
+ if (typeof obj === "string") {
48
+ return `"${obj}"`;
49
+ }
50
+ if (typeof obj === "number" || typeof obj === "boolean") {
51
+ return String(obj);
52
+ }
53
+ if (Array.isArray(obj)) {
54
+ if (obj.length === 0)
55
+ return "[]";
56
+ const items = obj.map((item) => `${innerSpaces}${serializeToModuleExports(item, indent + 2)}`).join(",\n");
57
+ return `[\n${items}\n${spaces}]`;
58
+ }
59
+ if (obj && typeof obj === "object") {
60
+ const entries = Object.entries(obj)
61
+ .filter(([_, value]) => value !== undefined)
62
+ .map(([key, value]) => {
63
+ const serializedValue = serializeToModuleExports(value, indent + 2);
64
+ return `${innerSpaces}${key}: ${serializedValue}`;
65
+ });
66
+ if (entries.length === 0)
67
+ return "{}";
68
+ return `{\n${entries.join(",\n")}\n${spaces}}`;
69
+ }
70
+ return String(obj);
71
+ }
40
72
  async function generateConfigFile(config, configPath) {
41
73
  const configDir = path.dirname(configPath);
42
74
  await fs.mkdir(configDir, { recursive: true });
43
75
  // Calculate relative paths from config file location
44
- const repoPathRelative = path.relative(configDir, config.repoPath);
45
76
  const worktreeDirRelative = path.relative(configDir, config.worktreeDir);
46
- // Use relative paths if they don't go up too many levels
47
- const useRelativeRepo = !repoPathRelative.startsWith("../../../");
48
77
  const useRelativeWorktree = !worktreeDirRelative.startsWith("../../../");
49
- const repoUrlEntry = config.repoUrl ? `repoUrl: "${config.repoUrl}",\n ` : "";
50
- const repoPathEntry = `repoPath: "${useRelativeRepo ? `./${repoPathRelative}` : config.repoPath}"`;
51
- const worktreeDirEntry = `worktreeDir: "${useRelativeWorktree ? `./${worktreeDirRelative}` : config.worktreeDir}"`;
78
+ const repoName = (0, git_url_1.extractRepoNameFromUrl)(config.repoUrl);
79
+ // Build the repository object
80
+ const repository = {
81
+ name: repoName,
82
+ repoUrl: config.repoUrl,
83
+ worktreeDir: useRelativeWorktree ? `./${worktreeDirRelative}` : config.worktreeDir,
84
+ };
85
+ // Add bareRepoDir if provided
86
+ if (config.bareRepoDir) {
87
+ const bareRepoDirRelative = path.relative(configDir, config.bareRepoDir);
88
+ const useRelativeBare = !bareRepoDirRelative.startsWith("../../../");
89
+ repository.bareRepoDir = useRelativeBare ? `./${bareRepoDirRelative}` : config.bareRepoDir;
90
+ }
91
+ // Build the complete config object
92
+ const configObject = {
93
+ defaults: {
94
+ cronSchedule: config.cronSchedule,
95
+ runOnce: config.runOnce,
96
+ },
97
+ repositories: [repository],
98
+ };
99
+ // Generate the config file content
52
100
  const configContent = `/**
53
101
  * Sync-worktrees configuration file
54
102
  * Generated on ${new Date().toISOString()}
55
103
  */
56
104
 
57
- module.exports = {
58
- defaults: {
59
- cronSchedule: "${config.cronSchedule}",
60
- runOnce: ${config.runOnce}
61
- },
62
-
63
- repositories: [
64
- {
65
- name: "${path.basename(config.repoPath)}",
66
- ${repoUrlEntry}${repoPathEntry},
67
- ${worktreeDirEntry}
68
- }
69
- ]
70
- };
105
+ module.exports = ${serializeToModuleExports(configObject)};
71
106
  `;
72
107
  await fs.writeFile(configPath, configContent, "utf-8");
73
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../src/utils/config-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,gDAsCC;AAED,oDAEC;AA/CD,gDAAkC;AAClC,2CAA6B;AAItB,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,UAAkB;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,qDAAqD;IACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEzE,yDAAyD;IACzD,MAAM,eAAe,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,mBAAmB,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEzE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,MAAM,aAAa,GAAG,cAAc,eAAe,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;IACnG,MAAM,gBAAgB,GAAG,iBAAiB,mBAAmB,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC;IAEnH,MAAM,aAAa,GAAG;;kBAEN,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;qBAKrB,MAAM,CAAC,YAAY;eACzB,MAAM,CAAC,OAAO;;;;;eAKd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,YAAY,GAAG,aAAa;QAC5B,gBAAgB;;;;CAIvB,CAAC;IAEA,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../src/utils/config-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Extracts the repository name from a Git URL
3
+ * @param gitUrl - The Git URL (HTTPS or SSH format)
4
+ * @returns The repository name without .git extension
5
+ * @throws Error if the URL format is invalid
6
+ */
7
+ export declare function extractRepoNameFromUrl(gitUrl: string): string;
8
+ /**
9
+ * Generates the default bare repository directory path
10
+ * @param repoUrl - The Git repository URL
11
+ * @param baseDir - The base directory for bare repos (default: .bare)
12
+ * @returns The path to the bare repository
13
+ */
14
+ export declare function getDefaultBareRepoDir(repoUrl: string, baseDir?: string): string;
15
+ //# sourceMappingURL=git-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-url.d.ts","sourceRoot":"","sources":["../../src/utils/git-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAgB,GAAG,MAAM,CAGxF"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractRepoNameFromUrl = extractRepoNameFromUrl;
4
+ exports.getDefaultBareRepoDir = getDefaultBareRepoDir;
5
+ /**
6
+ * Extracts the repository name from a Git URL
7
+ * @param gitUrl - The Git URL (HTTPS or SSH format)
8
+ * @returns The repository name without .git extension
9
+ * @throws Error if the URL format is invalid
10
+ */
11
+ function extractRepoNameFromUrl(gitUrl) {
12
+ // Remove trailing spaces
13
+ const url = gitUrl.trim();
14
+ // Handle SSH format: git@github.com:user/repo.git
15
+ const sshMatch = url.match(/^git@[^:]+:(?:.+\/)?([^/]+?)(?:\.git)?$/);
16
+ if (sshMatch) {
17
+ return sshMatch[1];
18
+ }
19
+ // Handle HTTPS format: https://github.com/user/repo.git
20
+ const httpsMatch = url.match(/^https?:\/\/[^/]+\/(?:.+\/)?([^/]+?)(?:\.git)?$/);
21
+ if (httpsMatch) {
22
+ return httpsMatch[1];
23
+ }
24
+ // Handle file:// URLs for local repositories
25
+ const fileMatch = url.match(/^file:\/\/(?:.+\/)?([^/]+?)(?:\.git)?$/);
26
+ if (fileMatch) {
27
+ return fileMatch[1];
28
+ }
29
+ throw new Error(`Invalid Git URL format: ${gitUrl}`);
30
+ }
31
+ /**
32
+ * Generates the default bare repository directory path
33
+ * @param repoUrl - The Git repository URL
34
+ * @param baseDir - The base directory for bare repos (default: .bare)
35
+ * @returns The path to the bare repository
36
+ */
37
+ function getDefaultBareRepoDir(repoUrl, baseDir = ".bare") {
38
+ const repoName = extractRepoNameFromUrl(repoUrl);
39
+ return `${baseDir}/${repoName}`;
40
+ }
41
+ //# sourceMappingURL=git-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-url.js","sourceRoot":"","sources":["../../src/utils/git-url.ts"],"names":[],"mappings":";;AAMA,wDAuBC;AAQD,sDAGC;AAxCD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAAc;IACnD,yBAAyB;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE1B,kDAAkD;IAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACtE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,wDAAwD;IACxD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,6CAA6C;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,UAAkB,OAAO;IAC9E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2IrF"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA0JrF"}
@@ -34,37 +34,29 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.promptForConfig = promptForConfig;
37
- const fs = __importStar(require("fs"));
38
37
  const path = __importStar(require("path"));
39
38
  const prompts_1 = require("@inquirer/prompts");
40
39
  const config_generator_1 = require("./config-generator");
41
40
  async function promptForConfig(partialConfig) {
42
41
  console.log("🔧 Welcome to sync-worktrees interactive setup!\n");
43
- let repoPath = partialConfig.repoPath;
44
- if (!repoPath) {
45
- repoPath = await (0, prompts_1.input)({
46
- message: "Enter the path to your Git repository:",
47
- validate: (value) => {
48
- if (!value.trim()) {
49
- return "Repository path is required";
50
- }
51
- return true;
52
- },
53
- });
54
- if (!path.isAbsolute(repoPath)) {
55
- repoPath = path.resolve(repoPath);
56
- }
57
- }
58
42
  let repoUrl = partialConfig.repoUrl;
59
- if (repoPath && !fs.existsSync(repoPath)) {
43
+ if (!repoUrl) {
60
44
  repoUrl = await (0, prompts_1.input)({
61
- message: "Enter the Git repository URL (leave empty if repository already exists):",
62
- default: partialConfig.repoUrl || "",
45
+ message: "Enter the Git repository URL (e.g., https://github.com/user/repo.git):",
63
46
  validate: (value) => {
64
47
  if (!value.trim()) {
65
- return "Repository URL is required since the repository path doesn't exist";
48
+ return "Repository URL is required";
49
+ }
50
+ try {
51
+ // Basic URL validation
52
+ if (!value.match(/^(https?:\/\/|git@|file:\/\/).*$/)) {
53
+ return "Please enter a valid Git URL (https://, git@, or file://)";
54
+ }
55
+ return true;
56
+ }
57
+ catch {
58
+ return "Please enter a valid URL";
66
59
  }
67
- return true;
68
60
  },
69
61
  });
70
62
  }
@@ -83,6 +75,26 @@ async function promptForConfig(partialConfig) {
83
75
  worktreeDir = path.resolve(worktreeDir);
84
76
  }
85
77
  }
78
+ let bareRepoDir = partialConfig.bareRepoDir;
79
+ const askForBareDir = await (0, prompts_1.confirm)({
80
+ message: "Would you like to specify a custom location for the bare repository?",
81
+ default: false,
82
+ });
83
+ if (askForBareDir) {
84
+ bareRepoDir = await (0, prompts_1.input)({
85
+ message: "Enter the directory for the bare repository:",
86
+ default: "",
87
+ validate: (value) => {
88
+ if (!value.trim()) {
89
+ return "Bare repository directory is required";
90
+ }
91
+ return true;
92
+ },
93
+ });
94
+ if (!path.isAbsolute(bareRepoDir)) {
95
+ bareRepoDir = path.resolve(bareRepoDir);
96
+ }
97
+ }
86
98
  let runOnce = partialConfig.runOnce;
87
99
  let cronSchedule = partialConfig.cronSchedule || "0 * * * *";
88
100
  if (runOnce === undefined) {
@@ -112,23 +124,26 @@ async function promptForConfig(partialConfig) {
112
124
  }
113
125
  }
114
126
  const finalConfig = {
115
- repoPath,
116
127
  repoUrl,
117
128
  worktreeDir,
118
129
  cronSchedule,
119
130
  runOnce: runOnce || false,
131
+ bareRepoDir,
120
132
  };
121
133
  console.log("\n📋 Configuration summary:");
122
- console.log(` Repository: ${finalConfig.repoPath}`);
123
- if (finalConfig.repoUrl) {
124
- console.log(` Clone from: ${finalConfig.repoUrl}`);
134
+ console.log(` Repository URL: ${finalConfig.repoUrl}`);
135
+ console.log(` Worktrees: ${finalConfig.worktreeDir}`);
136
+ if (finalConfig.bareRepoDir) {
137
+ console.log(` Bare repo: ${finalConfig.bareRepoDir}`);
138
+ }
139
+ else {
140
+ console.log(` Bare repo: .bare/<repo-name> (default)`);
125
141
  }
126
- console.log(` Worktrees: ${finalConfig.worktreeDir}`);
127
142
  if (finalConfig.runOnce) {
128
- console.log(` Mode: Run once`);
143
+ console.log(` Mode: Run once`);
129
144
  }
130
145
  else {
131
- console.log(` Mode: Scheduled (${finalConfig.cronSchedule})`);
146
+ console.log(` Mode: Scheduled (${finalConfig.cronSchedule})`);
132
147
  }
133
148
  console.log("");
134
149
  // Ask if user wants to save configuration to a file
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sync-worktrees",
3
- "version": "0.4.0",
4
- "description": "Synchronize Git worktrees with remote repository branches",
3
+ "version": "0.5.0",
4
+ "description": "Automatically synchronize Git worktrees with remote branches - perfect for multi-branch development workflows",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "sync-worktrees": "./dist/index.js"
@@ -10,10 +10,13 @@
10
10
  "git",
11
11
  "worktree",
12
12
  "sync",
13
- "automation"
13
+ "automation",
14
+ "branch-management",
15
+ "git-worktrees",
16
+ "devops"
14
17
  ],
15
- "author": "",
16
- "license": "ISC",
18
+ "author": "Yordan Kanchelov <yordan.kanchelov@gmail.com>",
19
+ "license": "MIT",
17
20
  "engines": {
18
21
  "node": ">=22.0.0"
19
22
  },
@@ -1,114 +0,0 @@
1
- /**
2
- * Common git response fixtures for testing
3
- */
4
- export declare const gitBranchResponses: {
5
- withMultipleBranches: {
6
- all: string[];
7
- current: string;
8
- branches: {};
9
- detached: boolean;
10
- };
11
- withSingleBranch: {
12
- all: string[];
13
- current: string;
14
- branches: {};
15
- detached: boolean;
16
- };
17
- empty: {
18
- all: never[];
19
- current: string;
20
- branches: {};
21
- detached: boolean;
22
- };
23
- withLocalAndRemote: {
24
- all: string[];
25
- current: string;
26
- branches: {};
27
- detached: boolean;
28
- };
29
- };
30
- export declare const gitStatusResponses: {
31
- clean: {
32
- isClean: () => boolean;
33
- not_added: never[];
34
- conflicted: never[];
35
- created: never[];
36
- deleted: never[];
37
- modified: never[];
38
- renamed: never[];
39
- files: never[];
40
- staged: never[];
41
- ahead: number;
42
- behind: number;
43
- current: string;
44
- tracking: string;
45
- detached: boolean;
46
- };
47
- withChanges: {
48
- isClean: () => boolean;
49
- not_added: string[];
50
- conflicted: never[];
51
- created: never[];
52
- deleted: never[];
53
- modified: string[];
54
- renamed: never[];
55
- files: {
56
- path: string;
57
- index: string;
58
- working_dir: string;
59
- }[];
60
- staged: never[];
61
- ahead: number;
62
- behind: number;
63
- current: string;
64
- tracking: string;
65
- detached: boolean;
66
- };
67
- withStagedChanges: {
68
- isClean: () => boolean;
69
- not_added: never[];
70
- conflicted: never[];
71
- created: string[];
72
- deleted: never[];
73
- modified: string[];
74
- renamed: never[];
75
- files: {
76
- path: string;
77
- index: string;
78
- working_dir: string;
79
- }[];
80
- staged: string[];
81
- ahead: number;
82
- behind: number;
83
- current: string;
84
- tracking: string;
85
- detached: boolean;
86
- };
87
- };
88
- export declare const worktreeScenarios: {
89
- fresh: {
90
- remoteBranches: string[];
91
- existingWorktrees: never[];
92
- expectedNewWorktrees: string[];
93
- expectedRemovals: never[];
94
- };
95
- partial: {
96
- remoteBranches: string[];
97
- existingWorktrees: string[];
98
- expectedNewWorktrees: string[];
99
- expectedRemovals: never[];
100
- };
101
- withStale: {
102
- remoteBranches: string[];
103
- existingWorktrees: string[];
104
- expectedNewWorktrees: never[];
105
- expectedRemovals: string[];
106
- };
107
- mixed: {
108
- remoteBranches: string[];
109
- existingWorktrees: string[];
110
- expectedNewWorktrees: string[];
111
- expectedRemovals: string[];
112
- };
113
- };
114
- //# sourceMappingURL=git-responses.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-responses.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/git-responses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7B,CAAC"}