aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/api/task.rb
blob: f5aa56806b1dea8566750dc6e0609ed66525b670 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
require 'rdoc/task'

module Rails
  module API
    class Task < RDoc::Task
      RDOC_FILES = {
        'activesupport' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            lib/active_support/**/*.rb
          ),
          :exclude => 'lib/active_support/vendor/*'
        },

        'activerecord' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            lib/active_record/**/*.rb
          ),
          :exclude => 'lib/active_record/vendor/*'
        },

        'activemodel' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            lib/active_model/**/*.rb
          )
        },

        'actionpack' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            lib/abstract_controller/**/*.rb
            lib/action_controller/**/*.rb
            lib/action_dispatch/**/*.rb
            lib/action_view/**/*.rb
          ),
          :exclude => 'lib/action_controller/vendor/*'
        },

        'actionmailer' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            lib/action_mailer/**/*.rb
          ),
          :exclude => 'ib/action_mailer/vendor/*'
        },

        'railties' => {
          :include => %w(
            README.rdoc
            CHANGELOG.md
            MIT-LICENSE
            lib/**/*.rb
          )
        }
      }

      def initialize(name)
        super

        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'
        options << '-g' # link to GitHub, SDoc flag

        configure_rdoc_files

        before_running_rdoc do
          setup_horo_variables
        end
      end

      # Hack, ignore the desc calls performed by the original initializer.
      def desc(description)
        # no-op
      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
      end

      def api_main
        'railties/RDOC_MAIN.rdoc'
      end

      def api_dir
        'doc/rdoc'
      end

      def component_root_dir(component)
        component
      end

      def setup_horo_variables
        ENV['HORO_PROJECT_NAME']    = 'Ruby on Rails'
        ENV['HORO_PROJECT_VERSION'] = "master@#{`git rev-parse HEAD`[0, 7]}"
      end
    end
  end
end