Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
|
|
@ -0,0 +1,85 @@
|
|||
'use strict';
|
||||
/** handles mutation of settings.json */
|
||||
var SETTINGS = 'settings.json';
|
||||
var PERMISSIONS_DB = 'permissions.sqlite';
|
||||
|
||||
var fs = require('fs'),
|
||||
fsPath = require('path');
|
||||
|
||||
/**
|
||||
* Updates the settings.json file of a given profile
|
||||
*
|
||||
* @param {String} profile path.
|
||||
* @param {Options} options with .settings.
|
||||
* @param {Function} callback [Error err, profile].
|
||||
*/
|
||||
function settings(profile, options, callback) {
|
||||
if (!options || !options.settings) {
|
||||
return process.nextTick(callback.bind(null, null, profile));
|
||||
}
|
||||
|
||||
// location of settings.json
|
||||
var settingsPath = fsPath.join(profile, SETTINGS);
|
||||
// location of permissions
|
||||
var permissionsPath = fsPath.join(profile, PERMISSIONS_DB);
|
||||
|
||||
function readSettings() {
|
||||
fs.readFile(settingsPath, 'utf8', function(err, content) {
|
||||
var json;
|
||||
try {
|
||||
json = JSON.parse(content);
|
||||
} catch (e) {
|
||||
return callback(e);
|
||||
}
|
||||
|
||||
writeSettings(json);
|
||||
});
|
||||
}
|
||||
|
||||
function writeSettings(original) {
|
||||
// copy new settings over
|
||||
var newSettings = options.settings;
|
||||
for (var name in newSettings) {
|
||||
original[name] = newSettings[name];
|
||||
}
|
||||
|
||||
var pending = 2;
|
||||
function next(err) {
|
||||
if (err) {
|
||||
callback && callback(err);
|
||||
callback = null;
|
||||
}
|
||||
|
||||
if (--pending === 0)
|
||||
callback(null, profile);
|
||||
}
|
||||
|
||||
fs.exists(permissionsPath, function(itDoes) {
|
||||
if (!itDoes)
|
||||
return next();
|
||||
|
||||
fs.unlink(permissionsPath, next);
|
||||
});
|
||||
|
||||
// and finally write the file back out
|
||||
fs.writeFile(
|
||||
settingsPath,
|
||||
// slows it down a but but makes it readable!
|
||||
JSON.stringify(original, null, 2),
|
||||
next
|
||||
);
|
||||
}
|
||||
|
||||
// check if file exists
|
||||
fs.exists(settingsPath, function(fileExists) {
|
||||
if (fileExists) {
|
||||
// when file exists read it then write
|
||||
readSettings();
|
||||
} else {
|
||||
// otherwise simply write
|
||||
writeSettings({});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = settings;
|
||||
Loading…
Reference in a new issue