require 'fileutils'
require 'fern/documentation/route_analyzer' require 'fern/documentation/markdown_generator'
namespace :fern do
desc 'Generate documentation' task docs: :environment do endpoints = [] Rails.application.routes.routes.each do |route| next if route.internal analysis = Fern::Documentation::RouteAnalyzer.new(route).analyze if analysis.nil? puts "Skipping route" else endpoints << analysis end end doc_root = Rails.root.join('docs', 'api') FileUtils.rm_rf(doc_root) FileUtils.mkdir_p(doc_root) endpoints.each do |endpoint| filename = "#{endpoint[:controller_name]}-#{endpoint[:action]}.md" filepath = File.join(doc_root, filename) filedir = File.dirname(filepath) FileUtils.mkdir_p(filedir) content = Fern::Documentation::MarkdownGenerator.new(endpoint).generate File.write(filepath, content) end end
end