dev 1.0.146 → 1.0.147

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dev/Array.rb ADDED
@@ -0,0 +1,17 @@
1
+ class Array
2
+ # remove all auto generated entries
3
+ def strip_auto_entries
4
+ keep=Array.new
5
+ puts_debug "Array.strip_auto_entries"
6
+ self.each { |e|
7
+ if(!e.nil?)
8
+ h=nil
9
+ h=e if e.kind_of?(Hash)
10
+ h=Dev::Environment.s_to_hash(e)
11
+ keep << e if(!h.nil? && (!h.has_key?(:auto) || !h[:auto]))
12
+ end
13
+ }
14
+ self.clear
15
+ keep.each{|e| self << e}
16
+ end
17
+ end
data/lib/dev/Commands.rb CHANGED
@@ -1,129 +1,38 @@
1
- require_relative 'cmd/Compile.rb'
1
+ ["Compile","Replace","Setup","Test","Commit","Info","Update","Pull"].each{ |f| require_relative("cmd/#{f}.rb") }
2
+
2
3
  module Dev
3
4
  class Commands < Hash
4
5
 
5
6
  def initialize
7
+ self[:setup]=Dev::Cmd::Setup.new
8
+ self[:replace]=Dev::Cmd::Replace.new
9
+ self[:compile]=Dev::Cmd::Compile.new
10
+ self[:test]=Dev::Cmd::Test.new
11
+ self[:commit]=Dev::Cmd::Commit.new
12
+ self[:update]=Dev::Cmd::Update.new
13
+ self[:pull]=Dev::Cmd::Pull.new
6
14
  refresh
7
15
  end
8
16
 
9
17
  def refresh
10
18
  puts_debug "Dev::Command.refresh"
11
- self.delete :setup if self.has_key? :setup
12
- #self.delete :compile if self.has_key? :compile
13
- ["add","pull","setup","compile","test","features","commit","update"].each { |key|
14
- if self.has_key?(key.to_sym)
15
- puts_debug "CMD has key #{key}"
16
- else
17
- value=get_default_value(key.to_sym)
18
- self[key.to_sym]=value if !value.nil?
19
- puts_debug "CMD[#{(key.to_sym).to_s}]=#{value.to_s}" if !value.nil?
20
- puts_debug "default value for #{key} was nil"
21
- end
22
- }
23
- end
24
-
25
- def get_default_value(key)
26
- return get_default_value_setup if key==:setup
27
- return get_default_value_commit if key==:commit
28
- return get_default_value_test if key==:test
29
- return Dev::Cmd::Compile.get_auto_compile_directives if key==:compile
30
- return get_default_value_update if key==:update
31
- return get_default_value_pull if key==:pull
32
- nil
33
- end
34
-
35
- def get_default_value_commit
36
- array=Array.new
37
- array << 'git commit -a -m "rake commit all"' if File.exists?(".git")
38
- array << 'svn commit -m "rake commit all"' if File.exists?(".svn")
39
- array=nil if array.empty?
40
- return array
41
- end
42
-
43
- def get_default_value_update
44
- array=Array.new
45
- array << 'svn update' if File.exists?(".svn")
46
- array=nil if array.empty?
47
- return array
48
- end
49
- def get_default_value_setup
50
- array=Array.new
51
- puts_debug "assigning default values for setup"
52
- #array << "bundle install" if File.exists?("Gemfile")
53
- array << "{ :cmd=> 'bundle install', :capture_output=> false}" if File.exists?("Gemfile") && "#{RUBY_VERSION}">="1.8.7"
54
-
55
- # dep,svn directives
56
- puts_debug "checking for :dep hash...."
57
- dep_hash=DEV.get_value(:dep)
58
- puts_debug "dep_hash is nil" if dep_hash.nil?
59
- unless dep_hash.nil?
60
- puts_debug "dep_hash is not nil"
61
- puts_debug "dep_hash is empty" if dep_hash.empty?
62
- dep_hash.each do |key,value|
63
- puts_debug ":dep[#{key.to_s}]"
64
- if value.kind_of?(Hash)
65
- dep=Dev::Dep.new(value)
66
- dep.setup_commands.each{|cmd| array << cmd}
67
- end
68
- end
69
- end
70
-
71
- puts_debug "mkdir directives..."
72
- if(!Dir.glob("*.csproj").nil? && Dir.glob("*.csproj").length > 0)
73
- array << "<%Dir.mkdir 'bin' unless File.exist?('bin')%>"
74
- array << "<%Dir.mkdir 'bin/Debug' unless File.exist?('bin/Debug')%>"
75
- array << "<%Dir.mkdir 'bin/Release' unless File.exist?('bin/Release')%>"
76
- end
77
- array=nil if array.empty?
78
- return array
79
- end
80
-
81
- def get_default_value_pull
82
- array=Array.new
83
- # dep,svn directives
84
- dep_hash=DEV.get_value("dep")
85
- unless dep_hash.nil?
86
- dep_hash.each do |key,value|
87
- if value.kind_of?(Hash)
88
- dep=Dev::Dep.new(value)
89
- dep.pull_commands.each{|cmd| array << cmd}
90
- #puts_debug "pull array: " + array.to_s
91
- end
92
- end
93
- end
94
- array=nil if array.empty?
95
- return array
96
- end
97
-
98
- def get_default_value_test
99
- puts_debug "Dev::Commands.get_default_value_test"
100
- array=Array.new
101
-
102
-
103
- array << "rspec --pattern='**/*.spec'" if DEV[:file_count].has_key?(:spec) && DEV[:file_count][:spec] > 0
104
-
105
- Dir.glob("*.gemspec").each { |gs|
106
- array << "{cmd: 'gem install ./#{gs.gsub('.gemspec','')}-#{DEV[:version]}.gem', capture_output: true}"
107
- #array << "{cmd: 'gem install ./#{gs.gsub('.gemspec','')}-#{DEV[:version]}.gem', capture_output: false}"
108
- #array << "{:cmd=> 'gem install #{gs.gsub('.gemspec','')}-#{DEV[:version]}.gem', :capture_output=> false}"
109
- #array << "gem install ./#{gs.gsub('.gemspec','')}-#{DEV[:version]}.gem"
110
- } #if DEV[:type]=="gem"
111
-
112
- #if self[:type]=="C#"
113
- Dir.glob("*.{Test.csproj,Features.csproj}").each { |cs|
114
- dll_name="bin/x86/Release/#{File.basename(cs,'.csproj')}.dll"
115
- array << "\"<paths,nunit>\" /nologo #{dll_name} /xml:#{dll_name}.nunit-results.xml" if RUBY_PLATFORM.include?("w32")
116
- array << "mono \"<paths,nunit>\" #{dll_name}" if !RUBY_PLATFORM.include?("w32")
117
- }
118
- #end
119
- return array
19
+ self[:setup].refresh(DEV[:dep]) if self[:setup].respond_to?("refresh")
20
+ self[:replace].refresh(DEV[:dep]) if self[:replace].respond_to?("refresh")
21
+ self[:compile].refresh if self[:compile].respond_to?("refresh")
22
+ self[:test].refresh if self[:test].respond_to?("refresh")
23
+ self[:commit].refresh if self[:commit].respond_to?("refresh")
24
+ self[:update].refresh if self[:update].respond_to?("refresh")
25
+ self[:pull].refresh if self[:pull].respond_to?("refresh")
120
26
  end
