59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
var path = require("path");
|
|
var cp = require("child_process");
|
|
var fs = require("fs");
|
|
var Promise = require("promise");
|
|
var parser = require("ini-parser");
|
|
|
|
var addonINI = path.resolve("./test/addons/jetpack-addon.ini");
|
|
var addonsDir = path.resolve("./test/addons/");
|
|
|
|
function updateAddonINI() {
|
|
return new Promise(function(resolve) {
|
|
console.log("Start updating " + addonINI);
|
|
|
|
makeAddonIniContent().
|
|
then(function(contents) {
|
|
fs.writeFileSync(addonINI, contents, { encoding: "utf8" });
|
|
console.log("Done updating " + addonINI);
|
|
resolve();
|
|
});
|
|
})
|
|
}
|
|
exports.updateAddonINI = updateAddonINI;
|
|
|
|
function makeAddonIniContent() {
|
|
return new Promise(function(resolve) {
|
|
var data = parser.parse(fs.readFileSync(addonINI, { encoding: "utf8" }).toString());
|
|
var result = {};
|
|
|
|
fs.readdir(addonsDir, function(err, files) {
|
|
var folders = files.filter(function(file) {
|
|
return fs.statSync(path.resolve(addonsDir, file)).isDirectory();
|
|
}).sort();
|
|
|
|
folders.forEach(function(folder) {
|
|
var oldData = data[folder + ".xpi"];
|
|
result[folder] = oldData ? oldData : {};
|
|
});
|
|
|
|
// build ini file
|
|
var contents = [];
|
|
Object.keys(result).sort().forEach(function(key) {
|
|
contents.push("[" + key + ".xpi]");
|
|
Object.keys(result[key]).forEach(function(dataKey) {
|
|
contents.push(dataKey + " = " + result[key][dataKey]);
|
|
});
|
|
});
|
|
contents = contents.join("\n") + "\n";
|
|
|
|
return resolve(contents);
|
|
});
|
|
});
|
|
}
|
|
exports.makeAddonIniContent = makeAddonIniContent;
|