module Rake::Opt::AutoNamespace

Public Instance Methods

autoload_namespaces(task_dir) click to toggle source
# File lib/rake/opt/auto_namespace.rb, line 6
def autoload_namespaces(task_dir)
  task_dir = Pathname.new(task_dir)
  task_files = Dir["#{task_dir}/**/*.rb"]
  task_files.each do |task_file|
    task_file = Pathname.new(task_file)
    relative_path = task_file.relative_path_from(task_dir)
    load_into_namespaces(task_dir, task_file, get_namespaces(relative_path))
  end
end
get_namespaces(relative_path) click to toggle source
# File lib/rake/opt/auto_namespace.rb, line 16
def get_namespaces(relative_path)
  namespaces = []
  relative_path.each_filename do |f|
    namespaces << File.basename(f, '.rb')
  end
  return namespaces
end
load_into_namespaces(task_dir, file, namespaces, ns=nil, helpers_file=nil) click to toggle source
# File lib/rake/opt/auto_namespace.rb, line 24
def load_into_namespaces(task_dir, file, namespaces, ns=nil, helpers_file=nil)
  helpers_file ||= File.join(task_dir, namespaces.first, 'helpers.rb')

  if namespaces.empty?
    eval(File.read(helpers_file), binding, helpers_file) if File.exist?(helpers_file)
    eval(File.read(file), binding, file.to_path)
  else
    namespace namespaces.shift do |ns|
      load_into_namespaces(task_dir, file, namespaces, ns, helpers_file)
    end
  end
end