hyper/app/config/import.ts

64 lines
1.6 KiB
TypeScript
Raw Normal View History

2023-02-14 05:28:07 -09:00
import {readFileSync, mkdirpSync} from 'fs-extra';
import {defaultCfg, cfgPath, plugs, defaultPlatformKeyPath} from './paths';
import {_init} from './init';
2019-11-28 05:17:01 -09:00
import notify from '../notify';
2020-04-27 05:32:08 -08:00
import {rawConfig} from '../../lib/config';
import {migrateHyper3Config} from './migrate';
2020-04-27 05:32:08 -08:00
let defaultConfig: rawConfig;
2019-11-28 05:17:01 -09:00
const _importConf = () => {
// init plugin directories if not present
mkdirpSync(plugs.base);
mkdirpSync(plugs.local);
try {
2022-12-25 20:01:04 -09:00
migrateHyper3Config();
} catch (err) {
console.error(err);
}
2022-12-25 20:01:04 -09:00
let defaultCfgRaw = '{}';
try {
2020-04-27 05:32:08 -08:00
defaultCfgRaw = readFileSync(defaultCfg, 'utf8');
} catch (err) {
console.log(err);
}
2022-12-25 20:01:04 -09:00
const _defaultCfg = JSON.parse(defaultCfgRaw) as rawConfig;
2020-04-27 05:32:08 -08:00
// Importing platform specific keymap
let content = '{}';
try {
content = readFileSync(defaultPlatformKeyPath(), 'utf8');
} catch (err) {
console.error(err);
}
const mapping = JSON.parse(content) as Record<string, string | string[]>;
_defaultCfg.keymaps = mapping;
// Import user config
2022-12-25 20:01:04 -09:00
let userCfg: rawConfig;
2020-04-27 05:32:08 -08:00
try {
2022-12-25 20:01:04 -09:00
userCfg = JSON.parse(readFileSync(cfgPath, 'utf8'));
2020-04-27 05:32:08 -08:00
} catch (err) {
notify("Couldn't parse config file. Using default config instead.");
2022-12-25 20:01:04 -09:00
userCfg = JSON.parse(defaultCfgRaw);
2020-04-27 05:32:08 -08:00
}
return {userCfg, defaultCfg: _defaultCfg};
};
2019-11-28 05:17:01 -09:00
export const _import = () => {
const imported = _importConf();
2020-04-27 05:32:08 -08:00
defaultConfig = imported.defaultCfg;
2022-12-25 20:01:04 -09:00
const result = _init(imported.userCfg, imported.defaultCfg);
return result;
};
2019-11-28 05:17:01 -09:00
export const getDefaultConfig = () => {
if (!defaultConfig) {
2020-04-27 05:32:08 -08:00
defaultConfig = _importConf().defaultCfg;
}
return defaultConfig;
};