121
27
 
28
+ def info; Dev::Cmd::Info.execute; end
122
29
  def setup; execute_method "setup"; end
123
30
  def compile; execute_method "compile"; end
124
31
  def test; execute_method "test"; end
125
32
  def update;execute_method("update");end
126
- def replace; DEV.replace; end
33
+ def replace
34
+ self[:replace].execute if self[:replace].respond_to?("execute")
35
+ end
127
36
 
128
37
  def execute_method(name)
129
38
  string_name=name.to_s
@@ -164,27 +73,22 @@ class Commands < Hash
164
73
  end
165
74
  end
166
75
 
167
- def info
168
- puts "DEV"
169
- Hash.print_hash("",DEV)
170
- puts " "
171
- puts "CMD"
172
- Hash.print_hash("",CMD)
173
- puts " "
174
- end
76
+
77
+
78
+
175
79
 
176
80
  def add
177
- unless self[:src_glob].nil?
81
+ unless DEV[:src_glob].nil?
178
82
  scm = Dev::Scm.new
179
83
  return if scm.scm_type == "none"
180
- if self[:src_glob].kind_of?(Hash)
181
- self[:src_glob].each do |name,value|
84
+ if DEV[:src_glob].kind_of?(Hash)
85
+ DEV[:src_glob].each do |name,value|
182
86
  puts " adding files " + value.to_s
183
87
  scm.add_file_glob(value)
184
88
  end
185
89
  else
186
- puts " adding files " + self[:src_glob].to_s
187
- scm.add_file_glob(self[:src_glob])
90
+ puts " adding files " + DEV[:src_glob].to_s
91
+ scm.add_file_glob(DEV[:src_glob])
188
92
  end
189
93
  end
190
94
  end
data/lib/dev/Dep.rb CHANGED
@@ -22,7 +22,7 @@ module Dev
22
22
  class Dep < Hash
23
23
 
24
24
  # constructor that accepts a hash
