#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const prompts_1 = __importDefault(require("prompts")); const lodash_kebabcase_1 = __importDefault(require("lodash.kebabcase")); const sanitize_filename_1 = __importDefault(require("sanitize-filename")); const util_1 = __importDefault(require("util")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const sort_package_json_1 = require("sort-package-json"); const exec = util_1.default.promisify(require('child_process').exec); const repoUrls = { js: 'https://git.tinkr.site/jeffi/js-tinkrplugin-boilerplate.git', ts: 'https://git.tinkr.site/jeffi/ts-tinkr-plugin-boilerplate.git', }; const invalidName = ` It is recommended to keep your plugin name short. `.trim(); const invalidVersion = ` A valid version has one to four dot-separated integers. Examples: "1", "1.0", "2.0.3", "3.4.7.219" `.trim(); (0, prompts_1.default)([ { type: 'text', name: 'name', message: 'Tinkr plugin package name:', validate: (n) => n.length < 32 || invalidName, }, { type: 'text', name: 'version', message: 'First version number:', initial: '1.0.0', validate: (v) => !/[^.\d]/.test(v) || invalidVersion, }, { type: 'text', name: 'author', message: 'Author name:', }, { type: 'text', name: 'description', message: 'Description:', }, { type: 'select', name: 'lang', message: 'Which do you want to use?', choices: [ { title: 'JavaScript', value: 'js' }, { title: 'TypeScript', value: 'ts' }, ], initial: 0, }, ]).then(async ({ name, version, author, description, lang }) => { const packageName = (0, lodash_kebabcase_1.default)((0, sanitize_filename_1.default)(name, { replacement: '-' })); console.log(`Creating a Tinkr plugin in ./${packageName}`); await exec(`git clone ${repoUrls[lang]} ${packageName}`); const packageDir = path_1.default.join(process.cwd(), packageName); const packageJsonPath = path_1.default.join(packageDir, 'package.json'); const { bugs, homepage, keywords, license, repository, ...packageJson } = await fs_extra_1.default.readJSON(packageJsonPath); await fs_extra_1.default.writeJSON(packageJsonPath, (0, sort_package_json_1.sortPackageJson)({ ...packageJson, author, description, name: packageName, version, }), { spaces: 2 }); const gitFolderPath = path_1.default.join(packageDir, '.git'); await fs_extra_1.default.remove(gitFolderPath); console.log('Success: Now just `npm install` using your favorite package manager and create your Tinkr plugin!'); }).catch((error) => { console.error(error); process.exit(1); });