1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/railties/lib/rails/api/task.rb

177 lines
4 KiB
Ruby
Raw Normal View History

require "rdoc/task"
module Rails
module API
class Task < RDoc::Task
RDOC_FILES = {
"activesupport" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/active_support/**/*.rb
),
2016-08-06 13:38:55 -04:00
exclude: "lib/active_support/vendor/*"
},
"activerecord" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/active_record/**/*.rb
)
},
"activemodel" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/active_model/**/*.rb
)
},
"actionpack" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/abstract_controller/**/*.rb
lib/action_controller/**/*.rb
lib/action_dispatch/**/*.rb
)
},
"actionview" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/action_view/**/*.rb
),
2016-08-06 13:38:55 -04:00
exclude: "lib/action_view/vendor/*"
},
"actionmailer" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/action_mailer/**/*.rb
)
},
"activejob" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.md
lib/active_job/**/*.rb
)
},
"actioncable" => {
2016-08-06 13:38:55 -04:00
include: %w(
2015-12-17 10:00:12 -05:00
README.md
lib/action_cable/**/*.rb
)
},
"railties" => {
2016-08-06 13:38:55 -04:00
include: %w(
README.rdoc
lib/**/*.rb
),
2016-08-06 13:38:55 -04:00
exclude: "lib/rails/generators/rails/**/templates/**/*.rb"
}
}
def initialize(name)
super
# Every time rake runs this task is instantiated as all the rest.
# Be lazy computing stuff to have as light impact as possible to
# the rest of tasks.
before_running_rdoc do
2013-03-30 06:22:40 -04:00
load_and_configure_sdoc
configure_rdoc_files
setup_horo_variables
end
end
# Hack, ignore the desc calls performed by the original initializer.
def desc(description)
# no-op
end
2013-03-30 06:22:40 -04:00
def load_and_configure_sdoc
require "sdoc"
self.title = "Ruby on Rails API"
self.rdoc_dir = api_dir
options << "-m" << api_main
options << "-e" << "UTF-8"
options << "-f" << "sdoc"
options << "-T" << "rails"
2013-03-30 06:22:40 -04:00
rescue LoadError
$stderr.puts %(Unable to load SDoc, please add\n\n gem 'sdoc', require: false\n\nto the Gemfile.)
exit 1
end
def configure_rdoc_files
rdoc_files.include(api_main)
RDOC_FILES.each do |component, cfg|
cdr = component_root_dir(component)
Array(cfg[:include]).each do |pattern|
rdoc_files.include("#{cdr}/#{pattern}")
end
Array(cfg[:exclude]).each do |pattern|
rdoc_files.exclude("#{cdr}/#{pattern}")
end
end
# Only generate documentation for files that have been
# changed since the API was generated.
if Dir.exist?("doc/rdoc") && !ENV["ALL"]
last_generation = DateTime.rfc2822(File.open("doc/rdoc/created.rid", &:readline))
rdoc_files.keep_if do |file|
File.mtime(file).to_datetime > last_generation
end
# Nothing to do
exit(0) if rdoc_files.empty?
end
end
2013-03-29 18:40:48 -04:00
def setup_horo_variables
ENV["HORO_PROJECT_NAME"] = "Ruby on Rails"
ENV["HORO_PROJECT_VERSION"] = rails_version
2013-03-29 18:40:48 -04:00
end
def api_main
component_root_dir("railties") + "/RDOC_MAIN.rdoc"
end
2013-03-29 18:40:48 -04:00
end
2013-03-29 18:40:48 -04:00
class RepoTask < Task
2013-03-30 06:22:40 -04:00
def load_and_configure_sdoc
2013-03-29 18:40:48 -04:00
super
options << "-g" # link to GitHub, SDoc flag
end
def component_root_dir(component)
component
end
2013-03-29 18:40:48 -04:00
def api_dir
"doc/rdoc"
2013-03-29 18:40:48 -04:00
end
end
2013-03-29 18:40:48 -04:00
class EdgeTask < RepoTask
2013-03-29 18:40:48 -04:00
def rails_version
"master@#{`git rev-parse HEAD`[0, 7]}"
end
end
class StableTask < RepoTask
def rails_version
File.read("RAILS_VERSION").strip
end
end
end
end