25
- def initialize(hash,init_defaults=true)
25
+ def initialize(hash)
26
26
  hash.each { |name,value| self[name]=value }
27
27
  end
28
28
 
@@ -87,8 +87,8 @@ class Dep < Hash
87
87
  unless self[:rake].nil?
88
88
  #array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', cache:'true'}" unless self.get_value("cache").nil?
89
89
  #array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}'}" if self.get_value("cache").nil?
90
- array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', cache:'true', capture_output: false}" unless self.get_value("cache").nil?
91
- array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', capture_output: false}" if self.get_value("cache").nil?
90
+ array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', cache:'true', capture_output: false, auto: true}" unless self.get_value("cache").nil?
91
+ array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', capture_output: false, auto: true}" if self.get_value("cache").nil?
92
92
  end
93
93
 
94
94
  return array
data/lib/dev/Deps.rb ADDED
@@ -0,0 +1,30 @@
1
+ module Dev
2
+ class Deps < Hash
3
+ def refresh
4
+ puts_debug "Dev::Project.refresh"
5
+ self.each{ |k,v|
6
+ if !v.nil? && v.kind_of?(Hash)
7
+ v[:dir]=get_dir(v) if !v.has_key?(:dir)
8
+ v[:rev]=get_rev(v) if !v.has_key?(:rev) && !get_rev(v).nil?
9
+ end
10
+ }
11
+ end
12
+
13
+ def get_dir(h)
14
+ uri=Dev::Environment.expand_string_variables(h[:uri])
15
+ uri_words=uri.split('/')
16
+ while(uri_words.length > 3) do
17
+ uri_words.shift
18
+ end
19
+ return uri_words.join('/')
20
+ end
21
+
22
+ def get_rev(h)
23
+ if(h.has_key?(:uri) && h[:uri].include?('@'))
24
+ return h[:uri].split('@')[1]
25
+ end
26
+ nil
27
+ end
28
+
29
+ end # class Deps
30
+ end # module Dev
data/lib/dev/Hash.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  class Hash
2
2
 
3
-
3
+ # remove all auto generated entries
4
+ def strip_auto_entries
5
+ self.each { |k,v| self.delete k if !v.nil? && v.kind_of?(Hash) && v.has_key?(:auto) && v[:auto] }
6
+ end
4
7
 
5
8
  def get_value(key)
6
9
  return Hash.get_hash_value(self,key)
data/lib/dev/Paths.rb ADDED
@@ -0,0 +1,23 @@
1
+ module Dev
2
+ class Paths < Hash
3
+ def initialize
4
+ ["v4.0.30319","v3.5","v3.0","v2.0.50727"].each { |v|
5
+ f="C:/WINDOWS/Microsoft.NET/Framework/#{v}/MSBuild.exe"
6
+ self[:msbuild]=f if File.exists?(f) && self[:msbuild].nil?
7
+ f="C:/WINDOWS/Microsoft.NET/Framework/#{v}/RegAsm.exe"
8
+ self[:regasm]=f if File.exists?(f) && self[:regasm].nil?
9
+ }
10
+
11
+ ["2.6.0.12051","2.5.10.11092"].each{ |v|
12
+ Dir.glob("#{Dev::Environment.dev_root}/dep/*/NUnit/#{v}/bin/nunit-console-x86.exe").each{|f|
13
+ self[:nunit]=f if File.exists?(f) && self[:nunit].nil?
14
+ }
15
+ if( !self.has_key?(:nunit) )
16
+ Dir.glob("#{Dev::Environment.dev_root}/dep/*/NUnit/#{v}/bin/*/nunit-console-x86.exe").each{|f|
17
+ self[:nunit]=f if File.exists?(f) && self[:nunit].nil?
18
+ }
19
+ end
20
+ }
21
+ end
22
+ end # class Paths
23
+ end # module Dev
data/lib/dev/Project.rb CHANGED
@@ -2,17 +2,13 @@ puts_debug "read " + __FILE__.foreground(:green)
2
2
  require 'semver'
3
3
  require 'rake'
4
4
 
5
- UNITTESTS=Array.new
6
5
  module Dev
7
-
8
6
  class Project < Hash
9
7
 
10
- def initialize(hash,init_defaults=true)
11
- hash = Hash.new if hash.nil?
12
- hash = defaults.merge(hash)
13
- puts_debug "initialize, copying hash values"
14
- hash.each { |name,value| self[name]=value } if !hash.nil?
15
- update_default_values if init_defaults
8
+ def initialize
9
+ defaults.each { |name,value| self[name]=value }
10
+ db = Dev::Database.new
11
+ db.set_branch_uri(self[:fullname],self[:scm_uri])
16
12
  end
17
13
 
18
14
  def defaults
