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
fetch(workarea)
Alias for: []
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?
key?(workarea_name)
Alias for: has_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