Skip to content

Commit

Permalink
Update scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeRalphson committed Jan 7, 2020
1 parent e19bbad commit 4ece32f
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 11 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ dev/

# Temp output files
tmp.yaml
*.txt
go*sh

APIs/raw.githubusercontent.com/

Expand Down
29 changes: 19 additions & 10 deletions scripts/collection.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ function updateCollection(dir, command) {
origin = origin.pop();
var source = origin.url;
var cacheEntry = getCacheEntry(source);
if ((cacheEntry.skip && !command.force) || (origin['x-apisguru-direct'])) {
if ((cacheEntry.skip && !command.force) || (origin['x-apisguru-driver'] == 'external')) {
console.log('SKIP '+source);
return null;
}
Expand Down Expand Up @@ -333,7 +333,7 @@ function validatePreferred(specs) {
_.each(specs, function (swagger) {
var id = util.getApiId(swagger);
var version = swagger.info.version;
var spath = util.getSwaggerPath(swagger);
var spath = util.getSwaggerPath(swagger,swagger.openapi ? 'openapi.yaml' : 'swagger.yaml');
preferred[id] = preferred[id] || {};
preferred[id][swagger.info.version] = swagger.info['x-preferred'];
if (Object.keys(swagger.paths).length<1)
Expand Down Expand Up @@ -572,7 +572,7 @@ function writeSpec(source, format, exPatch, command) {
if (validation.remotesResolved) {
context.swagger = validation.remotesResolved;
}
else if (!format.startsWith('openapi')) {
else if (!swagger.openapi) {
console.warn('No remotesResolved returned');
}

Expand Down Expand Up @@ -899,6 +899,11 @@ function fixSpec(swagger, errors) {
else
newValue = value;

if (swagger.openapi) {
console.warn('Fixing unresolvable errors not fully implemented for OpenAPI3');
break;
}

if (!swagger.definitions)
swagger.definitions = {};

Expand All @@ -911,7 +916,8 @@ function fixSpec(swagger, errors) {
if ((typeof value === 'string') && (value == newValue) && (value.startsWith('#/definitions/'))) {
console.warn(error.code,value);
let ptr = value.replace('#/definitions/','');
swagger.definitions[decodeURI(ptr)] = {};
//swagger.definitions[decodeURI(ptr)] = {};
jp.set(swagger, value, {});
fixed = true;
}
else if (value.startsWith('./')) {
Expand All @@ -921,7 +927,6 @@ function fixSpec(swagger, errors) {
else {
console.warn(swagger.info.title);
console.warn(path,typeof value,value,newValue);

}
}
break;
Expand Down Expand Up @@ -1186,28 +1191,32 @@ function removeEmpty(obj) {

function convertToSwagger(spec,exPatch,command) {
let target = 'swagger_2';
if (spec.format === 'openapi_3') target = spec.format;
if (spec.format !== 'swagger_2') target = 'openapi_3';
return spec.convertTo(target)
.then(swagger => {
if (_.isUndefined(swagger.spec.info))
swagger.spec.info = { title: 'API' };
if ((_.isUndefined(swagger.spec.info.version)) || (swagger.spec.info.version == ''))
swagger.spec.info.version = '1.0.0'
_.merge(swagger.spec.info, {
'x-providerName': parseHost(swagger.spec, command.host||exPatch.info["x-providerName"])
});
if (typeof swagger.spec.info['x-origin'] == 'undefined')
if (typeof swagger.spec.info['x-origin'] == 'undefined')
swagger.spec.info['x-origin'] = [];
if (!Array.isArray(swagger.spec.info['x-origin']))
if (!Array.isArray(swagger.spec.info['x-origin']))
swagger.spec.info['x-origin'] = [swagger.spec.info['x-origin']];
var newOrigin = {
format: spec.formatName,
version: spec.getFormatVersion(),
url: spec.source
};
if ((newOrigin.format !== 'swagger') || (newOrigin.version !== '2.0')) {
if ((newOrigin.format !== 'openapi') && ((newOrigin.format !== 'swagger') || (newOrigin.version !== '2.0'))) {
newOrigin.converter = {
url: 'https://github.com/lucybot/api-spec-converter',
version: converterVersion
};
}
if (!_.isEqual(_.last(swagger.spec.info['x-origin']),newOrigin))
if (!_.isEqual(_.last(swagger.spec.info['x-origin']),newOrigin))
swagger.spec.info['x-origin'].push(newOrigin);
return swagger.spec;
});
Expand Down
16 changes: 16 additions & 0 deletions scripts/findNonNative.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// script to find APIs which are not natively swagger_2 or openapi_3
// use with a find command piped to xargs for now

const yaml = require('js-yaml');
const fs = require('fs');
const util = require('util');

for (let i=2;i<process.argv.length;i++) {
let fname = process.argv[i];
let api = yaml.safeLoad(fs.readFileSync(fname,'utf8'),{json:true});
let origin = api.info["x-origin"];
if (origin && origin.length) {
origin = origin.pop();
if (origin.converter && origin.format !== 'openapi') console.log(fname);
}
}
2 changes: 1 addition & 1 deletion scripts/spec_sources/adyen.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var _ = require('lodash');
var util = require('../util');

module.exports = function () {
var files = util.listGitHubFiles('adyen', 'adyen-openapi', 'master', 'specs/3.0/*.json');
var files = util.listGitHubFiles('adyen', 'adyen-openapi', 'master', 'specs/json/*.json');
return _.map(files, filename => {
return {
info: {
Expand Down

0 comments on commit 4ece32f

Please sign in to comment.