Sha256: a193bc72f0363c96e93012a9bb4a34be53ef412a35add82000d7ff6d3fd21aff

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

##############################################################################
#                               Documentation
##############################################################################

namespace :documentation do
  namespace :api do
    desc 'Generate API documentation markdown'
    task :blueprint do
      require 'rspec/core/rake_task'

      RSpec::Core::RakeTask.new(:api_docs) do |t|
        t.pattern    = 'spec/controllers/**/v1/**/*_spec.rb'
        t.rspec_opts = %w{
                         --format="Dox::Formatter"
                         --out="./docs/api/index.apib"
                         --order="defined"
                         --tag="dox"
                       }
                         .join(' ')
      end

      ::Rake::Task['api_docs'].invoke
    end

    task json: :blueprint do
      `apib2swagger --input='./docs/api/index.apib' --output='./docs/api/index.json'`
    end

    task yaml: :blueprint do
      command = <<~HEREDOC.tr("\n", ' ')
        apib2swagger
        --yaml
        --input='./docs/api/index.apib'
        --output='./docs/api/index.yaml'
      HEREDOC

      `#{command}`
    end

    task html: :json do
      `redoc-cli bundle --output='./docs/api/index.html' './docs/api/index.json'`
    end

    task preview: :html do
      `open './docs/api/index.html'`
    end

    task publish: :blueprint do
      command = <<~HEREDOC.tr("\n", ' ')
        apiary
        publish
        --path='./docs/api/apispec.apib'
        --api-name='#{::Rails.application.name}'
      HEREDOC

      `#{command}`
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rspeckled-2.1.1 lib/rspeckled/tasks/documentation.rake
rspeckled-2.1.0 lib/rspeckled/tasks/documentation.rake