UNPKG

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
"use strict"; 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