Sha256: 54158d789d229931b8d463e361686dc26d57b58f9788d149ae15c25ce5051920

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

require 'yaml'
require 'fileutils'
require 'r2-oas/schema/v3/object/from_files/openapi_object'
require_relative 'base_builder'

module R2OAS
  module Schema
    module V3
      class DocBuilder < BaseBuilder
        attr_accessor :oas_doc, :pure_oas_doc

        def initialize(opts = {})
          super
        end

        def build_docs
          logger.info '[Build OAS schema files] start'
          logger.info '[Build OAS docs from schema files] start'
          build_docs_from_schema_files
          logger.info '[Build OAS docs from schema files] end'
          logger.info '[Build OAS schema files] end'
        end

        private

        def build_docs_from_schema_files
          result_before_squeeze = schema_files_paths.each_with_object({}) do |path, data|
            file_manager = FileManager.new(path)
            yaml = YAML.load_file(path)
            data.deep_merge!(yaml)
            logger.info " Use schema file: \t#{file_manager.save_file_path(type: :relative)}"
          end

          result = if many_paths_file_paths.present?
                     Squeezer.new(result_before_squeeze, many_paths_file_paths: many_paths_file_paths).squeeze_docs
                   else
                     result_before_squeeze
                  end

          @pure_oas_doc = result.dup
          rsult = FromFiles::OpenapiObject.new(result, opts).to_doc if use_plugin?
          @oas_doc = result

          File.write(output? ? output_path : doc_save_file_path, result.to_yaml)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
r2-oas-0.5.0 lib/r2-oas/schema/v3/builder/doc_builder.rb
r2-oas-0.4.1 lib/r2-oas/schema/v3/builder/doc_builder.rb
r2-oas-0.4.0 lib/r2-oas/schema/v3/builder/doc_builder.rb