@@ -39,38 +35,18 @@ class Project < Hash
39
35
  h[:file_count][ext.to_sym]=count if count > 0
40
36
  }
41
37
 
42
- tmp=get_default_value_paths
43
- h[:paths] = tmp if !tmp.nil?
38
+ h[:paths] = Dev::Paths.new
39
+ h[:dep]=Deps.new
44
40
  return h
45
41
  end
46
42
 
47
43
  def refresh
48
- update_default_values
49
- db = Dev::Database.new
50
- db.set_branch_uri(self[:fullname],self[:scm_uri])
51
-
44
+ puts_debug "Dev::Project.refresh"
45
+ self[:dep].refresh
46
+ #update_default_values
47
+ #db = Dev::Database.new
48
+ #db.set_branch_uri(self[:fullname],self[:scm_uri])
52
49
  end
53
- def update_default_values
54
- puts_debug "update_default_values"
55
- #newValues=Hash.new
56
- #self.each{ |k,v|
57
- # newValues[k.to_s]=v if !self.has_key?(k.to_s)
58
- #}
59
- #self.merge(newValues)
60
-
61
- if !self.has_key?(:dep) || self[:dep].nil?
62
- puts_debug "assigning self[:dep] to Hash.new"
63
- self[:dep]=Hash.new
64
- end
65
-
66
- ["features" ].each do |k|
67
- puts_debug "set_default_value(#{k})"
68
- set_default_value(k)
69
- end
70
- #CMD.refresh
71
- generate_auto_replace_directives
72
- #generate_tasks(self)
73
- end
74
50
 
75
51
  def get_default_value_name
76
52
  dirs=::Rake.original_dir().split('/')
@@ -118,62 +94,6 @@ class Project < Hash
118
94
  return nil
119
95
  end
120
96
 
121
- def get_default_value_paths
122
- hash=Hash.new
123
-
124
- ["v4.0.30319","v3.5","v3.0","v2.0.50727"].each { |v|
125
- f="C:/WINDOWS/Microsoft.NET/Framework/#{v}/MSBuild.exe"
126
- hash[:msbuild]=f if File.exists?(f) && hash[:msbuild].nil?
127
- f="C:/WINDOWS/Microsoft.NET/Framework/#{v}/RegAsm.exe"
128
- hash[:regasm]=f if File.exists?(f) && hash[:regasm].nil?
129
- }
130
-
131
- ["2.6.0.12051","2.5.10.11092"].each{ |v|
132
- Dir.glob("#{Dev::Environment.dev_root}/dep/*/NUnit/#{v}/bin/nunit-console-x86.exe").each{|f|
133
- hash[:nunit]=f if File.exists?(f) && hash[:nunit].nil?
134
- }
135
- if( !hash.has_key?(:nunit) )
136
- Dir.glob("#{Dev::Environment.dev_root}/dep/*/NUnit/#{v}/bin/*/nunit-console-x86.exe").each{|f|
137
- hash[:nunit]=f if File.exists?(f) && hash[:nunit].nil?
138
- }
139
- end
140
- }
141
-
142
- hash=nil if hash.length < 1
143
- return hash
144
- end
145
-
146
- def update_keys
147
- self.each{ |name,value| self[name]=value }
148
- end
149
-
150
- def array_method(name)
151
-
152
- # prefer CMD.execute_method
153
- puts "routing call to array_method(#{name}) to CMD.execute_method" if !CMD.get_value(name.to_s).nil?
154
- return CMD.execute_method(name) if !CMD.get_value(name.to_s).nil?
155
-
156
- puts "array_method(#{name}) executing on Dev::Project class, #{name} should be moved to CMD hash"
157
- string_name=name.to_s
158
- puts_debug "method_missing name=" + string_name
159
-
160
- puts " no directives defined for #{string_name}" if self.get_value(string_name).nil? && string_name=="pull"
161
- return if(self.get_value(string_name).nil?)
162
- puts " no directives defined for #{string_name}" if self.get_value(string_name).length < 1
163
- return if self.get_value(string_name).length < 1
164
-
165
- value=self.get_value(string_name)
166
- if value.kind_of?(Hash)
167
- value.each { |name,value| execute_cmd(value); sleep(0.5) }
168
- else
169
- value.each { |c| execute_cmd(c); sleep(0.5) }
170
- end
171
- end
172
-
173
- def execute_cmd(c); Dev::Commands.execute_cmd(c); end
174
-
175
- def method_missing( name, *args ); array_method(name); end
176
-
177
97
  def loc_cmd
178
98
  cmd="countloc --recurse ."
179
99
  cmd="countloc --recurse --mode ruby ." if self[:type]=="ruby" || self[:type]=="gem"
@@ -186,8 +106,6 @@ class Project < Hash
186
106
  system(loc_cmd)
