create-tezos-smart-contract
Version:
Node.js toolset to write, test and deploy Tezos smart contracts
64 lines (63 loc) • 3.29 kB
JavaScript
;
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;