mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
149 lines
No EOL
3.9 KiB
Ruby
149 lines
No EOL
3.9 KiB
Ruby
$: << File.join("doc")
|
|
require 'rubygems'
|
|
require 'rdoc/rdoc'
|
|
require 'fileutils'
|
|
require 'erb'
|
|
|
|
module Merb
|
|
|
|
class GemNotFoundException < Exception
|
|
end
|
|
|
|
module DocMethods
|
|
def setup_gem_path
|
|
if File.directory?(gems_dir = File.join(File.dirname(__FILE__), 'gems'))
|
|
$BUNDLE = true; Gem.clear_paths; Gem.path.unshift(gems_dir)
|
|
end
|
|
end
|
|
|
|
def get_more
|
|
libs = []
|
|
more_library = find_library("merb-more")
|
|
File.open("#{more_library}/lib/merb-more.rb").read.each_line do |line|
|
|
if line['require']
|
|
libs << line.gsub("require '", '').gsub("'\n", '')
|
|
end
|
|
end
|
|
return libs
|
|
end
|
|
|
|
def generate_documentation(file_list, destination, arguments = [])
|
|
output_dir = File.join("/../doc", "rdoc", destination)
|
|
FileUtils.rm_rf(output_dir)
|
|
|
|
arguments += [
|
|
"--fmt", "merb",
|
|
"--op", output_dir
|
|
]
|
|
RDoc::RDoc.new.document(arguments + file_list)
|
|
AdvancedDoc.new.index
|
|
end
|
|
|
|
def find_library(directory_snippet)
|
|
gem_dir = nil
|
|
Gem.path.find do |path|
|
|
dir = Dir.glob("#{path}/gems/#{directory_snippet}*")
|
|
dir.empty? ? false : gem_dir = dir.last
|
|
end
|
|
raise GemNotFoundException if gem_dir.nil?
|
|
return gem_dir
|
|
end
|
|
|
|
def get_file_list(directory_snippet)
|
|
gem_dir = find_library(directory_snippet)
|
|
files = Dir.glob("#{gem_dir}/**/lib/**/*.rb")
|
|
files += ["#{gem_dir}/README"] if File.exists?("#{gem_dir}/README")
|
|
return files
|
|
end
|
|
end
|
|
|
|
class AdvancedDoc < Thor
|
|
|
|
group 'core'
|
|
include DocMethods
|
|
|
|
def initialize
|
|
super
|
|
setup_gem_path
|
|
end
|
|
|
|
desc 'index', "Regenerate the index file for your framework documentation"
|
|
def index
|
|
@directories = Dir.entries(File.join(File.dirname(__FILE__) + "/../", "doc", "rdoc"))
|
|
@directories.delete(".")
|
|
@directories.delete("..")
|
|
@directories.delete("generators")
|
|
@directories.delete("index.html")
|
|
index_template = File.read(File.join("doc", "rdoc", "generators", "template", "merb", "index.html.erb"))
|
|
|
|
File.open(File.join("doc", "rdoc", "index.html"), "w") do |file|
|
|
file.write(ERB.new(index_template).result(binding))
|
|
end
|
|
end
|
|
|
|
desc 'plugins', 'Generate the rdoc for each merb-plugins seperatly'
|
|
def plugins
|
|
libs = ["merb_activerecord", "merb_builder", "merb_jquery", "merb_laszlo", "merb_parts", "merb_screw_unit", "merb_sequel", "merb_stories", "merb_test_unit"]
|
|
|
|
libs.each do |lib|
|
|
options[:gem] = lib
|
|
gem
|
|
end
|
|
end
|
|
|
|
desc 'more', 'Generate the rdoc for each merb-more gem seperatly'
|
|
def more
|
|
libs = get_more
|
|
libs.each do |lib|
|
|
options[:gem] = lib
|
|
gem
|
|
end
|
|
end
|
|
|
|
desc 'core', 'Generate the rdoc for merb-core'
|
|
def core
|
|
options[:gem] = "merb-core"
|
|
gem
|
|
end
|
|
|
|
desc 'gem', 'Generate the rdoc for a specific gem'
|
|
method_options "--gem" => :required
|
|
def gem
|
|
file_list = get_file_list(options[:gem])
|
|
readme = File.join(find_library("merb-core"), "README")
|
|
generate_documentation(file_list, options[:gem], ["-m", readme])
|
|
rescue GemNotFoundException
|
|
puts "Can not find the gem in the gem path #{options[:gem]}"
|
|
end
|
|
|
|
end
|
|
|
|
class Doc < Thor
|
|
|
|
include DocMethods
|
|
|
|
def initialize
|
|
super
|
|
setup_gem_path
|
|
|
|
end
|
|
|
|
desc 'stack', 'Generate the rdoc for merb-core, merb-more merged together'
|
|
def stack
|
|
libs = ["merb"]
|
|
|
|
file_list = []
|
|
libs.each do |gem_name|
|
|
begin
|
|
file_list += get_file_list(gem_name)
|
|
rescue GemNotFoundException
|
|
puts "Could not find #{gem_name} in #{Gem.path}. Continuing with out it."
|
|
end
|
|
end
|
|
readme = File.join(find_library("merb"), "README")
|
|
generate_documentation(file_list, "stack", ["-m", readme])
|
|
end
|
|
|
|
end
|
|
|
|
end |