OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openproject/script/api/spec

28 lines
664 B

#!/usr/bin/env ruby
if ARGV.join(" ") =~ /((-h)|(--help))/
puts "Prints the self-contained OpenAPI 3.0 specification of OpenProject's APIv3"
puts
puts "usage: ./script/api/spec [--format JSON|yaml]"
return
end
require 'pathname'
require 'yaml'
require 'json'
require './lib/api/open_api'
path = Pathname(__dir__).join("../../docs/api/apiv3/openapi-spec.yml")
spec = API::OpenAPI.assemble_spec path
format = ARGV.join(" ") =~ /((--format)|(-f))((=)|(\s+))ya?ml/ ? :yaml : :json
begin
if format == :yaml
puts spec.to_yaml
else
puts spec.to_json
end
rescue Errno::EPIPE
# `head` for instance closes the pipe when it has what it needs
end