generator-swaggerize
Version:
Yeoman generator for openAPI(swagger) application
99 lines (91 loc) • 2.86 kB
JavaScript
var Path = require('path');
var Fs = require('fs');
var JsYaml = require('js-yaml');
var dotFiles = [
'.eslintrc',
'.eslintignore',
'.gitignore',
'.npmignore'
];
var projectFiles = [
'package.json',
'README.md'
];
module.exports = {
prompt: mockPrompt,
options: mockOptions,
dotFiles: dotFiles,
projectFiles: projectFiles,
routeFiles: buildRouteFiles,
securityFiles: buildSecurityFiles
};
function mockPrompt (name) {
var mockPrompts = {
app : {
appName: 'mockapp',
creatorName: 'lorem ipsum',
githubUser: 'loremipsum',
email: 'loremipsum@awesome.com',
framework: 'express',
apiPath: Path.join(__dirname, '../fixture/petstore_no_security.json'),
'skip-npm-install': true
},
data: {
apiPath: Path.join(__dirname, '../fixture/petstore_no_security.json')
},
handler: {
framework: 'hapi',
apiPath: Path.join(__dirname, '../fixture/petstore_no_security.json')
},
test: {
framework: 'express',
apiPath: Path.join(__dirname, '../fixture/petstore_no_security.json')
}
};
return mockPrompts[name];
}
function mockOptions(options) {
var apiRelPath = './config/swagger.json';
options = options || {};
if (options.apiPath && ('.yml' === Path.extname(options.apiPath) || '.yaml' === Path.extname(options.apiPath))) {
apiRelPath = './config/swagger.yaml';
}
return {
framework: options.framework || 'express',
apiPath: options.apiPath || Path.join(__dirname, '../fixture/petstore_no_security.json'),
apiRelPath: apiRelPath,
dataPath: options.dataPath || './data',
handlerPath: options.handlerPath || './handlers',
testPath: options.testPath || './tests',
securityPath: options.securityPath || './security'
};
}
function buildRouteFiles (prefix, api) {
var apiObj = loadApi(api);
var routes = [];
if (apiObj.paths) {
routes = Object.keys(apiObj.paths).map(function (pathStr) {
return Path.join(prefix, pathStr.replace(/^\/|\/$/g, '') + '.js');
});
}
return routes;
}
function buildSecurityFiles (prefix, api) {
var apiObj = loadApi(api);
var routes = [];
if (apiObj.securityDefinitions) {
routes = Object.keys(apiObj.securityDefinitions).map(function (pathStr) {
return Path.join(prefix, pathStr + '.js');
});
}
return routes;
}
function loadApi (api) {
api = api || Path.join(__dirname, '../fixture/petstore_no_security.json');
if ('.yml' === Path.extname(api) || '.yaml' === Path.extname(api)) {
return JsYaml.load(Fs.readFileSync(api));
} else {
return require(api);
}
}
;