mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env node
 | 
						|
 | 
						|
var SwaggerParser = require('swagger-parser'),
 | 
						|
    _             = require('underscore');
 | 
						|
 | 
						|
function check_duplicate_operationids(api) {
 | 
						|
    var operation_ids = [];
 | 
						|
 | 
						|
    _.each(api.paths, function(endpoint) {
 | 
						|
        _.each(endpoint, function(value) {
 | 
						|
            var operation_id = value.operationId;
 | 
						|
            if(operation_id !== undefined) {
 | 
						|
                if(operation_ids.indexOf(operation_id) >= 0) {
 | 
						|
                    console.error('In', file + ':');
 | 
						|
                    console.error('Duplicate operationId:', operation_id);
 | 
						|
                    process.exitCode = 1;
 | 
						|
                } else {
 | 
						|
                    operation_ids.push(operation_id);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        });
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
function validate_swagger(file) {
 | 
						|
    SwaggerParser.validate(file)
 | 
						|
        .then(function(api) {
 | 
						|
            // Let's make sure that there aren't any duplicate operationids,
 | 
						|
            // until this issue is fixed:
 | 
						|
            // https://github.com/BigstickCarpet/swagger-parser/issues/68
 | 
						|
            check_duplicate_operationids(api);
 | 
						|
            return;
 | 
						|
        })
 | 
						|
        .catch(function(err) {
 | 
						|
            // There is something wrong. Display the validation errors
 | 
						|
            console.error('In', file + ':');
 | 
						|
            console.error(err.message);
 | 
						|
            process.exitCode = 1;
 | 
						|
        });
 | 
						|
}
 | 
						|
 | 
						|
// Iterate through the changed files, passed in the arguments.
 | 
						|
// The two first arguments are the call to the Node interpreter and this
 | 
						|
// script, hence the starting point at 2.
 | 
						|
for(var i = 2; i < process.argv.length; i++) {
 | 
						|
    var file = process.argv[i];
 | 
						|
    // Run the validator only for YAML files inside static/swagger
 | 
						|
    if(file.startsWith('static/swagger')) {
 | 
						|
        validate_swagger(file);
 | 
						|
    }
 | 
						|
}
 |