9
class GemNotFoundException < Exception
14
if File.directory?(gems_dir = File.join(File.dirname(__FILE__), 'gems'))
15
$BUNDLE = true; Gem.clear_paths; Gem.path.unshift(gems_dir)
21
more_library = find_library("merb-more")
22
File.open("#{more_library}/lib/merb-more.rb").read.each_line do |line|
24
libs << line.gsub("require '", '').gsub("'\n", '')
30
def generate_documentation(file_list, destination, arguments = [])
31
output_dir = File.join("/../doc", "rdoc", destination)
32
FileUtils.rm_rf(output_dir)
38
RDoc::RDoc.new.document(arguments + file_list)
42
def find_library(directory_snippet)
44
Gem.path.find do |path|
45
dir = Dir.glob("#{path}/gems/#{directory_snippet}*")
46
dir.empty? ? false : gem_dir = dir.last
48
raise GemNotFoundException if gem_dir.nil?
52
def get_file_list(directory_snippet)
53
gem_dir = find_library(directory_snippet)
54
files = Dir.glob("#{gem_dir}/**/lib/**/*.rb")
55
files += ["#{gem_dir}/README"] if File.exists?("#{gem_dir}/README")
60
class AdvancedDoc < Thor
70
desc 'index', "Regenerate the index file for your framework documentation"
72
@directories = Dir.entries(File.join(File.dirname(__FILE__) + "/../", "doc", "rdoc"))
73
@directories.delete(".")
74
@directories.delete("..")
75
@directories.delete("generators")
76
@directories.delete("index.html")
77
index_template = File.read(File.join("doc", "rdoc", "generators", "template", "merb", "index.html.erb"))
79
File.open(File.join("doc", "rdoc", "index.html"), "w") do |file|
80
file.write(ERB.new(index_template).result(binding))
84
desc 'plugins', 'Generate the rdoc for each merb-plugins seperatly'
86
libs = ["merb_activerecord", "merb_builder", "merb_jquery", "merb_laszlo", "merb_parts", "merb_screw_unit", "merb_sequel", "merb_stories", "merb_test_unit"]
94
desc 'more', 'Generate the rdoc for each merb-more gem seperatly'
103
desc 'core', 'Generate the rdoc for merb-core'
105
options[:gem] = "merb-core"
109
desc 'gem', 'Generate the rdoc for a specific gem'
110
method_options "--gem" => :required
112
file_list = get_file_list(options[:gem])
113
readme = File.join(find_library("merb-core"), "README")
114
generate_documentation(file_list, options[:gem], ["-m", readme])
115
rescue GemNotFoundException
116
puts "Can not find the gem in the gem path #{options[:gem]}"
131
desc 'stack', 'Generate the rdoc for merb-core, merb-more merged together'
136
libs.each do |gem_name|
138
file_list += get_file_list(gem_name)
139
rescue GemNotFoundException
140
puts "Could not find #{gem_name} in #{Gem.path}. Continuing with out it."
143
readme = File.join(find_library("merb"), "README")
144
generate_documentation(file_list, "stack", ["-m", readme])
b'\\ No newline at end of file'