@neo-one/server-plugin-compiler
Version:
NEO•ONE Server compiler plugin.
52 lines (50 loc) • 6.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const server_plugin_1 = require("@neo-one/server-plugin");
const fs = tslib_1.__importStar(require("fs-extra"));
const path = tslib_1.__importStar(require("path"));
const errors_1 = require("../errors");
class CreateContractCRUD extends server_plugin_1.CreateCRUD {
constructor({ resourceType }) {
super({
name: 'compile',
resourceType,
extraArgs: ['<smartContractPath>'],
options: [{
option: '--abi <path>',
description: 'Path to JSON file containing ABI. '
}, {
option: '--storage',
description: 'Does the Smart Contract use storage?'
}, {
option: '--dynamic-invoke',
description: 'Does the Smart Contract use dynamic invocations?'
}, {
option: '--payable',
description: 'Is the Smart Contract payable?'
}]
});
}
async getCLIResourceOptions({ args, options }) {
const { smartContractPath } = args;
const { abi: abiPath } = options;
let abi;
const ext = path.extname(smartContractPath);
if (ext === '.py' || ext === '.dll') {
if (abiPath == undefined) {
throw new errors_1.ABIRequiredError();
}
abi = await fs.readJSON(abiPath);
}
return {
scPath: smartContractPath,
abi,
hasStorage: !!options.storage,
hasDynamicInvoke: !!options['dynamic-invoke'],
payable: !!options.payable
};
}
}
exports.CreateContractCRUD = CreateContractCRUD;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUNvbnRyYWN0Q1JVRC50cyJdLCJuYW1lcyI6WyJDcmVhdGVDb250cmFjdENSVUQiLCJDcmVhdGVDUlVEIiwicmVzb3VyY2VUeXBlIiwibmFtZSIsImV4dHJhQXJncyIsIm9wdGlvbnMiLCJvcHRpb24iLCJkZXNjcmlwdGlvbiIsImdldENMSVJlc291cmNlT3B0aW9ucyIsImFyZ3MiLCJzbWFydENvbnRyYWN0UGF0aCIsImFiaSIsImFiaVBhdGgiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInVuZGVmaW5lZCIsIkFCSVJlcXVpcmVkRXJyb3IiLCJmcyIsInJlYWRKU09OIiwic2NQYXRoIiwiaGFzU3RvcmFnZSIsInN0b3JhZ2UiLCJoYXNEeW5hbWljSW52b2tlIiwicGF5YWJsZSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQUE7QUFDQSxxREFBQTtBQUNBLG1EQUFBO0FBRUEsc0NBQUE7QUFFQSxNQUFhQSxrQkFBTixTQUFpQ0MsMEJBQWpDO0lBQ0wsWUFBbUIsRUFBRUMsWUFBQUEsRUFBckI7UUFDRSxLQUFBLENBQU07WUFDSkMsSUFBSSxFQUFFLFNBREY7WUFFSkQsWUFGSTtZQUdKRSxTQUFTLEVBQUUsQ0FBQyxxQkFBRCxDQUhQO1lBSUpDLE9BQU8sRUFBRSxDQUNQO29CQUNFQyxNQUFNLEVBQUUsY0FEVjtvQkFFRUMsV0FBVyxFQUFFLG9DQUFBO2lCQUhSLEVBTVA7b0JBQ0VELE1BQU0sRUFBRSxXQURWO29CQUVFQyxXQUFXLEVBQUUsc0NBQUE7aUJBUlIsRUFXUDtvQkFDRUQsTUFBTSxFQUFFLGtCQURWO29CQUVFQyxXQUFXLEVBQUUsa0RBQUE7aUJBYlIsRUFnQlA7b0JBQ0VELE1BQU0sRUFBRSxXQURWO29CQUVFQyxXQUFXLEVBQUUsZ0NBQUE7aUJBbEJSLENBQUE7U0FKWCxDQUFBLENBQUE7SUEwQkQsQ0FBQTtJQUVELEtBQUEsQ0FBYUMscUJBQWIsQ0FBbUMsRUFBRUMsSUFBRixFQUFRSixPQUFBQSxFQUEzQztRQUNFLE1BQU0sRUFBRUssaUJBQUFBLEVBQUYsR0FBd0JELElBQTlCLENBQUE7UUFDQSxNQUFNLEVBQUVFLEdBQUcsRUFBRUMsT0FBQUEsRUFBUCxHQUFtQlAsT0FBekIsQ0FBQTtRQUVBLElBQUlNLEdBQUosQ0FBQTtRQUNBLE1BQU1FLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxPQUFMLENBQWFMLGlCQUFiLENBQVosQ0FBQTtRQUNBLElBQUlHLEdBQUcsS0FBSyxLQUFSLElBQWlCQSxHQUFHLEtBQUssTUFBN0IsRUFBcUM7WUFDbkMsSUFBSUQsT0FBTyxJQUFJSSxTQUFmLEVBQTBCO2dCQUN4QixNQUFNLElBQUlDLHlCQUFKLEVBQU4sQ0FBQTthQUNEO1lBRUROLEdBQUcsR0FBRyxNQUFNTyxFQUFFLENBQUNDLFFBQUgsQ0FBWVAsT0FBWixDQUFaLENBQUE7U0FDRDtRQUVELE9BQU87WUFDTFEsTUFBTSxFQUFFVixpQkFESDtZQUVMQyxHQUZLO1lBR0xVLFVBQVUsRUFBRSxDQUFDLENBQUNoQixPQUFPLENBQUNpQixPQUhqQjtZQUlMQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUNsQixPQUFPLENBQUMsZ0JBQUQsQ0FKdEI7WUFLTG1CLE9BQU8sRUFBRSxDQUFDLENBQUNuQixPQUFPLENBQUNtQixPQUFBQTtTQUxyQixDQUFBO0lBT0QsQ0FBQTtDQW5EbUY7QUFBdEYsZ0RBQXNGIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi1jb21waWxlci9zcmMvY3J1ZC9DcmVhdGVDb250cmFjdENSVUQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVDUlVELCBHZXRDTElSZXNvdXJjZU9wdGlvbnMgfSBmcm9tICdAbmVvLW9uZS9zZXJ2ZXItcGx1Z2luJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb250cmFjdCwgQ29udHJhY3RSZXNvdXJjZU9wdGlvbnMsIENvbnRyYWN0UmVzb3VyY2VUeXBlIH0gZnJvbSAnLi4vQ29udHJhY3RSZXNvdXJjZVR5cGUnO1xuaW1wb3J0IHsgQUJJUmVxdWlyZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVDb250cmFjdENSVUQgZXh0ZW5kcyBDcmVhdGVDUlVEPENvbnRyYWN0LCBDb250cmFjdFJlc291cmNlT3B0aW9ucz4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoeyByZXNvdXJjZVR5cGUgfTogeyByZWFkb25seSByZXNvdXJjZVR5cGU6IENvbnRyYWN0UmVzb3VyY2VUeXBlIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICBuYW1lOiAnY29tcGlsZScsXG4gICAgICByZXNvdXJjZVR5cGUsXG4gICAgICBleHRyYUFyZ3M6IFsnPHNtYXJ0Q29udHJhY3RQYXRoPiddLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgb3B0aW9uOiAnLS1hYmkgPHBhdGg+JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gSlNPTiBmaWxlIGNvbnRhaW5pbmcgQUJJLiAnLFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICBvcHRpb246ICctLXN0b3JhZ2UnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRG9lcyB0aGUgU21hcnQgQ29udHJhY3QgdXNlIHN0b3JhZ2U/JyxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgb3B0aW9uOiAnLS1keW5hbWljLWludm9rZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdEb2VzIHRoZSBTbWFydCBDb250cmFjdCB1c2UgZHluYW1pYyBpbnZvY2F0aW9ucz8nLFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICBvcHRpb246ICctLXBheWFibGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSXMgdGhlIFNtYXJ0IENvbnRyYWN0IHBheWFibGU/JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJUmVzb3VyY2VPcHRpb25zKHsgYXJncywgb3B0aW9ucyB9OiBHZXRDTElSZXNvdXJjZU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0UmVzb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgeyBzbWFydENvbnRyYWN0UGF0aCB9ID0gYXJncztcbiAgICBjb25zdCB7IGFiaTogYWJpUGF0aCB9ID0gb3B0aW9ucztcblxuICAgIGxldCBhYmk7XG4gICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKHNtYXJ0Q29udHJhY3RQYXRoKTtcbiAgICBpZiAoZXh0ID09PSAnLnB5JyB8fCBleHQgPT09ICcuZGxsJykge1xuICAgICAgaWYgKGFiaVBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBBQklSZXF1aXJlZEVycm9yKCk7XG4gICAgICB9XG5cbiAgICAgIGFiaSA9IGF3YWl0IGZzLnJlYWRKU09OKGFiaVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzY1BhdGg6IHNtYXJ0Q29udHJhY3RQYXRoLFxuICAgICAgYWJpLFxuICAgICAgaGFzU3RvcmFnZTogISFvcHRpb25zLnN0b3JhZ2UsXG4gICAgICBoYXNEeW5hbWljSW52b2tlOiAhIW9wdGlvbnNbJ2R5bmFtaWMtaW52b2tlJ10sXG4gICAgICBwYXlhYmxlOiAhIW9wdGlvbnMucGF5YWJsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=