class PUNK::GenerateSwaggerService

Public Instance Methods

process() click to toggle source
# File lib/punk/services/generate_swagger.rb, line 5
def process
  path = File.join(PUNK.get.app.path, "..", "www", "swagger.json")
  raise InternalServerError, "swagger.json already exists" if File.exist?(path) && !PUNK.env.test?
  require "swagger_yard"
  require_relative "../helpers/swagger"
  SwaggerYard.register_custom_yard_tags!
  SwaggerYard.configure do |config|
    config.api_version = PUNK.version
    config.title = PUNK.get.app.name
    config.description = PUNK.get.app.description
    config.api_base_path = PUNK.get.app.url
    config.controller_path = [File.join(PUNK.get.app.path, "routes", "**", "*"), File.join(__dir__, "..", "routes", "**", "*")]
    config.model_path = [File.join(__dir__, "..", "models", "**", "*"), File.join(__dir__, "..", "views", "**", "*"), File.join(PUNK.get.app.path, "models", "**", "*")]
  end
  spec = SwaggerYard::OpenAPI.new
  blob = JSON.pretty_generate(spec.to_h)
  File.open(path, "w") { |f| f << blob } unless PUNK.env.test?
  blob
end