alm
Version:
The best IDE for TypeScript
60 lines (58 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var mkdirp = require("mkdirp");
var fsu = require("../utils/fsu");
var json = require("../../common/json");
/**
* From http://stackoverflow.com/questions/19275776/node-js-how-to-get-the-os-platforms-user-data-folder/26227660#26227660
OS X - '/Users/user/Library/Preferences'
Windows 8 - 'C:\Users\User\AppData\Roaming'
Windows XP - 'C:\Documents and Settings\User\Application Data'
Linux - `/home/bas/.local/share` (http://askubuntu.com/a/14536/7327)
*/
var userDataDir = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Preferences' : process.env.HOME + '/.local/share');
exports.appSettingsFolder = userDataDir + '/alm';
mkdirp.sync(exports.appSettingsFolder);
var settingsFilePath = exports.appSettingsFolder + '/settingsV1.json';
function getSettingsFilePath() {
return settingsFilePath;
}
exports.getSettingsFilePath = getSettingsFilePath;
/**
* Get / Set Settings
*/
function getSettings() {
var settings = {
workingDirs: []
};
if (fsu.existsSync(settingsFilePath)) {
var parsed = json.parse(fsu.readFile(settingsFilePath));
if (parsed.error) {
console.error('Could not parse the settings file:', parsed.error);
return settings;
}
/** Other validations */
if (!Array.isArray(parsed.data.workingDirs)) {
console.error('settings.workingDirs should be an array');
return settings;
}
/** All good! */
settings = parsed.data;
}
return settings;
}
function setSettings(settings) {
var str = json.stringify(settings);
fsu.writeFile(settingsFilePath, str);
}
/**
* Various setting functions
*/
function addWorkingDir(workingDir) {
var settings = getSettings();
if (settings.workingDirs.find(function (x) { return x === workingDir; }))
return;
settings.workingDirs.push(workingDir);
setSettings(settings);
}
exports.addWorkingDir = addWorkingDir;