@newos/cli
Version:
Command-line interface for the NewOS
98 lines • 4.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deployRegular = exports.action = exports.preAction = void 0;
const upgrades_1 = require("@newos/upgrades");
const Session_1 = __importDefault(require("../../models/network/Session"));
const Compiler_1 = require("../../models/compiler/Compiler");
const naming_1 = require("../../utils/naming");
const NetworkController_1 = __importDefault(require("../../models/network/NetworkController"));
const interfaces_1 = require("../../scripts/interfaces");
const stdout_1 = __importDefault(require("../../utils/stdout"));
const input_1 = require("../../utils/input");
const upgrades_2 = require("@newos/upgrades");
const link_1 = __importDefault(require("../link"));
const add_1 = __importDefault(require("../add"));
const push_1 = __importDefault(require("../push"));
function isProxyKind(kind) {
switch (kind) {
case 'regular':
return false;
case 'upgradeable':
case 'minimal':
return true;
default:
throw new Error(`Unknown proxy kind: ${kind}`);
}
}
async function preAction(params) {
if (!params.skipCompile) {
await Compiler_1.compile();
}
}
exports.preAction = preAction;
async function action(params) {
if (params.network === undefined) {
const { network: lastNetwork, expired } = Session_1.default.getNetwork();
if (!expired) {
params.network = lastNetwork;
}
}
const address = isProxyKind(params.kind) ? await deployProxy(params) : await deployRegular(params);
stdout_1.default(address);
}
exports.action = action;
async function deployRegular(params) {
const { contract: fullContractName, arguments: deployArgs } = params;
const { network, txParams } = params;
const { package: packageName, contractName } = naming_1.fromContractFullName(fullContractName);
const controller = new NetworkController_1.default(network, txParams, params.networkFile);
const args = getConstructorArgs(packageName, contractName, deployArgs, controller.contractManager);
try {
const instance = await controller.createInstance(packageName, contractName, args);
return instance.address;
}
finally {
controller.writeNetworkPackageIfNeeded();
}
}
exports.deployRegular = deployRegular;
async function deployProxy(params) {
const { contract: fullContractName, arguments: deployArgs, kind } = params;
const { network, txParams } = params;
const { package: packageName, contractName } = naming_1.fromContractFullName(fullContractName);
await link_1.default.runActionIfNeeded(fullContractName, params);
await add_1.default.runActionIfNeeded(fullContractName, params);
await push_1.default.runActionIfNeeded([fullContractName], Object.assign(Object.assign({}, params), { network: params.userNetwork }));
const controller = new NetworkController_1.default(network, txParams, params.networkFile);
const args = getConstructorArgs(packageName, contractName, deployArgs, controller.contractManager);
try {
await controller.logErrorIfContractPackageIsInvalid(packageName, contractName, false);
const instance = await controller.createProxy(packageName, contractName, 'initialize', args, literalToProxyType(kind));
if (params.kind === 'upgradeable') {
upgrades_2.Loggy.noSpin(__filename, 'deploy', 'deploy-hint', `To upgrade this instance run 'newos upgrade'`);
}
return instance.address;
}
finally {
controller.writeNetworkPackageIfNeeded();
}
}
function getConstructorArgs(packageName, contractName, deployArgs, contractManager) {
const contract = contractManager.getContractClass(packageName, contractName);
const constructorInputs = upgrades_1.getConstructorInputs(contract);
return input_1.parseMultipleArgs(deployArgs, constructorInputs);
}
function literalToProxyType(kind) {
switch (kind) {
case 'upgradeable':
return interfaces_1.ProxyType.Upgradeable;
case 'minimal':
return interfaces_1.ProxyType.Minimal;
case 'regular':
return interfaces_1.ProxyType.NonProxy;
}
}
//# sourceMappingURL=action.js.map