187
107
  end
188
108
 
189
-
190
-
191
109
  def loc_total
192
110
  # parse the output for TOTAL LOC
193
111
  call=Dev::SystemCall.new(loc_cmd)
@@ -203,147 +121,13 @@ class Project < Hash
203
121
  Dev::Environment.user + "." + Dev::Environment.machine
204
122
  end
205
123
 
206
-
207
-
208
124
  def stamp_task(name)
209
125
  File.open("#{name}.taskstamp." + context,"w") { |f| f.write(Time.now.to_s) }
210
126
  end
211
127
 
212
- def generate_auto_replace_directives
213
- # only generate replace directives if a commit may be made...
214
- if(self[:scm_type]=="svn" || self[:scm_type]=="git")
215
- ["vcxproj","csproj"].each { |ext|
216
- if(self[:file_count].has_key?(ext.to_sym) && self[:file_count][ext.to_sym] > 0)
217
- self[:replace]=Hash.new if self[:replace].nil?
218
- self[:dep].each{ |k,v|
219
- if !self[:dep][k].has_key?(:rev) && self[:dep][k].has_key?(:uri)
220
- words=self[:dep][k][:uri].split('@')
221
- self[:dep][k][:rev]=words[1] if words.count==2
222
- end
223
- if self[:dep][k].has_key?(:rev) && self[:dep][k].has_key?(:dir) && !self[:replace].has_key?(k)
224
- group=self[:dep][k][:dir].split('/')[0]
225
- searchRegex=Regexp.new "#{group}\\\\#{k}\\\\[\\d]+"
226
- self[:replace][k]={ glob: "**/*.#{ext}", search: searchRegex, replace: "#{group}\\#{k}\\#{v[:rev]}" }
227
- end
228
- }
229
- end
230
- }
231
- end
232
- end
233
-
234
- def replace
235
- generate_auto_replace_directives
236
- #puts " "
237
- #puts "replace".foreground(:yellow).bright
238
- hash=self[:replace]
239
- if hash.nil?
240
- puts " no replace directives"
241
- end
242
- unless hash.nil?
243
- hash.each do |k,v|
244
- unless v.nil?
245
- file=v[:file]
246
- search=v[:search]
247
- replace=v[:replace]
248
- glob=v[:glob]
249
- unless search.nil? || replace.nil?
250
- unless file.nil?
251
- Dev::Environment.replace_text_in_file(file,search,replace)
252
- end
253
- unless glob.nil?
254
- Dev::Environment.replace_text_in_glob(glob,search,replace)
255
- end
256
- end
257
- end
258
- end
259
- end
260
- end
261
-
262
- def features
263
- if self[:type]=="C#" && File.exists?("bin/x86/Release/#{self[:name]}.Features.dll")
264
- call=Dev::SystemCall.new(expand_project_variables("<paths,nunit> /nologo bin/x86/Release/#{self[:name]}.Features.dll"))
265
- puts call.command
266
- puts call.output
267
- raise "exit_code=#{call.status.to_s}" + call.error unless call.status==0
268
- end
269
-
270
- array_method("features")
271
- end
272
-
273
- def has_build_products
274
- end
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
- def rake_working_deps
283
- unless dep_hash.nil?
284
- dep_hash.each do |key,value|
285
- if value.kind_of?(Hash)
286
- # potential hash keys: uri, dir, rake
287
- # uri is required
288
- unless value.get_value("uri").nil?
289
- uri=expand_project_variables(value.get_value("uri"))
290
- uri_words=uri.split('/')
291
- while(uri_words.length > 3) do
292
- uri_words.shift
293
- end
294
- dir=self[:dev_root] + "/wrk/" + uri_words.join('/')
295
- unless value.get_value("rake").nil?
296
- if(File.exist?(dir))
297
- rake_task=value.get_value("rake")
298
- cmd_hash = {:cmd=> "rake #{rake_task}", :dir=> "#{dir}"}
299
- end
300
- end
301
- end
302
- end # unless value.get_value("uri").nil?
303
- end
304
- end # unless dep_hash.nil?
305
- end
306
-
307
- def pull
308
- update unless has_diff
309
- array_method("pull")
310
- filename=Dir.pwd + "/rakefile.rb"
311
- puts " updating revision variables for " + filename
312
- Dev::Svn::update_revision_variables(filename)
313
- end
314
-
315
-
316
-
317
- def set_default_value(key)
318
- set_value(key,get_default_value(key)) if get_value(key).nil? && !get_default_value(key).nil?
319
- end
320
-
321
- def get_default_value(key)
322
-
323
- value=loc_total if key=="loc"
324
-
325
- array=Array.new
326
-
327
- if(key=="features")
328
- array << "cucumber features" if File.exists?("features") && Dir.glob("features/**/*.rb").length > 0
329
- end
330
- if(key=="has_diff")
331
- array << 'git diff' if File.exists?(".git")
332
- array << "{ :cmd=> 'svn diff', :capture_output=> false}" if File.exists?(".svn")
333
- end
334
-
335
-
336
- value=array if array.length > 0
337
-
338
- return value
339
- end
340
-
341
-
342
-
343
-
344
128
  end
