UNPKG

create-tezos-smart-contract

Version:

Node.js toolset to write, test and deploy Tezos smart contracts

64 lines (63 loc) 3.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeContractBundle = void 0; const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const console_1 = require("../../../console"); const bundle_1 = require("../../../modules/bundle"); const config_1 = require("../../../modules/config"); const make_contract_1 = require("./make-contract"); const make_jest_config_1 = require("./make-jest-config"); const make_package_json_1 = require("./make-package.json"); const make_readme_1 = require("./make-readme"); const make_test_1 = require("./make-test"); const make_e2e_test_1 = require("./make-e2e-test"); const makeContractBundle = async (params) => { const { basePath, config, hasExamples, } = params; const bundle = await (0, bundle_1.createBundle)(config.repoName, basePath); // .gitignore await bundle.writeTextFile('.gitignore', "build\nnode_modules\npackage-lock.json"); // prepare folders await bundle.makeDir("contracts"); await bundle.makeDir("test"); await bundle.makeDir("scripts"); // README await bundle.writeTextFile('README.md', (0, make_readme_1.makeREADME)(config.repoName)); // Config file const configFile = new config_1.ConfigFile(config); try { configFile.validate(); } catch (validationError) { (0, console_1.error)(`Could not create smart contract repository configuration:\n\n${validationError}`); process.exit(1); } await bundle.writeJSONFile(config_1.ConfigFile.getName(), configFile.config, true); // Jest config await bundle.writeTextFile('jest.config.js', (0, make_jest_config_1.makeJestConfig)()); // package.json const packageJSON = fs_1.default.readFileSync(path_1.default.resolve(__dirname, '..', '..', '..', '..', 'package.json')); const app = JSON.parse(packageJSON.toString()); await bundle.writeJSONFile('package.json', (0, make_package_json_1.makePackageJSON)(config.repoName, app.version)); // Generate contract filename const contractFileName = (0, make_contract_1.getContractFileName)(config.preferredLigoFlavor, config.repoName); // Example files or only placeholders? let contractData = ''; let testData = (0, make_test_1.makeTest)(config.repoName, contractFileName, false); let e2eTestData = (0, make_e2e_test_1.makeE2ETest)(config.repoName, contractFileName, false); if (hasExamples) { contractData = (0, make_contract_1.makeContractFile)(config.preferredLigoFlavor); testData = (0, make_test_1.makeTest)(config.repoName, contractFileName, true); e2eTestData = (0, make_e2e_test_1.makeE2ETest)(config.repoName, contractFileName, true); } // Write contract file await bundle.writeTextFile(path_1.default.join('contracts', contractFileName), contractData); // Write test file await bundle.writeTextFile(path_1.default.join('test', `${config.repoName}.test.js`), testData); // Write E2E test file await bundle.writeTextFile(path_1.default.join('test', `${config.repoName}.e2e.js`), e2eTestData); }; exports.makeContractBundle = makeContractBundle;