sync-worktrees 0.3.1 ā 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -2
- package/dist/__tests__/integration.test.js +29 -4
- package/dist/__tests__/integration.test.js.map +1 -1
- package/dist/index.js +133 -9
- package/dist/index.js.map +1 -1
- package/dist/services/__tests__/config-loader.service.test.d.ts +2 -0
- package/dist/services/__tests__/config-loader.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/config-loader.service.test.js +222 -0
- package/dist/services/__tests__/config-loader.service.test.js.map +1 -0
- package/dist/services/__tests__/git.service.test.js +56 -0
- package/dist/services/__tests__/git.service.test.js.map +1 -1
- package/dist/services/__tests__/worktree-sync.service.test.js +151 -8
- package/dist/services/__tests__/worktree-sync.service.test.js.map +1 -1
- package/dist/services/config-loader.service.d.ts +9 -0
- package/dist/services/config-loader.service.d.ts.map +1 -0
- package/dist/services/config-loader.service.js +151 -0
- package/dist/services/config-loader.service.js.map +1 -0
- package/dist/services/git.service.d.ts +5 -1
- package/dist/services/git.service.d.ts.map +1 -1
- package/dist/services/git.service.js +29 -3
- package/dist/services/git.service.js.map +1 -1
- package/dist/services/worktree-sync.service.d.ts +1 -0
- package/dist/services/worktree-sync.service.d.ts.map +1 -1
- package/dist/services/worktree-sync.service.js +52 -9
- package/dist/services/worktree-sync.service.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/__tests__/config-generator.test.d.ts +2 -0
- package/dist/utils/__tests__/config-generator.test.d.ts.map +1 -0
- package/dist/utils/__tests__/config-generator.test.js +142 -0
- package/dist/utils/__tests__/config-generator.test.js.map +1 -0
- package/dist/utils/__tests__/interactive.test.js +50 -1
- package/dist/utils/__tests__/interactive.test.js.map +1 -1
- package/dist/utils/cli.d.ts +6 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +19 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/config-generator.d.ts +4 -0
- package/dist/utils/config-generator.d.ts.map +1 -0
- package/dist/utils/config-generator.js +77 -0
- package/dist/utils/config-generator.js.map +1 -0
- package/dist/utils/interactive.d.ts.map +1 -1
- package/dist/utils/interactive.js +35 -0
- package/dist/utils/interactive.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
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.generateConfigFile = generateConfigFile;
|
|
37
|
+
exports.getDefaultConfigPath = getDefaultConfigPath;
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
async function generateConfigFile(config, configPath) {
|
|
41
|
+
const configDir = path.dirname(configPath);
|
|
42
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
43
|
+
// Calculate relative paths from config file location
|
|
44
|
+
const repoPathRelative = path.relative(configDir, config.repoPath);
|
|
45
|
+
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
|
+
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}"`;
|
|
52
|
+
const configContent = `/**
|
|
53
|
+
* Sync-worktrees configuration file
|
|
54
|
+
* Generated on ${new Date().toISOString()}
|
|
55
|
+
*/
|
|
56
|
+
|
|
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
|
+
};
|
|
71
|
+
`;
|
|
72
|
+
await fs.writeFile(configPath, configContent, "utf-8");
|
|
73
|
+
}
|
|
74
|
+
function getDefaultConfigPath() {
|
|
75
|
+
return path.join(process.cwd(), "sync-worktrees.config.js");
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=config-generator.js.map
|
|
@@ -0,0 +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -37,6 +37,7 @@ exports.promptForConfig = promptForConfig;
|
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const prompts_1 = require("@inquirer/prompts");
|
|
40
|
+
const config_generator_1 = require("./config-generator");
|
|
40
41
|
async function promptForConfig(partialConfig) {
|
|
41
42
|
console.log("š§ Welcome to sync-worktrees interactive setup!\n");
|
|
42
43
|
let repoPath = partialConfig.repoPath;
|
|
@@ -130,6 +131,40 @@ async function promptForConfig(partialConfig) {
|
|
|
130
131
|
console.log(` Mode: Scheduled (${finalConfig.cronSchedule})`);
|
|
131
132
|
}
|
|
132
133
|
console.log("");
|
|
134
|
+
// Ask if user wants to save configuration to a file
|
|
135
|
+
const saveConfig = await (0, prompts_1.confirm)({
|
|
136
|
+
message: "Would you like to save this configuration to a file for future use?",
|
|
137
|
+
default: true,
|
|
138
|
+
});
|
|
139
|
+
if (saveConfig) {
|
|
140
|
+
const defaultConfigPath = (0, config_generator_1.getDefaultConfigPath)();
|
|
141
|
+
let configPath = await (0, prompts_1.input)({
|
|
142
|
+
message: "Enter the path for the config file:",
|
|
143
|
+
default: defaultConfigPath,
|
|
144
|
+
validate: (value) => {
|
|
145
|
+
if (!value.trim()) {
|
|
146
|
+
return "Config file path is required";
|
|
147
|
+
}
|
|
148
|
+
if (!value.endsWith(".js")) {
|
|
149
|
+
return "Config file must have a .js extension";
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
if (!path.isAbsolute(configPath)) {
|
|
155
|
+
configPath = path.resolve(configPath);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
await (0, config_generator_1.generateConfigFile)(finalConfig, configPath);
|
|
159
|
+
console.log(`\nā
Configuration saved to: ${configPath}`);
|
|
160
|
+
console.log(`\nš” You can now use this config file with:`);
|
|
161
|
+
console.log(` sync-worktrees --config ${path.relative(process.cwd(), configPath)}`);
|
|
162
|
+
console.log("");
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.error(`\nā Failed to save config file: ${error.message}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
133
168
|
return finalConfig;
|
|
134
169
|
}
|
|
135
170
|
//# sourceMappingURL=interactive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}
|