rakefile.rb
1 namespace :doc do 2 3 desc "Generate the documentation" 4 task :yard do 5 puts "Generating YARD documentation" 6 system(File.join("..", "build", "run"), "doc:yardoc") 7 end 8 9 10 desc "Create the API.md file" 11 task :api do 12 puts "Creating the API.md file" 13 require 'erb' 14 require 'sinatra' 15 require 'jsonmodel' 16 require_relative '../backend/app/lib/rest.rb' 17 require_relative '../backend/app/lib/username.rb' 18 require_relative '../backend/app/model/backend_enum_source.rb' 19 require_relative '../common/log.rb' 20 require_relative '../backend/app/lib/streaming_import.rb' 21 require_relative '../backend/app/lib/component_transfer.rb' 22 23 24 class ArchivesSpaceService < Sinatra::Base 25 26 def self.helpers 27 nil 28 end 29 30 include RESTHelpers 31 32 end 33 34 @time = Time.new 35 36 JSONModel::init(:enum_source => BackendEnumSource) 37 38 require_relative '../backend/app/lib/export' 39 40 Dir.glob(File.dirname(__FILE__) + '/../backend/app/controllers/*.rb').sort.each {|file| require file unless (file =~ /system/ || file =~ /oai/)} 41 42 @endpoints = ArchivesSpaceService::Endpoint.all.sort{|a,b| a[:uri] <=> b[:uri]} 43 @examples = JSON.parse( IO.read File.dirname(__FILE__) + "/../endpoint_examples.json" ) 44 45 46 erb = ERB.new(File.read('API.erb'), nil, '<>') 47 48 File.open('../API.md', 'w') do |f| 49 f.write erb.result(binding) 50 end 51 52 end 53 54 desc 'Rename the YARD index file to avoid problems with Jekyll' 55 task :rename_index do 56 puts "Renaming the YARD index file" 57 Dir.chdir('../docs') do 58 files = Dir.glob('doc/**/*') 59 files.each do |f| 60 if File::file?(f) 61 content = File.read(f) 62 content.gsub!('"_index.html"', '"alpha_index.html"') 63 content.gsub!('/_index.html', '/alpha_index.html') 64 File.open(f, "w") do |io| 65 io.write content 66 end 67 end 68 end 69 `mv doc/_index.html doc/alpha_index.html` 70 end 71 end 72 73 desc 'This generates all documentation and publishes it to the doc folder' 74 task :gen do 75 require 'fileutils' 76 77 puts "Removing old documentation" 78 FileUtils.rm_rf("./docs/doc") 79 80 Rake::Task["doc:api"].invoke 81 Rake::Task["doc:yard"].invoke 82 Rake::Task["doc:rename_index"].invoke 83 84 puts "Updating API documentation" 85 FileUtils.cp("../API.md", "../docs/slate/source/index.md") 86 end 87 88 89 end