ionic
Version:
A tool for creating and developing Ionic Framework mobile apps.
80 lines (73 loc) • 2.16 kB
JavaScript
var fs = require('fs');
var path = require('path');
var Utils = require('./utils');
var Q = require('q');
var home = process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH;
module.exports = {
CONFIG_FILE: '.ionic/ionic.config',
load: function() {
this.file = this.CONFIG_FILE;
if (fs.existsSync(path.join(home, this.file))) {
try {
this.data = JSON.parse(fs.readFileSync(path.join(home, this.file)));
} catch(e) {
console.error('Unable to parse Ionic Config file. Please make sure it is valid JSON (' + this.CONFIG_FILE + ')');
throw e;
}
} else {
this.data = {};
}
return this;
},
promiseLoad: function() {
var self = this;
self.file = self.CONFIG_FILE;
var readFile = Utils.promisify(fs.readFile);
return readFile(path.join(home, self.file)).then(function(jsonContents) {
self.data = jsonContents.toString();
return self;
});
},
save: function() {
if (!this.data) {
return;
}
try {
var dirPath = path.join(home, path.dirname(this.CONFIG_FILE));
var p = path.join(home, this.CONFIG_FILE);
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath);
}
fs.writeFileSync(p, JSON.stringify(this.data, null, 2));
} catch (e) {
console.error('Unable to save settings file: ' + e);
}
},
promiseSave: function() {
if (!this.data) {
return Q.resolve();
}
var dirPath = path.join(home, path.dirname(this.CONFIG_FILE));
var filepath = path.join(dirPath, this.CONFIG_FILE);
var statFile = Utils.promisify(fs.stat);
var mkDir = Utils.promisify(fs.mkdir);
var jsonString = JSON.stringify(this.data, null, 2);
return statFile(dirPath).then(function(stat) {
return Utils.writeJsonContents(filepath, jsonString);
}, function() {
return mkDir(dirPath).then(function() {
return Utils.writeJsonContents(filepath, jsonString);
});
});
},
get: function(k) {
return this.data[k];
},
set: function(k, v) {
if (!this.data) {
this.data = {};
}
this.data[k] = v;
this.save();
}
};