UNPKG

lifetracker

Version:

Keep track of events and trends in your life.

77 lines (73 loc) 2.67 kB
const _ = require("lodash"); const os = require("os"); const path = require("path"); const jsonfile = require("jsonfile"); const CSON = require("cson"); const fs = require("fs"); const glob = require("glob"); const mkdirp = require("mkdirp"); const UUID = require("uuid-js"); const {dialog} = require("electron").remote; const moment = require("moment"); var Promise = require("bluebird"); Promise.promisifyAll(fs); Promise.promisifyAll(jsonfile); Promise.promisifyAll(CSON); Promise.promisifyAll(mkdirp); // fs.copyFile doesn't seem to promisify nicely. // var copyFile = Promise.promisify(fs.copyFile); // var CSON = Promise.promisifyAll(require('cson')); // var readjson = Promise.promisify(jsonfile.readFile); // var writejson = Promise.promisify(jsonfile.writeFile); // var loadCSON = Promise.promisify(CSON.load); // var createCSON = Promise.promisify(CSON.createCSONString); // var writeFile = Promise.promisify(fs.writeFile); function requirePromise(mod) { return new Promise((resolve, reject) => { resolve(require(`${__dirname}/lib/${mod}.js`)); }); } var config, populate, gen, prefs, submit, dataProc, themes, presets; // These ones are all either independent or probably won't cause problems // and can be loaded asynchronously. themes = require(__dirname + '/lib/themes.js'); // The preset entries are loaded in the presets module. submit = require(__dirname + '/lib/submit.js'); gen = require(__dirname + '/lib/makeForm.js'); require('electron').ipcRenderer.on('loaded', function(event, incoming) { requirePromise("config").then((mod) => { config = mod; config.makeDefaultConfig(); return config.loadSystemConfig(); // return Promise.join(config.loadUserConfig(), config.loadSystemConfig(), () => { return new Promise.resolve(); }); }) .then(() => { // return config.loadUserConfig(); return Promise.join(config.loadUserConfig(), config.loadForms(), config.loadPresets(), () => { return new Promise.resolve(); }); }) .then(() => { populate = require(__dirname + '/lib/populate.js'); presets = require(__dirname + "/lib/presets.js"); prefs = require(__dirname + '/lib/preferences.js'); config.applyTheme(); populate.fillSidebar(); return requirePromise("data"); }) .then((mod) => { dataProc = mod; return dataProc.loadData(); }) .then(() => { // return Promise.join(dataProc.getFields(), dataProc.getCategories(), () => { dataProc.makeKeys(); return dataProc.getCategories(); }) .then(() => { populate.populate("home"); }) .catch((err) => { console.log(err.stack); }); });