#!/usr/bin/env ruby

if /((-h)|(--help))/.match?(ARGV.join(" "))
  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_relative "../../lib/api/open_api"

path = Pathname(__dir__).join("../../docs/api/apiv3/openapi-spec.yml")
spec = API::OpenAPI.assemble_spec path
format = /((--format)|(-f))((=)|(\s+))ya?ml/.match?(ARGV.join(" ")) ? :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
