UNPKG

optc

Version:

An easy way to write TypeScript cli script application.

121 lines (116 loc) 3.87 kB
'use strict'; const fs = require('fs-extra'); const path = require('node:path'); const createDebug = require('debug'); const kolorist = require('kolorist'); const index = require('./shared/optc.81056db6.cjs'); require('node:fs'); require('node:child_process'); require('node:crypto'); require('node:url'); require('@babel/plugin-transform-typescript'); require('breadc'); require('path'); require('axios'); require('globby'); require('node:os'); require('find-up'); require('scule'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const fs__default = /*#__PURE__*/_interopDefaultCompat(fs); const path__default = /*#__PURE__*/_interopDefaultCompat(path); const createDebug__default = /*#__PURE__*/_interopDefaultCompat(createDebug); const name = "optc"; const platformInfo = `${process.platform}-${process.arch} node-${process.version}`; const debug = createDebug__default(name + ":cli"); async function main(args) { if (args.length === 0) { console.error(kolorist.lightRed("Error ") + "You must provide <script>"); process.exit(1); } const first = args[0]; if (first === "-v" || first === "--version") { console.log(`${name}/${index.version} ${platformInfo}`); return; } else if (first === "-h" || first === "--help") { printHelp(); return; } else if (first === "new") { const filename = args[1]; if (filename) { await index.ensureSpace(); createNewScript(filename); } else { console.error(kolorist.lightRed("Error ") + "You must provide <script>"); } return; } else if (first === "space") { await index.ensureSpace(); console.log(index.OPTC_ROOT); return; } else { await index.ensureSpace(); } const handle = (error) => { if (error instanceof Error) { console.error(kolorist.lightRed("Error ") + error.message); } else { console.error(error); } debug(error); }; process.on("unhandledRejection", (error) => { handle(error); }); try { await index.bootstrap(args[0], ...args.slice(1)); } catch (error) { handle(error); process.exit(1); } } function printHelp() { console.log(`${name}/${index.version}`); console.log(); console.log("Usage:"); console.log(" $ optc <script> [...args]"); console.log(); console.log("Commands:"); console.log(" new <script> Create a new empty script"); console.log(" space Print Optc space directory"); console.log(); console.log("Options:"); console.log(" -v, --version Display version number"); console.log(" -h, --help Display this message"); } async function createNewScript(_filename) { const filename = _filename.endsWith(".ts") ? _filename : _filename + ".ts"; if (!fs__default.existsSync(filename)) { const globalsDts = path__default.join(index.OPTC_ROOT, "globals.d.ts"); const pkg = fs__default.existsSync("package.json") ? fs__default.readJSONSync("package.json") : void 0; const isLocal = !!pkg?.dependencies?.optc || !!pkg?.devDependencies?.optc; const template = [ "#!/usr/bin/env optc", "", isLocal ? `/// <reference types="optc/globals" />` : `/// <reference path="${globalsDts}" />`, "", "export default async function () {", " ", "}", "" ]; fs__default.writeFileSync(filename, template.join("\n"), "utf-8"); fs__default.chmodSync(filename, 493); } else { console.error(kolorist.lightRed("Error ") + `${filename} exists`); } const editor = process.env.EDITOR; if (editor === "code") { const cmd = `${editor} --goto ${filename}:6:3`; await index.Process([cmd], [], { verbose: false }); } else if (editor) { const cmd = `${editor} ${filename}`; await index.Process([cmd], [], { verbose: false }); } } main(process.argv.slice(2));