Skip to content

Commit

Permalink
Allow flexible conf, out, and log params. Add {lang} variable support…
Browse files Browse the repository at this point in the history
… for params.
  • Loading branch information
cliffano committed Jun 14, 2017
1 parent ca853fc commit 6f2519a
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 56 deletions.
6 changes: 3 additions & 3 deletions conf/commands.json
Expand Up @@ -2,9 +2,9 @@
"options": [
{ "arg": "--api-spec <apiSpec>", "desc": "Path to OpenAPI spec file" },
{ "arg": "--jar <jar>", "desc": "Swagger Codegen jar file" },
{ "arg": "--conf-dir <confDir>", "desc": "Swagger Codegen client configuration files directory" },
{ "arg": "--out-dir <outDir>", "desc": "Directory where generated clients will be written to" },
{ "arg": "--log-dir <logDir>", "desc": "Log files directory" },
{ "arg": "--conf-file <confFile>", "desc": "Swagger CodeGen client configuration file, default: {lang}/conf.json" },
{ "arg": "--out-dir <outDir>", "desc": "Directory where generated client will be written to, default: {lang}/generated/" },
{ "arg": "--log-dir <logDir>", "desc": "Log files directory, default: {lang}/log/" },
{ "arg": "--quiet", "desc": "Hide command output" }
],
"commands": {
Expand Down
84 changes: 42 additions & 42 deletions conf/tasks.yml
@@ -1,84 +1,84 @@
---
android:
gen: "{swaggerCodegen} generate --lang android --input-spec {apiSpec} --output {outDir}/android --config {confDir}/android.json"
gen: "{swaggerCodegen} generate --lang android --input-spec {apiSpec} --output {outDir} --config {confFile}"
aspnet5:
gen: "{swaggerCodegen} generate --lang aspnet5 --input-spec {apiSpec} --output {outDir}/aspnet5 --config {confDir}/aspnet5.json"
gen: "{swaggerCodegen} generate --lang aspnet5 --input-spec {apiSpec} --output {outDir} --config {confFile}"
async-scala:
gen: "{swaggerCodegen} generate --lang async-scala --input-spec {apiSpec} --output {outDir}/async-scala --config {confDir}/async-scala.json"
gen: "{swaggerCodegen} generate --lang async-scala --input-spec {apiSpec} --output {outDir} --config {confFile}"
csharp:
gen: "{swaggerCodegen} generate --lang csharp --input-spec {apiSpec} --output {outDir}/csharp --config {confDir}/csharp.json"
gen: "{swaggerCodegen} generate --lang csharp --input-spec {apiSpec} --output {outDir} --config {confFile}"
dart:
gen: "{swaggerCodegen} generate --lang dart --input-spec {apiSpec} --output {outDir}/dart --config {confDir}/dart.json"
gen: "{swaggerCodegen} generate --lang dart --input-spec {apiSpec} --output {outDir} --config {confFile}"
flash:
gen: "{swaggerCodegen} generate --lang flash --input-spec {apiSpec} --output {outDir}/flash --config {confDir}/flash.json"
gen: "{swaggerCodegen} generate --lang flash --input-spec {apiSpec} --output {outDir} --config {confFile}"
python-flask:
gen: "{swaggerCodegen} generate --lang python-flask --input-spec {apiSpec} --output {outDir}/python-flask --config {confDir}/python-flask.json"
gen: "{swaggerCodegen} generate --lang python-flask --input-spec {apiSpec} --output {outDir} --config {confFile}"
go:
gen: "{swaggerCodegen} generate --lang go --input-spec {apiSpec} --output {outDir}/go --config {confDir}/go.json"
gen: "{swaggerCodegen} generate --lang go --input-spec {apiSpec} --output {outDir} --config {confFile}"
java:
gen: "{swaggerCodegen} generate --lang java --input-spec {apiSpec} --output {outDir}/java --config {confDir}/java.json"
gen: "{swaggerCodegen} generate --lang java --input-spec {apiSpec} --output {outDir} --config {confFile}"
jaxrs:
gen: "{swaggerCodegen} generate --lang jaxrs --input-spec {apiSpec} --output {outDir}/jaxrs --config {confDir}/jaxrs.json"
gen: "{swaggerCodegen} generate --lang jaxrs --input-spec {apiSpec} --output {outDir} --config {confFile}"
jaxrs-cxf:
gen: "{swaggerCodegen} generate --lang jaxrs-cxf --input-spec {apiSpec} --output {outDir}/jaxrs-cxf --config {confDir}/jaxrs-cxf.json"
gen: "{swaggerCodegen} generate --lang jaxrs-cxf --input-spec {apiSpec} --output {outDir} --config {confFile}"
jaxrs-resteasy:
gen: "{swaggerCodegen} generate --lang jaxrs-resteasy --input-spec {apiSpec} --output {outDir}/jaxrs-resteasy --config {confDir}/jaxrs-resteasy.json"
gen: "{swaggerCodegen} generate --lang jaxrs-resteasy --input-spec {apiSpec} --output {outDir} --config {confFile}"
inflector:
gen: "{swaggerCodegen} generate --lang inflector --input-spec {apiSpec} --output {outDir}/inflector --config {confDir}/inflector.json"
gen: "{swaggerCodegen} generate --lang inflector --input-spec {apiSpec} --output {outDir} --config {confFile}"
javascript:
gen: "{swaggerCodegen} generate --lang javascript --input-spec {apiSpec} --output {outDir}/javascript --config {confDir}/javascript.json"
install: "cd {outDir}/javascript && npm link"
gen: "{swaggerCodegen} generate --lang javascript --input-spec {apiSpec} --output {outDir} --config {confFile}"
install: "cd {outDir} && npm link"
javascript-closure-angular:
gen: "{swaggerCodegen} generate --lang javascript-closure-angular --input-spec {apiSpec} --output {outDir}/javascript-closure-angular --config {confDir}/javascript-closure-angular.json"
gen: "{swaggerCodegen} generate --lang javascript-closure-angular --input-spec {apiSpec} --output {outDir} --config {confFile}"
jmeter:
gen: "{swaggerCodegen} generate --lang jmeter --input-spec {apiSpec} --output {outDir}/jmeter --config {confDir}/jmeter.json"
gen: "{swaggerCodegen} generate --lang jmeter --input-spec {apiSpec} --output {outDir} --config {confFile}"
nodejs-server:
gen: "{swaggerCodegen} generate --lang nodejs-server --input-spec {apiSpec} --output {outDir}/nodejs-server --config {confDir}/nodejs-server.json"
gen: "{swaggerCodegen} generate --lang nodejs-server --input-spec {apiSpec} --output {outDir} --config {confFile}"
objc:
gen: "{swaggerCodegen} generate --lang objc --input-spec {apiSpec} --output {outDir}/objc --config {confDir}/objc.json"
gen: "{swaggerCodegen} generate --lang objc --input-spec {apiSpec} --output {outDir} --config {confFile}"
perl:
gen: "{swaggerCodegen} generate --lang perl --input-spec {apiSpec} --output {outDir}/perl --config {confDir}/perl.json"
gen: "{swaggerCodegen} generate --lang perl --input-spec {apiSpec} --output {outDir} --config {confFile}"
php:
gen: "{swaggerCodegen} generate --lang php --input-spec {apiSpec} --output {outDir}/php --config {confDir}/php.json"
gen: "{swaggerCodegen} generate --lang php --input-spec {apiSpec} --output {outDir} --config {confFile}"
python:
gen: "{swaggerCodegen} generate --lang python --input-spec {apiSpec} --output {outDir}/python --config {confDir}/python.json"
gen: "{swaggerCodegen} generate --lang python --input-spec {apiSpec} --output {outDir} --config {confFile}"
qt5cpp:
gen: "{swaggerCodegen} generate --lang qt5cpp --input-spec {apiSpec} --output {outDir}/qt5cpp --config {confDir}/qt5cpp.json"
gen: "{swaggerCodegen} generate --lang qt5cpp --input-spec {apiSpec} --output {outDir} --config {confFile}"
ruby:
gen: "{swaggerCodegen} generate --lang ruby --input-spec {apiSpec} --output {outDir}/ruby --config {confDir}/ruby.json"
gen: "{swaggerCodegen} generate --lang ruby --input-spec {apiSpec} --output {outDir} --config {confFile}"
scala:
gen: "{swaggerCodegen} generate --lang scala --input-spec {apiSpec} --output {outDir}/scala --config {confDir}/scala.json"
gen: "{swaggerCodegen} generate --lang scala --input-spec {apiSpec} --output {outDir} --config {confFile}"
scalatra:
gen: "{swaggerCodegen} generate --lang scalatra --input-spec {apiSpec} --output {outDir}/scalatra --config {confDir}/scalatra.json"
gen: "{swaggerCodegen} generate --lang scalatra --input-spec {apiSpec} --output {outDir} --config {confFile}"
silex-PHP:
gen: "{swaggerCodegen} generate --lang silex-PHP --input-spec {apiSpec} --output {outDir}/silex-PHP --config {confDir}/silex-PHP.json"
gen: "{swaggerCodegen} generate --lang silex-PHP --input-spec {apiSpec} --output {outDir} --config {confFile}"
sinatra:
gen: "{swaggerCodegen} generate --lang sinatra --input-spec {apiSpec} --output {outDir}/sinatra --config {confDir}/sinatra.json"
gen: "{swaggerCodegen} generate --lang sinatra --input-spec {apiSpec} --output {outDir} --config {confFile}"
slim:
gen: "{swaggerCodegen} generate --lang slim --input-spec {apiSpec} --output {outDir}/slim --config {confDir}/slim.json"
gen: "{swaggerCodegen} generate --lang slim --input-spec {apiSpec} --output {outDir} --config {confFile}"
spring-mvc:
gen: "{swaggerCodegen} generate --lang spring-mvc --input-spec {apiSpec} --output {outDir}/spring-mvc --config {confDir}/spring-mvc.json"
gen: "{swaggerCodegen} generate --lang spring-mvc --input-spec {apiSpec} --output {outDir} --config {confFile}"
dynamic-html:
gen: "{swaggerCodegen} generate --lang dynamic-html --input-spec {apiSpec} --output {outDir}/dynamic-html --config {confDir}/dynamic-html.json"
gen: "{swaggerCodegen} generate --lang dynamic-html --input-spec {apiSpec} --output {outDir} --config {confFile}"
html:
gen: "{swaggerCodegen} generate --lang html --input-spec {apiSpec} --output {outDir}/html --config {confDir}/html.json"
gen: "{swaggerCodegen} generate --lang html --input-spec {apiSpec} --output {outDir} --config {confFile}"
swagger:
gen: "{swaggerCodegen} generate --lang swagger --input-spec {apiSpec} --output {outDir}/swagger --config {confDir}/swagger.json"
gen: "{swaggerCodegen} generate --lang swagger --input-spec {apiSpec} --output {outDir} --config {confFile}"
swagger-yaml:
gen: "{swaggerCodegen} generate --lang swagger-yaml --input-spec {apiSpec} --output {outDir}/swagger-yaml --config {confDir}/swagger-yaml.json"
gen: "{swaggerCodegen} generate --lang swagger-yaml --input-spec {apiSpec} --output {outDir} --config {confFile}"
swift:
gen: "{swaggerCodegen} generate --lang swift --input-spec {apiSpec} --output {outDir}/swift --config {confDir}/swift.json"
gen: "{swaggerCodegen} generate --lang swift --input-spec {apiSpec} --output {outDir} --config {confFile}"
tizen:
gen: "{swaggerCodegen} generate --lang tizen --input-spec {apiSpec} --output {outDir}/tizen --config {confDir}/tizen.json"
gen: "{swaggerCodegen} generate --lang tizen --input-spec {apiSpec} --output {outDir} --config {confFile}"
typescript-angular:
gen: "{swaggerCodegen} generate --lang typescript-angular --input-spec {apiSpec} --output {outDir}/typescript-angular --config {confDir}/typescript-angular.json"
gen: "{swaggerCodegen} generate --lang typescript-angular --input-spec {apiSpec} --output {outDir} --config {confFile}"
typescript-node:
gen: "{swaggerCodegen} generate --lang typescript-node --input-spec {apiSpec} --output {outDir}/typescript-node --config {confDir}/typescript-node.json"
gen: "{swaggerCodegen} generate --lang typescript-node --input-spec {apiSpec} --output {outDir} --config {confFile}"
akka-scala:
gen: "{swaggerCodegen} generate --lang akka-scala --input-spec {apiSpec} --output {outDir}/akka-scala --config {confDir}/akka-scala.json"
gen: "{swaggerCodegen} generate --lang akka-scala --input-spec {apiSpec} --output {outDir} --config {confFile}"
CsharpDotNet2:
gen: "{swaggerCodegen} generate --lang CsharpDotNet2 --input-spec {apiSpec} --output {outDir}/CsharpDotNet2 --config {confDir}/CsharpDotNet2.json"
gen: "{swaggerCodegen} generate --lang CsharpDotNet2 --input-spec {apiSpec} --output {outDir} --config {confFile}"
clojure:
gen: "{swaggerCodegen} generate --lang clojure --input-spec {apiSpec} --output {outDir}/clojure --config {confDir}/clojure.json"
gen: "{swaggerCodegen} generate --lang clojure --input-spec {apiSpec} --output {outDir} --config {confFile}"
haskell-servant:
gen: "{swaggerCodegen} generate --lang haskell-servant --input-spec {apiSpec} --output {outDir}/haskell-servant --config {confDir}/haskell-servant.json"
gen: "{swaggerCodegen} generate --lang haskell-servant --input-spec {apiSpec} --output {outDir} --config {confFile}"
12 changes: 6 additions & 6 deletions lib/cli.js
Expand Up @@ -13,18 +13,18 @@ function _exec() {
var lastArg = arguments[arguments.length - 1];
var tasks = [lastArg._name].concat(lastArg.parent.args.slice(0, -1));

var apiSpec = lastArg.parent.apiSpec;
var confDir = lastArg.parent.confDir || p.join(APP_DIR, 'conf');
var outDir = lastArg.parent.outDir || p.join(APP_DIR, 'generated');
var logDir = lastArg.parent.logDir || p.join(APP_DIR, 'log');
var quiet = lastArg.parent.quiet || false;
var apiSpec = lastArg.parent.apiSpec;
var confFile = lastArg.parent.confFile || p.join(APP_DIR, '{lang}/conf.json');
var outDir = lastArg.parent.outDir || p.join(APP_DIR, '{lang}/generated/');
var logDir = lastArg.parent.logDir || p.join(APP_DIR, '{lang}/log/');
var quiet = lastArg.parent.quiet || false;

var swaggerCodegen = lastArg.parent.jar !== null ? util.format('java -jar %s', lastArg.parent.jar) : 'swagger-codegen';

var params = {
apiSpec: apiSpec,
appDir: APP_DIR,
confDir: confDir,
confFile: confFile,
outDir: outDir,
swaggerCodegen: swaggerCodegen,
};
Expand Down
6 changes: 5 additions & 1 deletion lib/runner.js
Expand Up @@ -22,8 +22,12 @@ function exec(command, opts, cb) {

console.log('%s | %s', command.meta.task.cyan, command.exec);

var logDir = opts.logDir.replace(/\{lang\}/g, command.meta.language);
var logFile = p.join(logDir, util.format('%s.log', command.meta.type));
mkdirp.sync(logDir);

var cproc = child.exec(command.exec, opts, cb);
var wstream = fs.createWriteStream(p.join(opts.logDir, command.meta.language, util.format('%s.log', command.meta.type)));
var wstream = fs.createWriteStream(logFile);

cproc.stdout.on('data', function (data) {
if (!opts.quiet) {
Expand Down
12 changes: 8 additions & 4 deletions lib/swaggyc.js
Expand Up @@ -57,10 +57,14 @@ SwaggyC.prototype._commands = function (tasks, cb) {
var jobs = [];
commands.forEach(function (command) {
jobs.push(function (cb) {
jazz.compile(command.format).process(self.params, function (result) {
command.exec = result;
delete command.format;
cb(null, command);
// merge parameters specified in command format in tasks.yml config
jazz.compile(command.format).process(self.params, function (command_result) {
// merge parameters specified in CLI args
jazz.compile(command_result).process({ lang: command.meta.language }, function (result) {
command.exec = result;
delete command.format;
cb(null, command);
});
});
});
});
Expand Down

0 comments on commit 6f2519a

Please sign in to comment.