use-multiple-gits
Version:
CLI tool to manage multiple git configurations (user.name, user.email, SSH keys) with easy switching between identities
68 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.importConfigsFromFile = exports.importConfigs = exports.exportConfigsToFile = exports.exportConfigs = void 0;
const configStorage_1 = require("./configStorage");
const fs_1 = require("./fs");
const errors_1 = require("./errors");
const exportConfigs = async () => {
const data = await (0, configStorage_1.readConfig)();
return {
version: '1.0.0',
configs: data.configs,
groups: data.groups,
exportedAt: new Date().toISOString(),
};
};
exports.exportConfigs = exportConfigs;
const exportConfigsToFile = async (filePath) => {
const exportData = await (0, exports.exportConfigs)();
const json = JSON.stringify(exportData, null, 2);
await (0, fs_1.writeFile)(filePath, json);
};
exports.exportConfigsToFile = exportConfigsToFile;
const importConfigs = async (importData) => {
const currentData = await (0, configStorage_1.readConfig)();
// Merge configs (existing configs with same name will be updated)
const mergedConfigs = [...currentData.configs];
for (const importedConfig of importData.configs) {
const existingIndex = mergedConfigs.findIndex(c => c.name === importedConfig.name);
if (existingIndex !== -1) {
mergedConfigs[existingIndex] = importedConfig;
}
else {
mergedConfigs.push(importedConfig);
}
}
// Merge groups
const mergedGroups = { ...currentData.groups, ...importData.groups };
const newData = {
initialized: currentData.initialized,
configs: mergedConfigs,
groups: mergedGroups,
autoSwitchEnabled: currentData.autoSwitchEnabled,
directoryMappings: currentData.directoryMappings,
};
await (0, configStorage_1.writeConfig)(newData);
};
exports.importConfigs = importConfigs;
const importConfigsFromFile = async (filePath) => {
const content = await (0, fs_1.readFile)(filePath);
if (!content) {
throw new errors_1.InvalidConfigError(`File not found: ${filePath}`);
}
try {
const importData = JSON.parse(content);
if (!importData.configs || !Array.isArray(importData.configs)) {
throw new errors_1.InvalidConfigError('Invalid export file format: missing configs array');
}
await (0, exports.importConfigs)(importData);
}
catch (error) {
if (error instanceof errors_1.InvalidConfigError) {
throw error;
}
throw new errors_1.InvalidConfigError(`Failed to parse import file: ${error.message}`);
}
};
exports.importConfigsFromFile = importConfigsFromFile;
//# sourceMappingURL=exportImport.js.map