import Util from './util/Util'; import('colors'); import shell from 'shelljs'; // import AppMgr from './mgr/AppMgr'; import client from './mgr/Client'; // import ComponentMgr from './mgr/ComponentMgr'; // import MigrationMgr from './mgr/MigrationMgr'; // import ModelMgr from './mgr/ModelMgr'; // import OldNewMgr from './mgr/NewMgr'; // import InstantMgr from './mgr/InstantMgr'; // import PermissionsMgr from './mgr/PermissionsMgr'; // import SocialMgr from './mgr/SocialMgr'; // import DockerMgr from "./mgr/DockerMgr"; import NewMgr from './mgr/NewMgr'; // import TryMgr from "./mgr/TryMgr"; let cmdProcessedOnce = 0; let cmdOriginalArgs = null; class CliMgr { public static async runCmd(str) { shell.echo(`\nNow, executing command : ${str}\n\n`.blue); if (shell.exec(str).code !== 0) { shell.echo(`\n\nError running command internally\n\n\t"${str}"`.red); shell.echo(`\nExiting...`.red); shell.exit(1); } } public static async process(args) { cmdOriginalArgs = cmdOriginalArgs ? cmdOriginalArgs : args; try { if (args._ && args._.length) { switch (args._[0]) { case 'man': if (args._.length > 1) { Util.showHelpForCommand(args); } else { Util.showHelp(args); } process.exit(0); break; /**************** START : new project with apis creation ****************/ case 'n': case 'new': if (await NewMgr.getNewProjectInput(args)) { if (args._[0] === 'gap') { console.log('gRPC code generation is not yet supported.'); process.exit(0); } await client.requestSend(args); } else { process.exit(0); } break; /**************** END : new project with apis creation ****************/ // /**************** START : new project with apis creation ****************/ // case 'nold': // case 'newold': // if (await NewMgr.getNewProjectInputOld(args)) { // if (args._[0] === 'gap') { // console.log('gRPC code generation is not yet supported.'); // process.exit(0) // } // await client.requestSend(args) // } else { // process.exit(0) // } // // break; // // /**************** END : new project with apis creation ****************/ // /**************** START : try xc-instant with in-memory ****************/ // case 't': // case 'try': // await TryMgr.getProjectInput(args); // process.exit(0) // break; // // case 'sg': // case 'sample.gql': // case 'sample.graphql': // await TryMgr.getProjectInput({_: ['sample', 'gql']}); // process.exit(0) // break; // // case 'sr': // case 'sample.rest': // case 'sample': // case 's': // await TryMgr.getProjectInput({_: ['sample', 'rest']}); // process.exit(0) // break; // // /**************** END : try xc-instant with in-memory ****************/ // // /**************** START : new project with apis creation ****************/ // // case 'nold': // // case 'newold': // // if (await OldNewMgr.getNewProjectInput(args)) { // // if (args._[0] === 'gap') { // // console.log('gRPC code generation is not yet supported.'); // // process.exit(0) // // } // // await client.requestSend(args) // // } else { // // process.exit(0) // // } // // // // break; // // /**************** END : new project with apis creation ****************/ // // // /**************** START : new project with apis creation ****************/ // case 'd': // case 'docker': // await DockerMgr.genDockerfile(args) // break; // // /**************** END : new project with apis creation ****************/ // // // // // /**************** START : instant apis creation ****************/ // // case 'i': // // case 'instant': // // await InstantMgr.getNewProjectInput(args); // // break; // // // // /**************** END : instant apis creation ****************/ // /**************** START : Init xc instant project ****************/ // case 'i': // case 'init': // await NewMgr.initProject(args); // break; // // /**************** END : Init xc instant project ****************/ // // /**************** START : apis creation ****************/ // case 'ga': // case 'gar': // case 'gen.apis': // case 'gen.apis.rest': // // console.log(`xc : Generating REST APIs`.green, args); // await client.requestSend(args); // break; // // case 'gag': // case 'gen.apis.graphql': // case 'gen.apis.gql': // // console.log(`xc : Generating GraphQL APIs`.green); // await client.requestSend(args); // break; // /**************** END : apis creation ****************/ // // // case 'gm': // case 'gen.module': // await client.requestSend(args); // break; // // /**************** START : rest components scaffolding ****************/ // case 'gmr': // case 'gen.module.router': // await client.requestSend(args); // break; // // case 'gmm': // case 'gen.module.middleware': // await client.requestSend(args); // break; // // case 'gms': // case 'gen.module.service': // await client.requestSend(args); // break; // /**************** END : rest components scaffolding ****************/ // // // /**************** START : graphql components scaffolding ****************/ // case 'ggm': // case 'gen.gql.module': // await client.requestSend(args); // break; // // case 'ggmr': // case 'gen.gql.module.resolver': // await client.requestSend(args); // break; // // case 'ggmm': // case 'gen.gql.module.middleware': // await client.requestSend(args); // break; // // case 'ggms': // case 'gen.gql.module.service': // await client.requestSend(args); // break; // /**************** END : graphql components scaffolding ****************/ // // // /**************** START : Migration stuff ****************/ // case 'db.migrate.init' : // case 'dmi' : // console.log('migration init', args); // await MigrationMgr.init(args); // process.exit(0); // break; // // case 'db.migrate.sync' : // case 'dms' : // console.log('migration sync', args); // await MigrationMgr.sync(args); // process.exit(0); // break; // // case 'db.migrate.list' : // case 'dml' : // console.log('migration list'); // await MigrationMgr.list(args); // process.exit(0); // break; // // case 'db.migrate.create' : // case 'dmc' : // console.log('migration create', args); // await MigrationMgr.create(args); // process.exit(0); // break; // // case 'db.migrate.up' : // case 'dmu' : // console.log('migration create', args); // await MigrationMgr.up(args); // process.exit(0); // break; // // case 'db.migrate.down' : // case 'dmd' : // console.log('migration down', args); // await MigrationMgr.down(args); // process.exit(0); // break; // // case 'db.migrate.term' : // case 'dmt' : // console.log('migration init', args); // await MigrationMgr.clean(args); // process.exit(0); // break; // // case 'db.migrate.sql.dump' : // case 'dmsd' : // console.log('migration meta dump', args); // await client.requestSend(args); // break; // /**************** END : Migration stuff ****************/ // // // /**************** START : Meta stuff ****************/ // // case 'meta.export' : // case 'me' : // console.log('meta export', args); // if (!('env' in args)) { // console.log(`Missing '${'env'.bold}' parameter`.red); // process.exit(0); // } // // await client.requestSend(args); // break; // case 'meta.import' : // case 'mi' : // console.log('meta import', args) // if (!('env' in args)) { // console.log(`Missing '${'env'.bold}' parameter`.red); // process.exit(0); // } // // await client.requestSend(args); // break; // case 'meta.reset' : // case 'mr' : // console.log('met reset', args) // if (!('env' in args)) { // console.log(`Missing '${'env'.bold}' parameter`.red); // process.exit(0); // } // // await client.requestSend(args); // break; // /**************** END : Meta stuff ****************/ // // // /**************** START : ACL stuff ****************/ // case 'permissions.set': // case 'ps': // await PermissionsMgr.set(args) // process.exit(0); // break; // case 'permissions.get': // case 'pg': // await PermissionsMgr.get(args) // process.exit(0); // break; // case 'permissions.role.add': // case 'pra': // await PermissionsMgr.userAdd(args) // process.exit(0); // break; // case 'permissions.role.delete': // case 'prd': // await PermissionsMgr.userDelete(args) // process.exit(0); // break; // case 'permissions.role.rename': // case 'prr': // await PermissionsMgr.userRename(args) // process.exit(0); // break; // /**************** END : ACL stuff ****************/ // // /**************** START : App stuff ****************/ // case 'app.install': // case 'ai': // await AppMgr.install(args); // process.exit(0); // break; // case 'app.open': // case 'ao': // await AppMgr.open(args); // process.exit(0); // break; // // /**************** END : App stuff ****************/ // // /**************** START : Component stuff ****************/ // case 'component.add': // case 'ca': // const prevComponentName = await ComponentMgr.add(args); // if (prevComponentName) { // args._.push(prevComponentName) // await client.requestSend(args); // } else { // process.exit(0) // } // break; // // case 'component.rename': // case 'cr': // await ComponentMgr.rename(args); // process.exit(0); // break; // // case 'component.delete': // case 'cd': // await ComponentMgr.add(args); // process.exit(0); // break; // // /**************** END : Component stuff ****************/ // // // /**************** START : Social media stuff ****************/ // case 'share': // await SocialMgr.shareSocial(args); // process.exit(0); // break; // // case 'noshare': // await SocialMgr.setShareRules('dontPrompt', true); // process.exit(0); // break; // /**************** END : Social media stuff ****************/ // // /**************** START : Remove stuff ****************/ // case 'remove.model.backup': // case 'rmb': // await ModelMgr.removeModelBackups(args); // process.exit(0); // break; // // /**************** END : Remove stuff ****************/ // // // case 'menu': // // case 'm': // // await Menu.prepareCmd(client, args); // // // console.log(args); // // await this.process(client, args); // // break; // // case 'yelp': // case 'y': // Util.showHelp(args); // process.exit(0) // break; default: if (!cmdProcessedOnce) { cmdProcessedOnce = 1; // await this.process(Util.getShortVersion(args)); args._.unshift('new'); await this.process(args); } else { console.log( `\nUnknown command. ${cmdOriginalArgs._[0]} -- please see help below` ); Util.showHelp(cmdOriginalArgs); process.exit(0); } break; } } } catch (e) { throw e; } } } export default CliMgr;