UNPKG

qcobjects-cli

Version:

qcobjects cli command line tool

8 lines (7 loc) 31.1 kB
{ "version": 3, "sources": ["../../src/cli-main.ts"], "sourcesContent": ["/**\n * QCObjects CLI 2.4.x\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n*/\n/*eslint no-unused-vars: \"off\"*/\n/*eslint no-redeclare: \"off\"*/\n/*eslint no-empty: \"off\"*/\n/*eslint strict: \"off\"*/\n/*eslint no-mixed-operators: \"off\"*/\n/*eslint no-undef: \"off\"*/\n\"use strict\";\nimport \"qcobjects\";\n\nexport * as EnterpriseCommands from \"./enterprise-commands\";\nimport { Component, CONFIG, findPackageNodePath, InheritClass, logger, New, Service, serviceLoader, global, Package, Export } from \"qcobjects\";\nimport { QCObjectsEnterprise } from \"./enterprise-commands\";\nexport * as QuickCorpServices from \"./api-client_services\";\nimport { QuickCorpCloud } from \"./api-client_services\";\nexport * as customCommands from \"./cli-commands\";\nimport { __get_version__, __get_version_string__ } from \"./defaultsettings\";\nimport path from \"node:path\";\nimport fs from \"node:fs\";\nimport { exec, execSync } from \"node:child_process\";\nimport commander from \"commander\";\n\nconst templatePwaPath = path.resolve(__dirname, \"./templates/pwa/\") + \"/\";\n\nexport const getPluginCommandsList = () => {\n return global.ClassesList?.filter((c: { packageName: string; }) => c.packageName.startsWith(\"com.qcobjects.cli.commands.\"))\n .filter((p: { classFactory: { name: string; }; }) => p.classFactory.name.endsWith(\"CommandHandler\"));\n};\n\n\nexport class SwitchCommander extends InheritClass {\n\n choiceOption = {\n generateSw: (_appName: boolean, options: { dir: any; }) => {\n const dirPrefix = options.dir;\n const switchCommander = this;\n const appName = (typeof _appName === \"undefined\" || _appName === true) ? (\"MyAppName\") : (_appName);\n switchCommander.generateServiceWorker(appName, dirPrefix)\n .catch((e: any) => { logger.warn(`An error ocurred while creating service worker: ${e}`); });\n\n },\n create: (_appName: boolean, options: { createAmp: any; createPwa: any; createPhp: any; createCustom: any; }) => {\n const version = __get_version__();\n const switchCommander = this;\n const appName = (typeof _appName === \"undefined\" || _appName === true) ? (\"MyAppName\") : (_appName);\n\n\n let appTemplateName;\n\n if (options.createAmp) {\n appTemplateName = \"qcobjects-ecommerce-amp\";\n } else if (options.createPwa) {\n appTemplateName = \"qcobjectsnewapp\";\n } else if (options.createPhp) {\n appTemplateName = \"qcobjectsnewphp\";\n } else if (options.createCustom) {\n appTemplateName = options.createCustom;\n } else {\n appTemplateName = \"qcobjectsnewapp\";\n }\n CONFIG.set(\"qcobjectsnewapp_path\", CONFIG.get(\"node_modules_path\") + \"/\" + appTemplateName);\n\n const _package_json_template_fname = path.resolve(CONFIG.get(\"qcobjectsnewapp_path\", \"qcobjectsnewapp\"), \"./package.json\");\n\n /* if (!process.platform.toLowerCase().startsWith(\"win\")){\n _package_json_content = _package_json_content.replace(/(\")/g, String.fromCharCode(92)+\"\\\"\");\n }*/\n\n const createAppCommand = \"npm init -y\";\n const _package_json_file = path.resolve(CONFIG.get(\"projectPath\"), \"./package.json\");\n logger.debug(\"_package_json_file: \" + _package_json_file);\n logger.debug(createAppCommand);\n\n exec(createAppCommand, (err) => {\n if (err) {\n throw Error(err.message);\n // eslint-disable-next-line no-unreachable\n process.exit(1);\n return;\n }\n\n exec(`npm i --save-dev ${appTemplateName}`, () => {\n\n (async () => {\n const _package_json_template_file = await import(_package_json_template_fname);\n _package_json_template_file.name = appName;\n _package_json_template_file.version = \"1.0.0\";\n _package_json_template_file.repository = {};\n fs.writeFileSync(_package_json_file, JSON.stringify(_package_json_template_file, null, 4));\n logger.info(\"Good! App Templates was installed!\");\n\n console.log(`Starting to copy files from app template ${appTemplateName} to your project...`);\n\n switchCommander.copyTemplate(path.resolve(findPackageNodePath(appTemplateName), appTemplateName), path.resolve(CONFIG.get(\"projectPath\"), \"./\"))\n .then(() => {\n\n exec(\"npm uninstall \" + appTemplateName + \" --save && npm cache verify\", err => {\n if (err) {\n throw Error(err.message);\n // eslint-disable-next-line no-unreachable\n process.exit(1);\n return;\n }\n\n /*\n switchCommander.generateServiceWorker(appName)\n .then(()=>{\n execSync(\"npm install --save-dev qcobjects-cli \");\n });\n */\n execSync(\"npm install --save-dev qcobjects-cli \");\n });\n\n exec(\"npm cache verify && npm i \", (err) => {\n if (err) {\n throw Error(err.message);\n // eslint-disable-next-line no-unreachable\n process.exit(1);\n return;\n }\n\n logger.info(\"Good! Your application is done. You can play with QCObjects now!\");\n\n logger.info(\"I will create the SSL certificates now. It may take some time...\");\n exec(\"qcobjects-createcert\", () => {\n logger.info(\"Test certificates generated\");\n\n const githubService = New(Service);\n githubService.url = \"https://raw.githubusercontent.com/QuickCorp/QCObjects/main/.gitignore\";\n githubService.headers = {\n Accept: \"application/vnd.github+json\",\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n \"User-Agent\": \"qcobjects-cli\"\n };\n githubService.done = () => { };\n serviceLoader(githubService)\n .then(({ service }: { service: any }) => {\n fs.writeFileSync(path.resolve(CONFIG.get(\"projectPath\"), \"./.gitignore\"), service.template);\n try {\n execSync(\"git init\");\n logger.debug(\"Git initialized.\");\n } catch (e) {\n logger.debug(\"Could not initialize git.\");\n }\n });\n\n }).stdout?.on(\"data\", function (data: any) {\n console.log(data);\n });\n\n }).stdout?.on(\"data\", function (data: any) {\n console.log(data);\n });\n\n })\n .catch((e: any) => {\n console.log(e);\n });\n\n })().catch(e => console.error(e));\n\n\n }).stdout?.on(\"data\", function (data: any) {\n console.log(data);\n });\n\n }).stdout?.on(\"data\", function () {\n console.log(\"App generation started...\");\n });\n\n },\n publish(_appName: any, _options: any) {\n logger.debug(\"publish is not yet implemented\");\n },\n upgradeToEnterprise(_appName: any, _options: any) {\n const switchCommander = this;\n void QCObjectsEnterprise.upgrade(switchCommander);\n }\n };\n program: any;\n\n constructor() {\n super();\n this.program = commander;\n }\n\n shellCommands(_shell_commands: any[]) {\n return new Promise(function (resolve_all, reject_all) {\n var _promises_set = _shell_commands.map(\n function (shell_command: any) {\n return (new Promise(\n function (resolve, reject) {\n logger.debug(shell_command);\n exec(shell_command, (err: any, stdout: unknown, stderr: any) => {\n if (!err) {\n resolve(stdout);\n } else {\n logger.debug(`[FAILED]: ${shell_command}`);\n logger.debug(`${stderr}`);\n reject(stderr as Error);\n }\n }).stdout?.on(\"data\", function (data: any) {\n logger.info(data);\n });\n })).catch(e => reject_all(e as Error));\n }\n );\n }).catch(e => console.log(e));\n }\n\n fileListRecursive(dir: string): string | string[] {\n var instance = this;\n return (fs.statSync(dir).isDirectory())\n ? (Array.prototype.concat(...fs.readdirSync(dir).map((f: any) => instance.fileListRecursive(path.join(dir, f))))\n .filter((f) => {\n return !f.startsWith(\".git\")\n && f.lastIndexOf(\".DS_Store\") == -1;\n })\n )\n : (dir);\n }\n\n register(email: any, phonenumber: any) {\n return new Promise(function (resolve, reject) {\n logger.info(\"I'm going to register your profile on the cloud...\");\n const cloudClient = New(QuickCorpCloud, {\n apiMethod: \"register\",\n data: { email: email, phonenumber: phonenumber }\n });\n // logger.debugEnabled = true;\n try {\n } catch (e) {\n console.log(\"\\u{1F926} Something went wrong \\u{1F926} when trying to register you in the cloud\");\n reject(e as Error);\n }\n\n });\n }\n\n generateServiceWorker(appName: any, dirPrefix = \"./\") {\n const writeContent = (component: any) => {\n const parsedText = component.parsedAssignmentText;\n logger.debug(\"Starting to write the sw file...\");\n fs.writeFile(`${dirPrefix}/sw.js`, parsedText, (err) => {\n if (err) {\n throw Error(err as never);\n }\n logger.info(\"Service Worker Generated\");\n console.log(\"\");\n console.log(\"Now simply put:\");\n console.log(\"CONFIG.set('serviceWorkerURI','/sw.js');\");\n console.log(\" In your init.js file \");\n console.log(\"\");\n console.log(\"To start your app in a local server \");\n console.log(\"Execute the command: \");\n console.log(\"> qcobjects launch <appname>\");\n console.log(\"\");\n });\n\n };\n\n\n class ServiceWorkerComponent extends Component {\n cached = false;\n templateURI = \"sw.js\";\n basePath = templatePwaPath;\n name = \"sw\";\n tplsource = \"default\";\n template = \"\";\n data: any;\n\n constructor({ name, data }: { name: string, data: any }) {\n super({ name, data });\n this.data = data;\n }\n\n done({ request, component }: { request: any, component: any }) {\n super.done({ request, component });\n writeContent(component);\n }\n }\n\n return new Promise(() => {\n var filelist = [\"/\"].concat(this.fileListRecursive(`${dirPrefix}`));\n if (typeof dirPrefix !== \"undefined\" && dirPrefix !== \"./\" && dirPrefix !== \".\") {\n filelist = filelist.map(f => f.replace(new RegExp(`${dirPrefix}/`), \"\"));\n }\n filelist = filelist.filter(function (fl) { return fl !== \"sw.js\" && (!fl.startsWith(\"node_modules/\")); });\n filelist = filelist.filter(fname => !fname.endsWith(\".pem\"));\n filelist = filelist.filter(fname => !fname.endsWith(\".sh\"));\n filelist = filelist.filter(fname => !(new RegExp(\"^package(.*).json$\")).test(fname));\n filelist = filelist.filter(fname => !fname.startsWith(\".\"));\n var fileListString = \"\\n\\t\\\"\" + filelist.join(\"\\\",\\n\\t\\\"\") + \"\\\"\";\n const component = new ServiceWorkerComponent({\n name: \"sw\",\n data: {\n appName: appName,\n appVersion: \"1.0.0\",\n filelist: fileListString\n }\n });\n\n setTimeout(() => {\n component.done({ request: null, component });\n }, 1000);\n\n\n });\n }\n\n copyTemplate(source: any, dest: any) {\n return new Promise<void>((resolve, reject) => {\n\n const copyDir = (source: any, dest: any, exclude: string[]) => {\n source = path.resolve(source);\n dest = path.resolve(dest);\n const dname = path.basename(source);\n const dirExcluded = (exclude.includes(dname));\n\n const isDir = (d: any) => {\n return (fs.existsSync(d) && fs.statSync(d).isDirectory()) ? (true) : (false);\n };\n\n const isFile = (d: any) => {\n return (fs.existsSync(d) && fs.statSync(d).isFile()) ? (true) : (false);\n };\n\n if (isDir(source) && !dirExcluded) {\n fs.mkdirSync(dest, { recursive: true });\n const paths = fs.readdirSync(source, { withFileTypes: true });\n const dirs = paths.filter((d: { isDirectory: () => any; }) => d.isDirectory());\n const files = paths.filter((f: { isFile: () => any; }) => f.isFile());\n ((paths, dirs, files, exclude) => {\n files.map((f: { name: any; }) => {\n const sourceFile = path.resolve(source, f.name);\n const destFile = path.resolve(dest, f.name);\n const fileExcluded = exclude.includes(f.name);\n if (isFile(sourceFile) && !fileExcluded) {\n logger.debug(`[publish:static] Copying files from ${sourceFile} to ${destFile} excluding ${exclude.join(\",\")}...`);\n fs.copyFileSync(sourceFile, destFile);\n logger.debug(`[publish:static] Copying files from ${sourceFile} to ${destFile} excluding ${exclude.join(\",\")}...DONE!`);\n }\n });\n dirs.map((d: { name: any; }) => {\n const sourceDir = path.resolve(source, d.name);\n const destDir = path.resolve(dest, d.name);\n copyDir(sourceDir, destDir, exclude);\n });\n })(paths, dirs, files, exclude);\n }\n\n };\n\n try {\n const exclude = [\n \"package.json\",\n \"node_modules\",\n \".DS_Store\"\n ];\n logger.info(`[create] Copying files from ${source} to ${dest} excluding ${exclude.join(\",\")}...`);\n copyDir(source, dest, (typeof exclude !== \"undefined\") ? (exclude) : ([]));\n resolve();\n } catch (e: any) {\n logger.warn(`Something went wrong trying to publish static files: ${e.message}`);\n reject(e as Error);\n }\n\n });\n\n }\n\n initCommand() {\n const switchCommander = this;\n if (process.argv.length > 1) {\n logger.debug(\"Installing Commands...\");\n\n switchCommander.program\n .version(__get_version_string__());\n switchCommander.program\n .command(\"create <appname>\")\n .description(\"Creates an app with <appname>\")\n .option(\"--pwa, --create-pwa\", \"Creates the progressive web app assets\")\n .option(\"--amp, --create-amp\", \"Creates the accelerated mobile pages assets\")\n .option(\"--php, --create-php\", \"Creates the PWA PHP assets\")\n .option(\"--custom, --create-custom <templateappname>\", \"Creates an App from any NPM package template\")\n .option(\"--tests, --create-tests\", \"Creates the test suite\")\n .action(function (args: any, options: any) {\n switchCommander.choiceOption.create.call(switchCommander, args, options);\n });\n\n\n try {\n logger.debug(\"Loading Plugin Commands...\");\n const importPluginCommands = (switchCommander: any) => {\n return getPluginCommandsList()?.map((pluginCommand: { packageName: any; classFactory: any; plugin: any; }) => {\n try {\n logger.debug(`Loading plugin ${pluginCommand.packageName}`);\n const classFactory = pluginCommand.classFactory;\n pluginCommand.plugin = new classFactory({ switchCommander: switchCommander });\n } catch (e) {\n throw Error(`Something went wrong loading ${pluginCommand.packageName}`);\n }\n return pluginCommand;\n });\n };\n importPluginCommands(switchCommander);\n } catch (e: any) {\n throw Error(`Something went wrong loading plugins: ${e.message}`);\n }\n\n switchCommander.program.command(\"publish <appname>\")\n .description(\"Publishes an app with <appname>\")\n .option(\"--pwa, --create-pwa\", \"Publishes the progressive web app assets\")\n .option(\"--amp, --create-amp\", \"Publishes the accelerated mobile pages assets\")\n .option(\"--php, --create-php\", \"Creates the PWA PHP assets\")\n .option(\"--custom, --create-custom\", \"Creates an App from any NPM package template\")\n .option(\"--tests, --create-tests\", \"Publishes the test suite\")\n .action((args: any, options: any) => {\n switchCommander.choiceOption.publish.bind(switchCommander)(args, options);\n });\n\n switchCommander.program.command(\"upgrade-to-enterprise\")\n .description(\"Upgrades to QCObjects Enterprise Edition\")\n .action(function (args: any, options: any) {\n switchCommander.choiceOption.upgradeToEnterprise.call(switchCommander, args, options);\n });\n switchCommander.program.command(\"generate-sw <appname>\")\n .option(\"-d, --dir <dirPrefix> \", \"creates the service worker in a specific dir <dirPrefix>\")\n .description(\"Generates the service worker <appname>\")\n .action(function (args: any, options: any) {\n switchCommander.choiceOption.generateSw.call(switchCommander, args, options);\n });\n switchCommander.program.command(\"launch <appname>\")\n .description(\"Launches the application\")\n .action(function () {\n logger.info(\"Launching...\");\n setTimeout(() => {\n logger.info(\"Go to the browser and open https://localhost \");\n logger.info(\"Press Ctrl-C to stop serving \");\n exec(\"qcobjects-server\", () => {\n })\n .stdout?.on(\"data\", function (data: any) {\n console.log(data);\n });\n }, 5000);\n // setTimeout(()=>{\n // execSync(\"open -a \\\"google chrome\\\" https://localhost\");\n // },6000);\n\n });\n\n switchCommander.program.on(\"--help\", function () {\n console.log(\"\");\n console.log(\"Use:\");\n console.log(\" $ qcobjects-cli [command] --help\");\n console.log(\" For detailed information of a command \");\n console.log(\"\");\n process.exit(0);\n });\n\n switchCommander.program.on(\"command:*\", function () {\n console.error(\"Invalid command: %s\\nSee --help for a list of available commands.\", switchCommander.program.args.join(\" \"));\n process.exit(1);\n });\n switchCommander.program.parse(process.argv);\n } else {\n console.log(\"\");\n console.log(\"Use:\");\n console.log(\" $ qcobjects-cli [command] --help\");\n console.log(\" For detailed information of a command \");\n console.log(\"\");\n process.exit(0);\n\n }\n\n }\n\n}\n\n\n\n\n CONFIG.set(\"node_modules_path\", \"./node_modules/\");\n CONFIG.set(\"qcobjectsnewapp_path\", CONFIG.get(\"node_modules_path\") + \"/qcobjectsnewapp\");\n\n\n Package(\"org.quickcorp.qcobjects.cli\", [\n\n SwitchCommander\n ]);\n Export(SwitchCommander);\n"], "mappings": "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", "names": ["import_qcobjects", "path", "fs", "err", "commander", "source", "dest", "paths", "dirs", "files", "exclude", "switchCommander"] }