tabs/src/Config.js

41 lines
1.2 KiB
JavaScript
Raw Normal View History

import fs from "fs";
import path from "path";
import {homedir} from "os";
import Service from "./Service";
const configDir = path.resolve(homedir(), '.tabs-app');
const configFile = path.resolve(configDir, 'config.json');
export default class Config {
constructor() {
// Load data from config file
let data = {};
if (fs.existsSync(configDir) && fs.statSync(configDir).isDirectory()) {
if (fs.existsSync(configFile) && fs.statSync(configFile).isFile())
data = JSON.parse(fs.readFileSync(configFile, 'utf8'));
} else {
fs.mkdirSync(configDir);
}
// Parse services
this.services = [];
if (typeof data.services === 'object') {
let i = 0;
for (const service of data.services) {
this.services[i] = new Service(service);
i++;
}
}
if (this.services.length === 0) {
this.services.push(new Service('welcome', 'Welcome', 'fas fa-rocket', false, 'https://gitlab.com/ArisuOngaku/tabs', false));
}
this.save();
}
save() {
fs.writeFileSync(configFile, JSON.stringify(this, null, 4));
}
}