embark-area-51/lib/versions/library_manager.js

70 lines
1.9 KiB
JavaScript
Raw Normal View History

2017-12-30 23:25:59 +00:00
var Npm = require('./npm.js');
class LibraryManager {
constructor(options) {
this.plugins = options.plugins;
this.config = options.config;
this.contractsConfig = this.config.contractsConfig;
this.embark = this.plugins.createPlugin('libraryManager', {});
this.determineVersions();
this.registerCommands();
2017-12-30 23:12:16 +00:00
this.listenToCommandsToGetVersions();
this.listenToCommandsToGetLibrary();
}
determineVersions() {
this.versions = {};
let solcVersionInConfig = this.contractsConfig.versions.solc;
let web3VersionInConfig = this.contractsConfig.versions["web3.js"];
let ipfsApiVersion = require('../../package.json').dependencies["ipfs-api"];
this.versions['solc'] = solcVersionInConfig;
this.versions['web3'] = web3VersionInConfig;
this.versions['ipfs-api'] = ipfsApiVersion;
}
registerCommands() {
const self = this;
this.embark.registerConsoleCommand((cmd, _options) => {
if (cmd === "versions") {
let text = ['versions in use:'];
for (let lib in self.versions) {
text.push(lib + ": " + self.versions[lib]);
}
return text.join('\n');
}
return false;
});
}
2017-12-30 23:12:16 +00:00
listenToCommandsToGetVersions() {
const self = this;
for (let libName in this.versions) {
let lib = self.versions[libName];
this.embark.events.setCommandHandler('version:get:' + libName, (cb) => {
cb(lib);
});
}
}
2017-12-30 23:12:16 +00:00
listenToCommandsToGetLibrary() {
2017-12-30 23:25:59 +00:00
// TODO: generalize to any lib
2017-12-30 23:12:16 +00:00
let libName = "solc";
let npm = new Npm({logger: this.embark.logger});
2017-12-30 23:25:59 +00:00
this.embark.events.setCommandHandler('version:getPackageLocation:' + libName, (version, cb) => {
npm.getPackageVersion(libName, version, false, false, cb);
});
this.embark.events.setCommandHandler('version:getPackageContent:' + libName, (version, cb) => {
npm.getPackageVersion(libName, version, false, true, cb);
2017-12-30 23:12:16 +00:00
});
}
}
module.exports = LibraryManager;