class Megam::WorkAreaLoader
Attributes
workarea_by_name[R]
workarea_paths[R]
workarea_preconfig[R]
Public Class Methods
new(*workarea_repo_paths)
click to toggle source
# File lib/megam/workarea_loader.rb 12 def initialize(*workarea_repo_paths) 13 workarea_repo_paths = workarea_repo_paths.flatten 14 raise ArgumentError, "You must specify at least one workarea repo path" if workarea_repo_paths.empty? 15 @workarea_by_name = Hashie::Mash.new 16 @workarea_paths = Hash.new {|h,k| h[k] = []} 17 @workarea_preconfig = Hash.new {|h,k| h[k] = []} 18 @transferarea_paths = Hash.new {|h,k| h[k] = []} 19 20 @workarea_repo_paths = workarea_repo_paths.map do |val| 21 temp_val = File.join(Megam::WorkArea.workarea_install_directory,val) 22 @workarea_preconfig[val] = temp_val 23 val = temp_val 24 end 25 load_workarea_repos 26 end
Public Instance Methods
[](workarea)
click to toggle source
# File lib/megam/workarea_loader.rb 56 def [](workarea) 57 if @workarea_by_name.has_key?(workarea.to_sym) or load_workarea_repo(workarea.to_sym) 58 @workarea_by_name[workarea.to_sym] 59 else 60 raise Exceptions::WorkAreaNotFound, "Cannot find a workarea named #{workarea.to_s}; did you forget to add it in WORKAREA_INSTALL_DIR variable ?" 61 end 62 end
Also aliased as: fetch
each() { |cname, workarea_by_name| ... }
click to toggle source
# File lib/megam/workarea_loader.rb 72 def each 73 @workarea_by_name.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |cname| 74 yield(cname, @workarea_by_name[cname]) 75 end 76 end
has_key?(workarea_name)
click to toggle source
# File lib/megam/workarea_loader.rb 66 def has_key?(workarea_name) 67 not self[workarea_name.to_sym].nil? 68 end
Also aliased as: key?
load_workarea_repo(work_repo_name, repo_paths=nil)
click to toggle source
# File lib/megam/workarea_loader.rb 41 def load_workarea_repo(work_repo_name, repo_paths=nil) 42 repo_paths ||= @workarea_repo_paths 43 work_repo_key = nil 44 45 repo_paths.each do |repo_path| 46 workarea_repo = File.join(repo_path, work_repo_name.to_s) 47 next unless File.directory?(workarea_repo) and Dir[File.join(repo_path, "**")].include?(workarea_repo) 48 work_repo_key = workarea_repo.dup.gsub(Megam::WorkArea.workarea_install_directory + File::SEPARATOR ,"") #remove the extra slash 49 @workarea_paths[work_repo_key] << workarea_repo 50 @workarea_by_name[work_repo_key] = workarea_repo 51 end 52 @workarea_by_name[work_repo_key] 53 end
load_workarea_repos()
click to toggle source
# File lib/megam/workarea_loader.rb 28 def load_workarea_repos 29 @workarea_repo_paths.each do |repo_path| 30 Dir[File.join(repo_path, "*")].each do |first_level_path| 31 load_workarea_repo(File.basename(first_level_path), [repo_path]) 32 Dir[File.join(first_level_path, "*")].each do |work_repo_path| 33 next unless File.directory?(work_repo_path) 34 load_workarea_repo(File.basename(work_repo_path), [first_level_path]) 35 end 36 end 37 end 38 @workarea_by_name 39 end
workarea_names()
click to toggle source
# File lib/megam/workarea_loader.rb 78 def workarea_names 79 @workarea_by_name.keys.sort 80 end