mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +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);
 | |
|     }
 | |
| }
 |