345
129
  end # module Dev
346
130
 
347
- DEV=Dev::Project.new(nil,true)
131
+ DEV=Dev::Project.new#(nil,true)
348
132
  DEV.refresh
349
- PROJECT=DEV
133
+ PROJECT=DEV
@@ -154,36 +154,6 @@ class SystemCall
154
154
  puts_debug "status = " + status.to_s
155
155
  return status,output,error
156
156
  end
157
-
158
- def system3(working_dir,command,capture_output,capture_error)
159
- puts_debug "system3(" + working_dir.to_s + "," + command + ")"
160
- status = 0
161
- output = ""
162
- error = ""
163
- working_dir = Dir.pwd if working_dir.nil? || working_dir.empty?
164
- puts_debug " Dir.chdir(" + working_dir + ")"
165
- Dir.chdir(working_dir) do
166
- if(capture_output && capture_error)
167
- puts_debug " calling status,output,error=systemu(" + command + ")"
168
- status,output,error=systemu(command)
169
- else
170
- error=""
171
- if(capture_error)
172
- puts_debug " calling system(" + command + ")"
173
- system(command)
174
- status=$?.exitstatus
175
- output=""
176
- else
177
- puts_debug " calling output=`#{command}`"
178
- output=`#{command}`
179
- status=$?.exitstatus
180
- end
181
- end
182
- end
183
-
184
- puts_debug("status = " + status.to_s)
185
- return status,output,error
186
- end
187
157
 
188
158
  def puts_summary
189
159
  if(@status != 0)
data/lib/dev/Tasks.rb CHANGED
@@ -34,7 +34,7 @@ def generate_task_hash(project)
34
34
  end
35
35
 
36
36
  task_hash[:compile] = { :desc=> 'compile source code' } if CMD.has_key?(:compile) || project.has_key?(:compile)
37
- task_hash[:replace] = { :desc=> 'replace text' } if project.has_key?(:replace)
37
+ task_hash[:replace] = { :desc=> 'replace text' } if CMD.has_key?(:replace)
38
38
 
39
39
  if project[:type]=="gem" || project[:type]=="ruby"
40
40
  task_hash[:features] = { :desc=> 'tests cucumber features' }
@@ -85,6 +85,7 @@ end
85
85
  module Dev
86
86
  class Tasks < Hash
87
87
  def refresh
88
+ puts_debug "Dev::Tasks.refresh"
88
89
  DEV.refresh
89
90
  CMD.refresh
90
91
  generate_tasks(DEV)
@@ -0,0 +1,12 @@
1
+ module Dev
2
+ module Cmd
3
+ class Commit < Array
4
+ def refresh
5
+ strip_auto_entries
6
+ File.open('commit.message','w'){|f|f.puts "commit all"} if !File.exists?('commit.message')
7
+ self << "{:cmd=>'git commit -a -F commit.message',:auto=>true}" if File.exists?(".git")
8
+ self << "{:cmd=>'svn commit -F commit.message',:auto=>true}" if File.exists?(".svn")
9
+ end
10
+ end # class Compile
11
+ end # module Cmd
12
+ end # module Dev
@@ -1,14 +1,16 @@
1
1
  module Dev
2
2
  module Cmd
3
- class Compile
4
- def self.get_auto_compile_directives
5
- array=Array.new
3
+ class Compile < Array
4
+ def refresh
5
+
6
+ puts_debug "Dev::Cmd::Compile.refresh"
7
+ strip_auto_entries
6
8
  windows=RUBY_PLATFORM.include?("w32")
7
9
 
8
10
  # jamfiles
9
11
 
10
12
  # vcxproj
11
- Dir.glob('**/*.vcxproj').each { |vcxproj| array << "<paths,msbuild> #{vcxproj} /property:Configuration=Release /property:Platform=Win32" } if windows
13
+ Dir.glob('**/*.vcxproj').each { |vcxproj| self << "{:cmd=> '<paths,msbuild> #{vcxproj} /property:Configuration=Release /property:Platform=Win32', :auto=>true}" } if windows
12
14
 
13
15
  # csproj
14
16
  csbuild="<paths,msbuild>"
@@ -17,15 +19,12 @@ class Compile
17
19
  platforms=Dev::Cmd::Compile.extract_platforms(csproj)
