39 lines
869 B
JavaScript
39 lines
869 B
JavaScript
'use strict';
|
|
const path = require('path');
|
|
const electron = require('electron');
|
|
const Conf = require('conf');
|
|
|
|
class ElectronStore extends Conf {
|
|
constructor(options) {
|
|
const app = (electron.app || electron.remote.app);
|
|
const defaultCwd = app.getPath('userData');
|
|
|
|
options = {
|
|
name: 'config',
|
|
...options
|
|
};
|
|
|
|
if (!options.projectVersion) {
|
|
options.projectVersion = app.getVersion();
|
|
}
|
|
|
|
if (options.cwd) {
|
|
options.cwd = path.isAbsolute(options.cwd) ? options.cwd : path.join(defaultCwd, options.cwd);
|
|
} else {
|
|
options.cwd = defaultCwd;
|
|
}
|
|
|
|
options.configName = options.name;
|
|
delete options.name;
|
|
super(options);
|
|
}
|
|
|
|
openInEditor() {
|
|
// TODO: Remove `electron.shell.openItem` when targeting Electron 9.`
|
|
const open = electron.shell.openItem || electron.shell.openPath;
|
|
open(this.path);
|
|
}
|
|
}
|
|
|
|
module.exports = ElectronStore;
|