UNPKG

@growing-web/codemod

Version:

@growing-web/codemod for Growing Web Guidelines.

108 lines (104 loc) 2.8 kB
import { cac } from 'cac'; import colors from 'picocolors'; import consola from 'consola'; import fs from 'fs-extra'; import path from 'node:path'; import { getPackages } from '@manypkg/get-packages'; const name = "@growing-web/codemod"; const version = "0.1.0"; const description = "@growing-web/codemod for Growing Web Guidelines."; const keywords = [ "growing-web", "codemod" ]; const homepage = "https://github.com/growing-web/web-kit#readme"; const bugs = { url: "https://github.com/growing-web/web-kit/issues" }; const repository = { type: "git", url: "git+https://github.com/growing-web/web-kit.git", directory: "packages/codemod" }; const license = "MIT"; const author = "vben"; const main = "./dist/index.cjs"; const module = "./dist/index.mjs"; const types = "./dist/index.d.ts"; const bin = "./bin/codemod.mjs"; const scripts = { build: "unbuild", dev: "unbuild --stub", prepublishOnly: "pnpm run build", prestub: "npm run dev" }; const dependencies = { "@manypkg/get-packages": "^1.1.3", cac: "^6.7.12", consola: "^2.15.3", "fs-extra": "^10.1.0", picocolors: "^1.0.0" }; const pkg = { name: name, version: version, description: description, keywords: keywords, homepage: homepage, bugs: bugs, repository: repository, license: license, author: author, main: main, module: module, types: types, bin: bin, scripts: scripts, dependencies: dependencies }; const MONOREPO_CODE_WORKSPACE_FILE = "monorepo.code-workspace"; async function generatorVscodeCodeWorksapceFile(cwd = process.cwd()) { const { packages, root } = await getPackages(cwd); const folders = packages.map((pkg) => { return { name: pkg.packageJson.name, path: path.relative(root.dir || cwd, pkg.dir) }; }); folders.filter(Boolean); folders.push({ name: "root", path: "." }); return folders; } async function createCodeWorksapceFile(cwd) { const folders = await generatorVscodeCodeWorksapceFile(cwd); fs.outputJSONSync(path.join(cwd, MONOREPO_CODE_WORKSPACE_FILE), { folders }, { encoding: "utf-8", spaces: 2 }); } const NAME = "codemod"; consola.wrapConsole(); async function bootstrap() { const cli = cac(NAME); consola.info(`${pkg.name} v${pkg.version}`); cli.command("[type]").usage("ability to create.").action(async (type) => { switch (type) { case "create-code-workspace": await createCodeWorksapceFile(process.cwd()); consola.success(colors.green(`${MONOREPO_CODE_WORKSPACE_FILE} is created!`)); break; default: consola.error(colors.red(`Invalid transform choice, pick one of: - create-code-workspace `)); } }); cli.version(pkg.version); cli.usage(NAME); cli.help(); cli.parse(); } bootstrap().catch((err) => { consola.error(err); process.exit(1); });