mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-13 12:38:39 -09:00
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
const {writeFileSync, readFileSync} = require('fs');
|
|
const {sync: mkdirpSync} = require('mkdirp');
|
|
const {defaultCfg, cfgPath, plugs} = require('./paths');
|
|
const _init = require('./init');
|
|
const _keymaps = require('./keymaps');
|
|
|
|
const _write = function(path, data) {
|
|
// This method will take text formatted as Unix line endings and transform it
|
|
// to text formatted with DOS line endings. We do this because the default
|
|
// text editor on Windows (notepad) doesn't Deal with LF files. Still. In 2017.
|
|
const crlfify = function(str) {
|
|
return str.replace(/\r?\n/g, '\r\n');
|
|
};
|
|
const format = process.platform === 'win32' ? crlfify(data.toString()) : data;
|
|
writeFileSync(path, format, 'utf8');
|
|
};
|
|
|
|
const _importConf = function() {
|
|
// init plugin directories if not present
|
|
mkdirpSync(plugs.base);
|
|
mkdirpSync(plugs.local);
|
|
|
|
try {
|
|
const _defaultCfg = readFileSync(defaultCfg, 'utf8');
|
|
try {
|
|
const _cfgPath = readFileSync(cfgPath, 'utf8');
|
|
return {userCfg: _cfgPath, defaultCfg: _defaultCfg};
|
|
} catch (err) {
|
|
_write(cfgPath, _defaultCfg);
|
|
return {userCfg: {}, defaultCfg: _defaultCfg};
|
|
}
|
|
} catch (err) {
|
|
//eslint-disable-next-line no-console
|
|
console.log(err);
|
|
}
|
|
};
|
|
|
|
const _import = function() {
|
|
const cfg = _init(_importConf());
|
|
|
|
if (cfg) {
|
|
cfg.keymaps = _keymaps.import(cfg.keymaps);
|
|
}
|
|
return cfg;
|
|
};
|
|
|
|
module.exports = _import;
|