From ca22b97185714a11d78f819e6a2f0c4e32ec598c Mon Sep 17 00:00:00 2001 From: jgabriels Date: Sat, 3 Mar 2018 10:42:03 -0600 Subject: [PATCH 1/3] autogenerate code samples --- generators/app/templates/_scripts/build.js | 4 ++ .../_scripts/generate-code-samples.js | 67 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100755 generators/app/templates/_scripts/generate-code-samples.js diff --git a/generators/app/templates/_scripts/build.js b/generators/app/templates/_scripts/build.js index 95ba506..3544a27 100755 --- a/generators/app/templates/_scripts/build.js +++ b/generators/app/templates/_scripts/build.js @@ -11,6 +11,10 @@ mkdir('-p', 'web_deploy') cp('-R', 'web/*', 'web_deploy/'); +console.log("generating code samples"); +exec('npm run generate-code-samples'); + +console.log("bundling json/yaml"); exec('npm run swagger bundle -- -o web_deploy/swagger.json'); exec('npm run swagger bundle -- --yaml -o web_deploy/swagger.yaml'); diff --git a/generators/app/templates/_scripts/generate-code-samples.js b/generators/app/templates/_scripts/generate-code-samples.js new file mode 100755 index 0000000..5326eb9 --- /dev/null +++ b/generators/app/templates/_scripts/generate-code-samples.js @@ -0,0 +1,67 @@ +#!/usr/bin/node +'use strict' +require('shelljs/global'); +var fs = require('fs') +var stringifyObject = require('stringify-object'); +var SwaggerSnippet = require('swagger-snippet') +//first regenerate combined file to ensure it is up to date. +exec('swagger-repo bundle -o ./web_deploy/swagger.json'); //this wants a single dot +//now load that file +var SwaggerFile = require('../web_deploy/swagger.json'); //this wants a double dot + +//var result = SwaggerSnippet.getEndpointSnippets(SwaggerFile, '/boards/{board_type}', 'post' ,['shell_wget','shell_curl']) +var results = SwaggerSnippet.getSwaggerSnippets(SwaggerFile, + [ + 'perl_perl5', + 'c_libcurl', //(default) + 'csharp_restsharp', //(default) + 'go_native', //(default) + 'java_okhttp', + 'java_unirest', //(default) + 'javascript_jquery', + 'javascript_xhr', //(default) + 'node_native', //(default) + 'node_request', + 'node_unirest', + 'objc_nsurlsession', //(default) + 'ocaml_cohttp', //(default) + 'php_curl', //(default) + 'php_http1', + 'php_http2', + 'python_python3', //(default) + 'python_requests', + 'ruby_native', //(default) + 'shell_curl', //(default) + 'shell_httpie', + 'shell_wget', + 'swift_nsurlsession' //(default) + ]); + + +results.forEach(function(result) + { + var path = result.url.replace(/http.*api\//,'').replace(/\//g,'@'); + const pretty = stringifyObject(result.snippets, { indent: ' ', singleQuotes: false }); + result.snippets.forEach(function(snippet) + { + var ext = '.txt'; + var lang = snippet.id; + lang = lang[0].toUpperCase() + lang.substring(1); //uppercase first letter + if(lang == 'Shell_curl') { ext = '.sh'; lang = 'curl'; } + if(lang == 'Shell_wget') { ext = '.sh'; lang = 'wget'; } + if(lang.substring(0,4) == 'Perl') { ext = '.pl'; } + if(lang.substring(0,6) == 'Python') { ext = '.py'; } + if(lang.substring(0,3) == 'Php') { ext = '.php'; } + var dir = 'spec/code_samples/' + lang + '/' + path + '/'; + mkdir('-p',dir); + fs.writeFile(dir + result.method.toLowerCase() + ext,snippet.content, (err) => { + if (err) + { + console.log('ERROR WRITING: ' + dir + result.method.toLowerCase() + ext); + console.log(err); + console.log(process.cwd()); + } + }); + }); + }) + From d05fc3723b224ee4ba47945435cd047444bef9d4 Mon Sep 17 00:00:00 2001 From: jgabriels Date: Sat, 3 Mar 2018 11:07:52 -0600 Subject: [PATCH 2/3] removed comment --- generators/app/templates/_scripts/generate-code-samples.js | 1 - 1 file changed, 1 deletion(-) diff --git a/generators/app/templates/_scripts/generate-code-samples.js b/generators/app/templates/_scripts/generate-code-samples.js index 5326eb9..4ef28f1 100755 --- a/generators/app/templates/_scripts/generate-code-samples.js +++ b/generators/app/templates/_scripts/generate-code-samples.js @@ -9,7 +9,6 @@ exec('swagger-repo bundle -o ./web_deploy/swagger.json'); //this wants a single //now load that file var SwaggerFile = require('../web_deploy/swagger.json'); //this wants a double dot -//var result = SwaggerSnippet.getEndpointSnippets(SwaggerFile, '/boards/{board_type}', 'post' ,['shell_wget','shell_curl']) var results = SwaggerSnippet.getSwaggerSnippets(SwaggerFile, [ 'perl_perl5', From f7e22db377658ae75a843a00ec01d0cac8192f1f Mon Sep 17 00:00:00 2001 From: jgabriels Date: Sat, 3 Mar 2018 11:21:56 -0600 Subject: [PATCH 3/3] added some spacing --- generators/app/templates/_scripts/generate-code-samples.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/generators/app/templates/_scripts/generate-code-samples.js b/generators/app/templates/_scripts/generate-code-samples.js index 4ef28f1..e4b7493 100755 --- a/generators/app/templates/_scripts/generate-code-samples.js +++ b/generators/app/templates/_scripts/generate-code-samples.js @@ -4,8 +4,10 @@ require('shelljs/global'); var fs = require('fs') var stringifyObject = require('stringify-object'); var SwaggerSnippet = require('swagger-snippet') + //first regenerate combined file to ensure it is up to date. exec('swagger-repo bundle -o ./web_deploy/swagger.json'); //this wants a single dot + //now load that file var SwaggerFile = require('../web_deploy/swagger.json'); //this wants a double dot