'use strict';
const fs = require('fs');
-const path = require('path');
const utils = require('../utils');
-const REPO_PATH = path.join(require('os').homedir(), 'data/electron/runtime_addon/');
+const REPO_PATH = require('path').join(require('os').homedir(), 'data/electron/runtime_addon/');
const DB_FILE = '_db.json';
-module.exports = {
- get: function (key) {
- const addon_name = utils.getPackageID();
- if (!addon_name) {
- console.error(`Package ID not found`);
- return undefined;
- }
+function getDBPath() {
+ const addon_name = utils.getPackageID();
+ if (addon_name) {
const DB_PATH = REPO_PATH + addon_name + DB_FILE;
console.log(`DB_PATH: ${DB_PATH}`);
+ return DB_PATH;
+ } else {
+ console.error('Package ID not found');
+ return '';
+ }
+}
+
+function get(key) {
+ const DB_PATH = getDBPath();
+ if (!DB_PATH)
+ return undefined;
+ try {
+ const fileContents = fs.readFileSync(DB_PATH);
+ const jsonObject = JSON.parse(fileContents);
+ console.log(`Read value: ${JSON.stringify(jsonObject)}`);
+ return jsonObject[key];
+ } catch (err) {
+ console.log(`An error has occurred: ${err}`);
+ return undefined;
+ }
+}
+
+function set(key, value) {
+ const DB_PATH = getDBPath();
+ if (!DB_PATH)
+ return false;
+ try {
+ let jsonObject;
try {
const fileContents = fs.readFileSync(DB_PATH);
- const jsonObject = JSON.parse(fileContents);
- console.log(`Read value: ${JSON.stringify(jsonObject)}`);
- return jsonObject[key];
- } catch (err) {
- console.log(`An error has occurred: ${err}`);
- return undefined;
+ jsonObject = JSON.parse(fileContents);
+ console.log(`Current value: ${JSON.stringify(jsonObject)}`);
+ } catch {
+ console.log(`Add-on DB file doesn't exist`);
+ jsonObject = {};
}
- },
+ jsonObject[key] = value;
+ console.log(`New value: ${JSON.stringify(jsonObject)}`);
+ const jsonString = JSON.stringify(jsonObject);
+ fs.writeFileSync(DB_PATH, jsonString);
+ return true;
+ } catch (err) {
+ console.log(`An error has occurred: ${err}`);
+ return false;
+ }
+}
- set: function (key, value) {
- const addon_name = utils.getPackageID();
- if (!addon_name) {
- console.error(`Package ID not found`);
- return false;
- }
- const DB_PATH = REPO_PATH + addon_name + DB_FILE;
- console.log(`DB_PATH: ${DB_PATH}`);
- try {
- let jsonObject;
- try {
- const fileContents = fs.readFileSync(DB_PATH);
- jsonObject = JSON.parse(fileContents);
- console.log(`Current value: ${JSON.stringify(jsonObject)}`);
- } catch {
- console.log(`Add-on DB file doesn't exist`);
- jsonObject = {};
- }
- jsonObject[key] = value;
- console.log(`New value: ${JSON.stringify(jsonObject)}`);
- const jsonString = JSON.stringify(jsonObject);
- fs.writeFileSync(DB_PATH, jsonString);
- return true;
- } catch (err) {
- console.log(`An error has occurred: ${err}`);
- return false;
- }
+function clearAll() {
+ const DB_PATH = getDBPath();
+ if (!DB_PATH)
+ return false;
+ try {
+ fs.statSync(DB_PATH);
+ } catch (err) {
+ console.log(`An error has occurred: ${err}`);
+ return true;
}
+ try {
+ fs.unlinkSync(DB_PATH);
+ } catch (err) {
+ console.log(`An error has occurred: ${err}`);
+ return false;
+ }
+ return true;
+}
+
+module.exports = {
+ clearAll,
+ get,
+ set
}
\ No newline at end of file
'use strict';
-const path = require('path');
const Module = require('module');
const originalResolveFilename = Module._resolveFilename;
-const ADDONS_PATH = path.join(__dirname, '..', 'addon', process.type, 'addonapi.js');
+const ADDONS_PATH = require('path').join(__dirname, '..', 'addon', process.type, 'addonapi.js');
Module._resolveFilename = function (request, parent, isMain) {
if (request === 'addonapi') {
}
}
+ let addons_pkgids_ = [];
for (let addon of adnPkgs) {
- if (addon_list) {
- for (let tmpAddon of addon_list) {
- if (tmpAddon.name == addon.name) {
- console.log('already in db');
- adnPkgs[adnPkgs.indexOf(addon)].activate =
- tmpAddon.activate;
- }
+ addons_pkgids_.push(addon.pkgid);
+ for (let tmpAddon of addon_list) {
+ if (tmpAddon.name == addon.name) {
+ console.log('already in db');
+ adnPkgs[adnPkgs.indexOf(addon)].activate =
+ tmpAddon.activate;
}
}
}
+ // Removes obsolete add-on DB files
+ try {
+ const DB_FILES = '_db.json';
+ tmpfs.readdirSync(ADN_PATH).forEach((file) => {
+ if (file != ADDONS_DB_FILE && file.endsWith(DB_FILES)) {
+ let id = file.substr(0, file.indexOf(DB_FILES));
+ if (addons_pkgids_.indexOf(id) === -1) {
+ try {
+ tmpfs.unlinkSync(path.join(ADN_PATH, file));
+ } catch (err) {
+ console.log(`${file} deletion failed`);
+ }
+ }
+ }
+ });
+ } catch (err) {
+ console.log(`An error occurred: ${err}`);
+ }
+
var fd;
try {
fd = tmpfs.openSync(db_path, 'w');