class SdocAll::Base
Constants
- BASE_PATH
- DOCS_PATH
- PUBLIC_PATH
Attributes
config[R]
Protected Class Methods
add_merge_task(options = {})
click to toggle source
# File lib/sdoc_all/base.rb, line 128 def add_merge_task(options = {}) @@tasks << MergeTask.new(options) end
add_task(options = {})
click to toggle source
# File lib/sdoc_all/base.rb, line 124 def add_task(options = {}) @@tasks << Task.new(options) end
base_path()
click to toggle source
# File lib/sdoc_all/base.rb, line 51 def base_path BASE_PATH end
chdir(path, &block)
click to toggle source
# File lib/sdoc_all/base.rb, line 182 def chdir(path, &block) path = Pathname(path) dirs.push(path.expand_path) Dir.chdir(path, &block) ensure dirs.pop end
clear()
click to toggle source
# File lib/sdoc_all/base.rb, line 89 def clear entries.clear end
dirs()
click to toggle source
# File lib/sdoc_all/base.rb, line 178 def dirs @@dirs ||= [] end
docs_path()
click to toggle source
# File lib/sdoc_all/base.rb, line 55 def docs_path DOCS_PATH.tap(&:mkpath) end
dry_run!()
click to toggle source
# File lib/sdoc_all/base.rb, line 38 def dry_run! @@dry_run = true end
dry_run?()
click to toggle source
# File lib/sdoc_all/base.rb, line 41 def dry_run? defined?(@@dry_run) && @@dry_run end
entries()
click to toggle source
# File lib/sdoc_all/base.rb, line 85 def entries @entries ||= [] end
inherited(subclass)
click to toggle source
# File lib/sdoc_all/base.rb, line 81 def inherited(subclass) subclasses[subclass.short_name] = subclass end
output_for_verbose_level(n) { || ... }
click to toggle source
# File lib/sdoc_all/base.rb, line 197 def output_for_verbose_level(n) if verbose_level >= n yield else old_stdout = $stdout old_stderr = $stderr dev_null = File.open('/dev/null', 'w') begin $stdout = dev_null $stderr = dev_null yield ensure $stdout = old_stdout $stderr = old_stderr dev_null.close end end end
public_path()
click to toggle source
# File lib/sdoc_all/base.rb, line 59 def public_path PUBLIC_PATH end
remove_if_present(path)
click to toggle source
# File lib/sdoc_all/base.rb, line 170 def remove_if_present(path) path = Pathname(path) if path.exist? puts "rm -r #{path.to_s.shellescape}".magenta FileUtils.remove_entry(path) unless dry_run? end end
short_name()
click to toggle source
# File lib/sdoc_all/base.rb, line 67 def short_name name.demodulize.underscore end
sources_path()
click to toggle source
# File lib/sdoc_all/base.rb, line 71 def sources_path Pathname.new("sources/#{short_name}").tap do |path| path.mkpath end end
subclasses()
click to toggle source
# File lib/sdoc_all/base.rb, line 63 def subclasses @subclasses ||= {} end
system(*args)
click to toggle source
# File lib/sdoc_all/base.rb, line 132 def system(*args) args = args.map(&:to_s) command = args.length == 1 ? args.first : args.shelljoin if verbose_level >= 1 puts [dirs.last && "cd #{dirs.last}", command].compact.join('; ').shrink(250).blue end unless dry_run? if verbose_level >= 2 Kernel.system(*args) else rd, wr = IO::pipe pid = fork{ rd.close STDOUT.reopen(wr) STDERR.reopen(wr) wr.close exec(*args) } wr.close begin true while line = rd.gets ensure rd.close unless rd.closed? Process.wait(pid) end end unless $?.success? if $?.signaled? raise SignalException.new($?.termsig) else abort("failed: #{command}") end end end end
tasks(options = {})
click to toggle source
# File lib/sdoc_all/base.rb, line 104 def tasks(options = {}) @@tasks = [] entries.with_progress('configuring').each do |entry| entry.add_tasks(options) end subclasses.values.each do |subclass| unless subclass.used_sources.empty? paths = FileList.new paths.include(subclass.sources_path + '*') subclass.used_sources.each do |path| paths.exclude(path) end paths.resolve.each do |path| remove_if_present(path) end end end @@tasks end
to_document(type, config)
click to toggle source
# File lib/sdoc_all/base.rb, line 93 def to_document(type, config) type = type.to_s config.symbolize_keys! if config.is_a?(Hash) subclass = subclasses[type] || subclasses[type.singularize] || subclasses[type.pluralize] if subclass entries << subclass.new(config) else raise ConfigError.new("don't know how to build \"#{type}\" => #{config.inspect}") end end
used_sources()
click to toggle source
# File lib/sdoc_all/base.rb, line 77 def used_sources @used_sources ||= [] end
verbose_level()
click to toggle source
# File lib/sdoc_all/base.rb, line 47 def verbose_level defined?(@@verbose_level) ? @@verbose_level : 0 end
verbose_level=(val)
click to toggle source
# File lib/sdoc_all/base.rb, line 44 def verbose_level=(val) @@verbose_level = val.to_i end
with_env(key, value) { || ... }
click to toggle source
# File lib/sdoc_all/base.rb, line 190 def with_env(key, value) old_value, ENV[key] = ENV[key], value yield ensure ENV[key] = old_value end
Protected Instance Methods
config_exclude_option(config)
click to toggle source
# File lib/sdoc_all/base.rb, line 21 def config_exclude_option(config) if exclude = config.delete(:exclude) [exclude].flatten.map(&:to_s).map(&:downcase) else [] end end
config_only_option(config)
click to toggle source
# File lib/sdoc_all/base.rb, line 15 def config_only_option(config) if only = config.delete(:only) [only].flatten.map(&:to_s).map(&:downcase) end end
raise_unknown_options_if_not_blank!(config)
click to toggle source
# File lib/sdoc_all/base.rb, line 9 def raise_unknown_options_if_not_blank!(config) unless config.blank? raise ConfigError.new("unknown options for \"#{self.class.short_name}\": #{config.inspect}") end end
sources_path()
click to toggle source
# File lib/sdoc_all/base.rb, line 29 def sources_path self.class.sources_path end