@cosmwasm/ts-codegen
Version:
@cosmwasm/ts-codegen converts your CosmWasm smart contracts into dev-friendly TypeScript classes so you can focus on shipping code.
133 lines (130 loc) • 4.83 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dargs_1 = __importDefault(require("dargs"));
const shell = __importStar(require("shelljs"));
const prompt_1 = require("../utils/prompt");
const glob = require('glob').sync;
const fs = require('fs');
const path = require('path');
const repo = 'https://github.com/hyperweb-io/ts-codegen-module-boilerplate';
exports.default = async (argv) => {
if (!shell.which('git')) {
shell.echo('Sorry, this script requires git');
return shell.exit(1);
}
const { name } = await (0, prompt_1.prompt)([
{
type: 'string',
name: 'name',
message: 'Enter your new module name',
}
], argv);
shell.exec(`git clone ${repo} ${name}`);
shell.cd(name);
const questions = JSON.parse(fs.readFileSync(`.questions.json`));
const fullname = shell
.exec('git config --global user.name', { silent: true })
.trim();
const email = shell
.exec('git config --global user.email', { silent: true })
.trim();
// @__USERNAME__/__MODULENAME__
// __PACKAGE_IDENTIFIER__
const args = (0, dargs_1.default)({
_: [],
...argv,
__MODULENAME__: name,
__USERFULLNAME__: fullname,
__USEREMAIL__: email,
}, { allowCamelCase: true });
const results = await (0, prompt_1.prompt)(questions, args);
let scopedResults;
const license = await (0, prompt_1.prompt)([
{
name: '__LICENSE__',
message: 'Which license?',
choices: ['MIT', 'closed'],
type: 'list',
required: true,
},
], []);
if (results.__ACCESS__ === 'public') {
scopedResults = await (0, prompt_1.prompt)([
{
type: 'confirm',
name: 'scoped',
message: 'use npm scopes?',
required: true,
},
], []);
}
const files = []
.concat(glob(process.cwd() + '/**/.*'))
.concat(glob(process.cwd() + '/**/*'));
for (let i = 0; i < files.length; i++) {
const templateFile = files[i];
if (fs.lstatSync(templateFile).isDirectory())
continue;
let content = fs.readFileSync(templateFile).toString();
if (path.basename(templateFile) === 'LICENSE' &&
license.__LICENSE__ === 'closed') {
content = `Copyright (c) 2023 __USERFULLNAME__ <__USEREMAIL__> - All Rights Reserved
Unauthorized copying via any medium is strictly prohibited
Proprietary and confidential`;
}
Object.keys(results).forEach(key => {
if (/^__/.test(key)) {
content = content.replace(new RegExp(key, 'g'), results[key]);
}
});
if (results.__ACCESS__ === 'public') {
if (scopedResults.scoped) {
content = content.replace(/__PACKAGE_IDENTIFIER__/g, `@${results.__USERNAME__}/${results.__MODULENAME__}`);
}
else {
content = content.replace(/__PACKAGE_IDENTIFIER__/g, `${results.__MODULENAME__}`);
}
}
else {
content = content.replace(/__PACKAGE_IDENTIFIER__/g, `@${results.__USERNAME__}/${results.__MODULENAME__}`);
}
// if (path.basename(templateFile) === 'README.md') {
// content = `# ${results.__MODULENAME__}`;
// }
fs.writeFileSync(templateFile, content);
}
shell.rm('-rf', '.git');
shell.rm('-rf', '.questions.json');
console.log(`
|||
(o o)
ooO--(_)--Ooo-
✨ Great work!
`);
};
;