jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
356 lines (334 loc) • 9.94 kB
JavaScript
const pkg = require('../package.json');
const binName = Object.keys(pkg.bin)[0];
const commands = (name, cmdOptional) => {
return {
desc : "Executes " + name + " commands, type '" + binName + " " + name + " --help' for details",
arg : {
name: 'cmd',
desc: 'The command of ' + name,
required: !cmdOptional,
type: String
}
};
}
module.exports = {
create: {
desc: 'Creates a new project or other objects in the exists project!',
childs: {
api: {
desc: 'Creates a new api project',
arg: {
name: 'name',
desc: 'The name of project dir',
required: false,
type: String,
default : 'api'
}
},
project: {
desc: 'Creates a new api project',
arg: {
name: 'name',
desc: 'The name of project',
required: true,
type: String
}
},
web: {
desc: 'Create a new web project',
arg: {
name: 'name',
desc: 'The name of project dir, default \'web\'!',
required: false,
default: 'web',
type: String
},
opts: {
dev: {
desc: 'Use dev version',
type: Boolean,
required: false
},
api: {
desc: 'The path of api',
type: String,
default: 'api'
}
}
},
entity: {
desc: 'Creates a new entity',
arg: {
name: 'name',
desc: 'The name of entity',
required: true,
type: String
}
}
/*,
"client-api": {
desc: "Create client api code",
arg: {
name: "name",
desc: "The name of client-api",
required: false,
type: String
}
}
*/
}
},
init: {
desc: 'Init a new project at current directory!',
self: true,
childs: {
pom: {
desc: 'Creates a pom file at current directory',
arg: {
name: 'type',
desc: 'The type of pom, one of [pom, module]',
required: false,
type: String
}
}
}
},
run : {
desc: 'Run jmms app!',
self: true,
opts: {
port: {
desc: 'Specify the server port',
alias: 'p',
type: Number,
required: false
},
/*
build: {
desc: 'Build the project before running',
alias: 'b',
type: Boolean,
required: false
},
*/
update: {
desc: 'Update project dependencies',
alias: 'u',
type: Boolean,
required: false
},
profile: {
desc: 'Specify the active profile',
alias: 'P',
type: String,
required: false
},
remote_debug: {
desc: 'Enables remote debugging',
alias: 'D',
type: Boolean,
required: false
},
suspend: {
desc: 'Suspend remote debugging',
type: Boolean,
required: false
}
},
childs: {
"swagger-ui": {
desc: 'Run swagger-ui only',
opts: {
port: {
desc: 'Specify the port',
alias: 'p',
type: Number,
required: false
}
}
}
}
},
doc : {
childs: {
gen: {
desc: 'Generates gitbook doc from swagger spec',
arg: {
name: 'file',
desc: 'The file path or http url of swagger spce',
required: false,
type: String
},
opts: {
force: {
desc: 'Force generate or update gitbook doc to an exists dir',
alias: 'f',
type: Boolean,
required: false
},
out: {
desc: 'The output dir of gitbook doc, default is "./api-doc"',
alias: 'o',
type: String,
required: false
}
}
}
}
},
open : {
"desc": "Open vscode from current directory!",
arg: {
name: 'ide',
desc: 'The name of ide, [vscode, idea] supported!',
required: false,
default: 'vscode',
type: String
}
},
update: {
desc: 'Updates project dependencies'
},
package: {
desc: 'Creates an executable app!',
opts: {
update: {
desc: 'Update project dependencies',
alias: 'u',
type: Boolean,
required: false
},
jsw: {
desc: 'Package using jsw',
type: Boolean,
required: false
}
}
},
clean: {
desc: 'Clean and compiles project'
},
db: {
desc: "Run db commands",
childs: {
config: {
desc: 'Configures the db connection'
},
gen: {
desc: 'Generates entity(s) from db, use db connection at config.json',
arg: {
name: 'tables',
desc: 'The name of table(s), split by \',\'',
required: false,
type: String
}
},
drop : {
desc: 'Drops all the schema objects and data in database'
}
}
},
dev: {
desc: "Run dev commands",
childs: {
reset: {
desc: 'Drops db and reload'
}
}
},
fake : {
desc: "Generates fake data",
arg: {
name: 'rows',
desc: 'The generate rows of every entities.',
required: false,
default: 10,
type: Number
},
opts: {
"clean": {
desc: 'Deletes all exists data before fake',
type: Boolean,
required: false
}
}
},
test : {
desc: "Run jmms test",
/*
arg: {
name: 'rounds',
desc: 'The rounds to run tests.',
required: false,
default: 1,
type: Number
},
*/
opts: {
"clean": {
desc: 'Deletes all exists data before test',
type: Boolean,
required: false
},
"skip-crud": {
desc: 'Skips the generated crud test cases',
type: Boolean,
required: false
},
"skip-gen": {
desc: 'Skips the generated test cases',
type: Boolean,
required: false
}
}
},
docker: {
desc: 'Run docker command.',
childs: {
build: {
desc: 'Build service to docker image'
},
run: {
desc: 'Run service as docker container',
arg: {
name: 'image',
desc: 'The name of docker image',
required: false,
type: String
}
}
}
},
schema: {
desc: "Run schema commands",
childs: {
gen: {
desc: 'Generates db schema, use db connection at config.json',
arg: {
name: 'name',
desc: 'The name of current generated version',
required: false,
type: String
},
opts: {
profile: {
desc: 'Specify the active profile',
alias: 'P',
type: String,
required: false
},
full: {
desc: 'Generates full schema only.',
type: Boolean,
required: false
}
}
}
}
},
versions: {
desc: 'List remote jmms versions.'
},
//install: commands("install", true),
//remove:commands("remove", true)
};