Sha256: cd686a12a471a54720604fd382328bd6ef8e4810654e8f0944053505fd343cf5

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module PUNK
  class GenerateSwaggerService < Service
    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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
punk-0.4.1 lib/punk/services/generate_swagger.rb