Sha256: ee7d43fb0d6d6b932add634e5728f8f1e29c57e7e9f2efb8422b0bb2e7918b0b

Contents?: true

Size: 1.47 KB

Versions: 24

Compression:

Stored size: 1.47 KB

Contents

require 'yard'
require 'yard/rake/yardoc_task'

namespace :docs do

  YARD::Rake::YardocTask.new do |t|
    t.files = ['lib/**/*.rb']
    t.options = ['--no-output']
  end

  def jekyll_redirect_string(filename)
    <<-EOD.strip_heredoc
      ---
      redirect_from: /docs/3-index-pages/#{filename}
      ---

    EOD
  end

  def filename_from_module(mod)
    mod.name.to_s.underscore.tr('_', '-')
  end

  def write_docstrings_to(path, mods)
    mods.each do |mod|
      filename = filename_from_module(mod)

      File.open("#{path}/#{filename}.md", 'w+') do |f|
        f << jekyll_redirect_string("#{filename}.html") + mod.docstring + "\n"
      end
    end
  end

  def docs_syncronized?
    # Do not print diff and yield whether exit code was zero
    sh('git diff --quiet docs/3-index-pages') do |outcome, _|
      return if outcome

      # Output diff before raising error
      sh('git diff docs/3-index-pages')

      raise <<-MSG.strip_heredoc
        The docs/3-index-pages directory is out of sync.
        Run rake generate_cops_documentation and commit the results.
      MSG
    end
  end

  desc "Update docs in the docs folder"
  task build: :yard do
    require 'yard'
    require 'active_support/all'

    YARD::Registry.load!
    views = YARD::Registry.at("ActiveAdmin::Views")

    # Index Types
    index_types = views.children.select{|obj| obj.name.to_s =~ /^IndexAs/ }
    write_docstrings_to "docs/3-index-pages", index_types

    docs_syncronized? if ENV["CI"]
  end

end

Version data entries

24 entries across 24 versions & 4 rubygems

Version Path
activeadmin-rails-1.7.2 tasks/docs.rake
activeadmin-rails-1.7.1 tasks/docs.rake
activeadmin-rails-1.7.0 tasks/docs.rake
activeadmin-rb-1.6.0 tasks/docs.rake
activeadmin-rb-1.5.2 tasks/docs.rake
activeadmin-rb-1.5.1 tasks/docs.rake
activeadmin-rb-1.5.0 tasks/docs.rake
activeadmin_addons-1.7.1 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake
activeadmin-rb-1.4.0 tasks/docs.rake
activeadmin_addons-1.7.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake
activeadmin-1.4.3 tasks/docs.rake
activeadmin-1.4.2 tasks/docs.rake
activeadmin-1.4.1 tasks/docs.rake
activeadmin-1.4.0 tasks/docs.rake
activeadmin-1.3.1 tasks/docs.rake
activeadmin_addons-1.6.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake
activeadmin_addons-1.5.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake
activeadmin-1.3.0 tasks/docs.rake
activeadmin_addons-1.4.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake
activeadmin_addons-1.3.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/docs.rake