18
20
  platforms.each { |platform|
19
21
  skip=(!RUBY_PLATFORM.include?("w32") && platform=="x64")
20
- array << "#{csbuild} #{csproj} /property:Configuration=Release /property:Platform=\"#{platform}\" /p:OutputPath=./bin/#{platform}/Release" if !skip
22
+ array << "{:cmd=> '#{csbuild} #{csproj} /property:Configuration=Release /property:Platform=\"#{platform}\" /p:OutputPath=./bin/#{platform}/Release', :auto=>true}" if !skip
21
23
  }
22
24
  }
23
25
 
24
26
  # gemspec
25
- Dir.glob("*.gemspec").each { |gs| array << "{ :cmd=> 'gem build #{gs}', :capture_output=> false}" }
26
-
27
- array=nil if array.empty?
28
- return array
27
+ Dir.glob("*.gemspec").each { |gs| self << "{:cmd=> 'gem build #{gs}', :capture_output=> false, :auto=> true}" }
29
28
  end
30
29
 
31
30
  def self.extract_platforms(filename)
data/lib/dev/cmd/Info.rb CHANGED
@@ -1,6 +1,14 @@
1
1
  module Dev
2
2
  module Cmd
3
3
  class Info
4
+ def self.execute
5
+ puts "DEV"
6
+ Hash.print_hash("",DEV)
7
+ puts " "
8
+ puts "CMD"
9
+ Hash.print_hash("",CMD)
10
+ puts " "
11
+ end
4
12
  end # class Info
5
13
  end # module Cmd
6
14
  end # module Dev
@@ -0,0 +1,33 @@
1
+ module Dev
2
+ module Cmd
3
+ class Pull < Array
4
+ def refresh
5
+ strip_auto_entries
6
+ end
7
+ end # class Compile
8
+ end # module Cmd
9
+ end # module Dev
10
+
11
+ #def pull
12
+ # update unless has_diff
13
+ # array_method("pull")
14
+ # filename=Dir.pwd + "/rakefile.rb"
15
+ # puts " updating revision variables for " + filename
16
+ # Dev::Svn::update_revision_variables(filename)
17
+ # end
18
+ # def get_default_value_pull
19
+ # array=Array.new
20
+ # # dep,svn directives
21
+ # dep_hash=DEV.get_value("dep")
22
+ # unless dep_hash.nil?
23
+ # dep_hash.each do |key,value|
24
+ # if value.kind_of?(Hash)
25
+ # dep=Dev::Dep.new(value)
26
+ # dep.pull_commands.each{|cmd| array << cmd}
27
+ # #puts_debug "pull array: " + array.to_s
28
+ # end
29
+ # end
30
+ # end
31
+ # array=nil if array.empty?
32
+ # return array
33
+ # end
@@ -0,0 +1,49 @@
1
+ module Dev
2
+ module Cmd
3
+ class Replace < Hash
4
+ def refresh(dep_hash)
5
+ puts_debug "Dev::Cmd::Replace.refresh"
6
+ # remove all auto generated entries
7
+ self.each { |k,v|
8
+ self.delete k if v.kind_of?(Hash) && v.has_key?(:auto) && v[:auto]
9
+ }
10
+
11
+ # auto generate replace entry based on dep values
12
+ if File.exists?(".svn") || File.exists?(".git")
13
+ ["vcxproj","csproj"].each { |ext|
14
+ if(Dir.glob("**/*.#{ext}").count > 0)
15
+ dep_hash.each{ |k,v|
16
+ if !v.nil? && v.kind_of?(Hash) && v.has_key?(:rev) && v.has_key?(:dir) && !has_key?(k)
17
+ group=v[:dir].split('/')[0]
18
+ searchRegex=Regexp.new "#{group}\\\\#{k}\\\\[\\d]+"
19
+ self[k]={ glob: "**/*.#{ext}", search: searchRegex, replace: "#{group}\\#{k}\\#{v[:rev]}", auto: true }
20
+ #self[k][:auto]=true
21
+ end
22
+ }
23
+ end
24
+ }
25
+ end
26
+ end
27
+
28
+ def execute
29
+ self.each do |k,v|
30
+ unless v.nil?
31
+ file=v[:file]
32
+ search=v[:search]
33
+ replace=v[:replace]
34
+ glob=v[:glob]
35
+ unless search.nil? || replace.nil?
36
+ unless file.nil?
37
+ Dev::Environment.replace_text_in_file(file,search,replace)
38
+ end
39
+ unless glob.nil?
40
+ Dev::Environment.replace_text_in_glob(glob,search,replace)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ end # class Replace
48
+ end # module Cmd
49
+ end # module Dev
@@ -0,0 +1,19 @@
1
+ module Dev
2
+ module Cmd
3
+ class Setup < Array
4
+
5
+ def refresh(dep_hash)
6
+ puts_debug "Dev::Cmd::Setup.get_auto_setup_directives"
7
+ strip_auto_entries
8
+ # auto generate setup entry based on dep values
9
+ dep_hash.each{ |k,v|
10
+ if !v.nil? && v.kind_of?(Hash)
11
+ dep=Dev::Dep.new(v)
12
+ dep.setup_commands.each{|cmd| self << cmd}
13
+ end
14
+ }
15
+ end
16
+
17
+ end # class Setup
18
+ end # module Cmd
19
+ end # module Dev
@@ -0,0 +1,25 @@
1
+ module Dev
2
+ module Cmd
3
+ class Test < Array
4
+ def refresh
5
+ strip_auto_entries
6
+
7
+ if(Dir.glob("**/*.spec").count > 0) #if DEV.has_key?(:file_count) && DEV[:file_count].has_key?(:spec) && DEV[:file_count][:spec] > 0
8
+ rspec_cmd='rspec --pattern="**/*.spec"'
9
+ self << "{:cmd=>'#{rspec_cmd}', :auto=>true}"
10
+ end
11
+
12
+ Dir.glob("*.gemspec").each { |gs|
13
+ self << "{:cmd=>'gem install ./#{gs.gsub('.gemspec','')}-#{DEV[:version]}.gem', :capture_output=>true, :auto=>true}"
14
+ }
15
+
16
+ Dir.glob("*.{Test.csproj,Features.csproj}").each { |cs|
17
+ dll_name="bin/x86/Release/#{File.basename(cs,'.csproj')}.dll"
18
+ self << "\"<paths,nunit>\" /nologo #{dll_name} /xml:#{dll_name}.nunit-results.xml" if RUBY_PLATFORM.include?("w32")
19
+ self << "mono \"<paths,nunit>\" #{dll_name}" if !RUBY_PLATFORM.include?("w32")
20
+ }
21
+
22
+ end
23
+ end # class Test
24
+ end # module Cmd
25
+ end # module Dev
@@ -0,0 +1,10 @@
1
+ module Dev
2
+ module Cmd
3
+ class Update < Array
4
+ def refresh
5
+ strip_auto_entries
6
+ self << "{:cmd=>'svn update',:auto=>true}" if File.exists?(".svn")
7
+ end
8
+ end # class Compile
9
+ end # module Cmd
10
+ end # module Dev
data/lib/dev.rb CHANGED
@@ -39,10 +39,7 @@ end
39
39
 
