Class: Projects

Inherits:
Hash
  • Object
show all
Defined in:
lib/base/projects.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Hash

#execute, #to_html

Constructor Details

#initializeProjects

Returns a new instance of Projects.



13
14
15
# File 'lib/base/projects.rb', line 13

def initialize
	@filename=''
end

Instance Attribute Details

#filenameObject

Returns the value of attribute filename.



11
12
13
# File 'lib/base/projects.rb', line 11

def filename
  @filename
end

Class Method Details

.currentObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/base/projects.rb', line 90

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_filenameObject



85
86
87
88
# File 'lib/base/projects.rb', line 85

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



117
118
119
120
121
122
123
124
125
126
127
# File 'lib/base/projects.rb', line 117

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

#import(pattern = '') ⇒ Object



129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/base/projects.rb', line 129

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



36
37
38
39
40
# File 'lib/base/projects.rb', line 36

def list filter=''
	self.each{|k,v|
		puts "#{v.status} #{k}" if(filter.length == 0 || k.include?(filter))
	}
end

#make(args) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/base/projects.rb', line 42

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(filename = '') ⇒ Object



30
31
32
33
34
# File 'lib/base/projects.rb', line 30

def open filename=''
	@filename=filename if filename.length > 0
	JSON.parse(IO.read(@filename)).each{|k,v| self[k]=v}
	update_state
end

#pullObject



110
111
112
# File 'lib/base/projects.rb', line 110

def pull
	self.each{|k,v| v.pull if v.respond_to?("pull".to_sym)}
end

#rakeObject



113
114
115
# File 'lib/base/projects.rb', line 113

def rake
	self.each{|k,v| v.rake if v.respond_to?("rake".to_sym)}
end

#save(filename = '') ⇒ Object



25
26
27
28
# File 'lib/base/projects.rb', line 25

def save filename=''
	@filename=filename if !filename.nil? && filename.length > 0
	File.open(@filename,'w'){|f|f.write(JSON.pretty_generate(self))} if @filename.length > 0
end

#update(args) ⇒ Object



74
75
76
77
78
79
80
81
82
83
# File 'lib/base/projects.rb', line 74

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_stateObject



17
18
19
20
21
22
23
# File 'lib/base/projects.rb', line 17

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



63
64
65
66
67
68
69
70
71
72
# File 'lib/base/projects.rb', line 63

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