Class: Projects
Instance Attribute Summary collapse
-
#dev ⇒ Object
Returns the value of attribute dev.
Class Method Summary collapse
Instance Method Summary collapse
- #add(args) ⇒ Object
- #filename ⇒ Object
- #import(pattern = '') ⇒ Object
-
#initialize(dev = nil) ⇒ Projects
constructor
A new instance of Projects.
- #list(filter = '') ⇒ Object
- #make(args) ⇒ Object
- #open ⇒ Object
- #pull ⇒ Object
- #rake ⇒ Object
- #save ⇒ Object
- #update(args) ⇒ Object
- #update_state ⇒ Object
- #work(args) ⇒ Object
Methods inherited from Hash
Constructor Details
#initialize(dev = nil) ⇒ Projects
Returns a new instance of Projects.
13 14 15 16 17 |
# File 'lib/base/projects.rb', line 13 def initialize dev=nil @dev=dev @dev=Dev.new if @dev.nil? open end |
Instance Attribute Details
#dev ⇒ Object
Returns the value of attribute dev.
11 12 13 |
# File 'lib/base/projects.rb', line 11 def dev @dev end |
Class Method Details
.current ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/base/projects.rb', line 98 def self.current project=nil url=Git.remote_origin url=Svn.url if url.length==0 if(Rake.application.original_dir.include?('/wrk/') && url.length > 0) project=Project.new(url) fullname=Rake.application.original_dir.gsub("#{Environment.dev_root}/wrk/",'') project[:fullname] = name if(name.length>0 && !name.include?(Environment.dev_root)) if(defined?(PROJECTS)) PROJECTS[name]=project if(!PROJECTS.has_key?(name)) project.each{|k,v|PROJECTS[name][k]=v} PROJECTS.save else project[:fullname]=name end end project end |
.user_projects_filename ⇒ Object
93 94 95 96 |
# File 'lib/base/projects.rb', line 93 def self.user_projects_filename FileUtils.mkdir_p("#{Environment.dev_root}/data") if(!File.exists?("#{Environment.dev_root}/data")) "#{Environment.dev_root}/data/PROJECTS.json" end |
Instance Method Details
#add(args) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/base/projects.rb', line 125 def add args if(args.length > 1) project=Project.new(args[1]) project[:fullname] = args[2] if args.length > 2 if(project.fullname.length > 0 && !self.has_key?(project.fullname)) puts "adding #{project.fullname}" self[project.fullname]=project self.save #Projects.user_projects_filename end end end |
#filename ⇒ Object
19 20 21 |
# File 'lib/base/projects.rb', line 19 def filename "#{@dev.get_env('DEV_ROOT')}/data/Projects.json" end |
#import(pattern = '') ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/base/projects.rb', line 137 def import pattern='' wrk="#{Environment.dev_root}/wrk" if File.exists?(wrk) Dir.chdir(wrk) do Dir.glob('**/rakefile.rb').each{|rakefile| rakedir=File.dirname(rakefile) url = Project.get_url rakedir #puts "checking #{url}" project = Project.new(Project.get_url(rakedir)) project[:fullname]=Project.get_fullname rakedir if(project.fullname.include?(':')) if(pattern.length==0 || project.fullname.include?(pattern)) if(project.fullname.length > 0 && !self.has_key?(project.fullname)) puts "importing #{project.fullname}" self[project.fullname]=project end end } end self.save Projects.user_projects_filename end end |
#list(filter = '') ⇒ Object
44 45 46 47 48 |
# File 'lib/base/projects.rb', line 44 def list filter='' self.each{|k,v| puts "#{v.status} #{k}" if(filter.length == 0 || k.include?(filter)) } end |
#make(args) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/base/projects.rb', line 50 def make args filter='' filter=args[1] if !args.nil? && args.length > 0 self.each{|k,v| if filter.nil? || filter.length==0 || k.include?(filter) tag=v.latest_tag if(tag.length > 0) logfile="#{Environment.dev_root}/log/#{v.fullname}/#{tag}/#{Environment.user}@#{Environment.machine}.json" if(!File.exists?(logfile)) puts "making #{k} #{tag}" if(!File.exists?(logfile)) rake_default=v.make tag puts rake_default.summary if !rake_default.nil? else rake_default=v.make tag puts rake_default.summary if !rake_default.nil? && rake_default[:exit_code] != 0 end end end } end |
#open ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/base/projects.rb', line 36 def open if File.exists? filename #@filename=filename if filename.length > 0 JSON.parse(IO.read(filename)).each{|k,v| self[k]=v} update_state end end |
#pull ⇒ Object
118 119 120 |
# File 'lib/base/projects.rb', line 118 def pull self.each{|k,v| v.pull if v.respond_to?("pull".to_sym)} end |
#rake ⇒ Object
121 122 123 |
# File 'lib/base/projects.rb', line 121 def rake self.each{|k,v| v.rake if v.respond_to?("rake".to_sym)} end |
#save ⇒ Object
31 32 33 34 |
# File 'lib/base/projects.rb', line 31 def save Dir.make File.dirname(filename) if !File.exists? File.dirname(filename) File.open(filename,'w'){|f|f.write(JSON.pretty_generate(self))} end |
#update(args) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/base/projects.rb', line 82 def update args filter='' filter=args[1] if !args.nil? && args.length > 0 self.each{|k,v| if filter.nil? || filter.length==0 || k.include?(filter) puts "updating #{v.fullname}" v.update end } end |
#update_state ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/base/projects.rb', line 23 def update_state self.each{|k,v| self[k]=Project.new(v) if(v.is_a?(String)) self[k]=Project.new(v) if(!v.is_a?(Project) && v.is_a?(Hash)) self[k][:fullname]=k } end |
#work(args) ⇒ Object
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/base/projects.rb', line 71 def work args filter=nil filter=args[1] if !args.nil? && args.length > 0 self.each{|k,v| if filter.nil? || filter.length==0 || k.to_s.include?(filter) last_work_time=nil v.work end } end |