40
40
  puts_debug "read " + __FILE__.foreground(:green)
41
41
 
42
- #require "#{File.dirname(__FILE__)}/dev/Environment.rb"
43
- #require "#{File.dirname(__FILE__)}/dev/Hash.rb"
44
- #require "#{File.dirname(__FILE__)}/dev/SystemCall.rb"
45
- ["Environment","Hash","SystemCall","Database","BoostBuild","Project","Commands","Tasks"].each{ |f| require "#{File.dirname(__FILE__)}/dev/#{f}.rb" }
42
+ ["Environment","Array","Hash","SystemCall","Paths","Dep","Deps","Database","BoostBuild","Project","Commands","Tasks"].each{ |f| require "#{File.dirname(__FILE__)}/dev/#{f}.rb" }
46
43
  Dir["#{File.dirname(__FILE__)}/dev/**/*.rb"].each{ |f| require f }
47
44
 
48
45
  DEV_ROOT=Dev::Environment.dev_root
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.146
4
+ version: 1.0.147
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -164,15 +164,24 @@ extra_rdoc_files: []
164
164
  files:
165
165
  - LICENSE
166
166
  - README
167
+ - lib/dev/Array.rb
167
168
  - lib/dev/BoostBuild.rb
169
+ - lib/dev/cmd/Commit.rb
168
170
  - lib/dev/cmd/Compile.rb
169
171
  - lib/dev/cmd/Info.rb
172
+ - lib/dev/cmd/Pull.rb
173
+ - lib/dev/cmd/Replace.rb
174
+ - lib/dev/cmd/Setup.rb
175
+ - lib/dev/cmd/Test.rb
176
+ - lib/dev/cmd/Update.rb
170
177
  - lib/dev/Commands.rb
171
178
  - lib/dev/Database.rb
172
179
  - lib/dev/Dep.rb
180
+ - lib/dev/Deps.rb
173
181
  - lib/dev/Environment.rb
174
182
  - lib/dev/Hash.rb
175
183
  - lib/dev/MsBuild.rb
184
+ - lib/dev/Paths.rb
176
185
  - lib/dev/Project.rb
177
186
  - lib/dev/Scm.rb
178
187
  - lib/dev/Svn.rb