dev 1.0.145 → 1.0.146

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dev.rb CHANGED
@@ -42,7 +42,7 @@ puts_debug "read " + __FILE__.foreground(:green)
42
42
  #require "#{File.dirname(__FILE__)}/dev/Environment.rb"
43
43
  #require "#{File.dirname(__FILE__)}/dev/Hash.rb"
44
44
  #require "#{File.dirname(__FILE__)}/dev/SystemCall.rb"
45
- ["Tasks","Environment","Hash","SystemCall","Database"].each{ |f| require "#{File.dirname(__FILE__)}/dev/#{f}.rb" }
45
+ ["Environment","Hash","SystemCall","Database","BoostBuild","Project","Commands","Tasks"].each{ |f| require "#{File.dirname(__FILE__)}/dev/#{f}.rb" }
46
46
  Dir["#{File.dirname(__FILE__)}/dev/**/*.rb"].each{ |f| require f }
47
47
 
48
48
  DEV_ROOT=Dev::Environment.dev_root
@@ -0,0 +1,257 @@
1
+ require_relative 'cmd/Compile.rb'
2
+ module Dev
3
+ class Commands < Hash
4
+
5
+ def initialize
6
+ refresh
7
+ end
8
+
9
+ def refresh
10
+ 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
120
+ end
121
+
122
+ def setup; execute_method "setup"; end
123
+ def compile; execute_method "compile"; end
124
+ def test; execute_method "test"; end
125
+ def update;execute_method("update");end
126
+ def replace; DEV.replace; end
127
+
128
+ def execute_method(name)
129
+ string_name=name.to_s
130
+ puts_debug "method_missing name=" + string_name
131
+
132
+ puts " no directives defined for #{string_name}" if self.get_value(string_name).nil? && string_name=="pull"
133
+ return if(self.get_value(string_name).nil?)
134
+ puts " no directives defined for #{string_name}" if self.get_value(string_name).length < 1
135
+ return if self.get_value(string_name).length < 1
136
+
137
+ value=self.get_value(string_name)
138
+ if value.kind_of?(Hash)
139
+ value.each { |name,value| Dev::Commands.execute_cmd(value); sleep(0.5) }
140
+ else
141
+ value.each { |c| Dev::Commands.execute_cmd(c); sleep(0.5) }
142
+ end
143
+ end
144
+
145
+ def self.execute_cmd(c)
146
+ # expand the command here....
147
+ command=Dev::Environment.expand_command(c)
148
+ puts_debug "command: " + command.to_s + " (in Project.execute_cmd)"
149
+ if c.include?('<%') && c.include?('%>')
150
+ #puts "Command: " + c
151
+ eval(c.gsub("<%","").gsub("%>",""))
152
+ else
153
+ # is the command a hash?
154
+ hash=c if c.kind_of?(Hash)
155
+ # can the command be converted to a hash?
156
+ hash=Dev::Environment.s_to_hash(command) if hash.nil?
157
+ call=nil
158
+ if(hash.nil?)
159
+ call=Dev::SystemCall.new(command)
160
+ else
161
+ call=Dev::SystemCall.new(hash)
162
+ end
163
+ call.puts_summary
164
+ end
165
+ end
166
+
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
175
+
176
+ def add
177
+ unless self[:src_glob].nil?
178
+ scm = Dev::Scm.new
179
+ return if scm.scm_type == "none"
180
+ if self[:src_glob].kind_of?(Hash)
181
+ self[:src_glob].each do |name,value|
182
+ puts " adding files " + value.to_s
183
+ scm.add_file_glob(value)
184
+ end
185
+ else
186
+ puts " adding files " + self[:src_glob].to_s
187
+ scm.add_file_glob(self[:src_glob])
188
+ end
189
+ end
190
+ end
191
+
192
+ def commit
193
+ scm = Dev::Scm.new
194
+ return if scm.scm_type == "none"
195
+ puts " no differences detected" unless has_diff
196
+ execute_method("commit") if has_diff
197
+ if File.exists?(".svn")
198
+ call=Dev::SystemCall.new('svn update')
199
+ call=Dev::SystemCall.new('svn info')
200
+ url = call.output.match(/URL: ([\d\w\.\:\/-]+)/)[1]
201
+ rev = call.output.match(/Last Changed Rev: ([\d]+)/)[1]
202
+ puts " #{url}@#{rev}"
203
+ end
204
+ end
205
+
206
+ def check
207
+ puts " default.taskstamp." + DEV.context + " exists." if File.exists?("default.taskstamp."+ DEV.context)
208
+ puts " default.taskstamp." + DEV.context + " does not exist" unless File.exists?("default.taskstamp." +DEV.context)
209
+
210
+ begin
211
+ hasdiff = has_diff
212
+ rescue
213
+ puts "has_diff threw an exception."
214
+ end
215
+
216
+ puts " no differences detected." unless hasdiff
217
+ puts " detected differences." if hasdiff
218
+
219
+ if File.exists?("default.taskstamp."+DEV.context) && !hasdiff
220
+ #puts " nothing to do"
221
+ update
222
+ exit
223
+ end
224
+
225
+ #if !has_diff and File.exists?("default.taskstamp."+context)
226
+ # puts " no differences detected."
227
+ # puts " default.taskstamp." + context + " exists."
228
+ # exit
229
+ #end
230
+ #puts " detected differences" if has_diff
231
+ #puts " default.taskstamp." + context + " does not exist" unless File.exists?("default.taskstamp." + context)
232
+ end
233
+
234
+ def has_diff
235
+ call=nil
236
+
237
+ if File.exists?(".git")
238
+ call=Dev::SystemCall.new('git status')
239
+ return true if call.output.include?("new file:")
240
+ return true if call.output.include?("deleted:")
241
+ return true if call.output.include?("modified:")
242
+ end
243
+
244
+ call=Dev::SystemCall.new('git diff --name-only') if File.exists?(".git")
245
+ call=Dev::SystemCall.new('svn diff') if File.exists?(".svn")
246
+
247
+ unless call.nil? || call.output.length==0
248
+ puts_debug call.output
249
+ return true # differences detected
250
+ else
251
+ return false # no differences
252
+ end
253
+ end
254
+ end # class Tasks
255
+ end # module Dev
256
+
257
+ CMD=Dev::Commands.new()
@@ -80,7 +80,36 @@ class Environment
80
80
  return machine.strip
81
81
  #return "unknown"
82
82
  end
83
-
83
+ def self.expand_command(command); Dev::Environment.expand_project_variables(command); end
84
+ def self.expand_project_variables(str)
85
+ if str.kind_of?(Hash)
86
+ expandedHash = Hash.new
87
+ str.each do |name,value|
88
+ expandedHash[name]=expand_project_variables(value)
89
+ end
90
+ return expandedHash
91
+ end
92
+
93
+ if str.kind_of?(Array)
94
+ expandedArray= Array.new
95
+ str.each{|e|expandedArray << expand_project_variable(e) }
96
+ return expandedArray
97
+ end
98
+
99
+ if str.kind_of?(String)
100
+ result=Dev::Environment.expand_string_variables(str) # expands ruby variables, e.g. '#{name}' to 'widget'
101
+ if result.include?('<') && result.include?('>')
102
+ result.scan(/(<[\w,]+>)/).each { |pvar| # expand project variables, e.g. '<name>' to 'widget
103
+ key = pvar[0].gsub("<","").gsub(">","") # '<paths,nunit>' to 'C:/wherever/NUnit.exe'
104
+ value=DEV.get_value(key)
105
+ result = result.gsub(pvar[0],value)
106
+ }
107
+ end
108
+ return result
109
+ end
110
+
111
+ return str
112
+ end
84
113
  end
85
114
 
86
115
  end # module Dev
@@ -1,5 +1,7 @@
1
1
  class Hash
2
2
 
3
+
4
+
3
5
  def get_value(key)
4
6
  return Hash.get_hash_value(self,key)
5
7
  end
@@ -48,6 +48,7 @@ class Project < Hash
48
48
  update_default_values
49
49
  db = Dev::Database.new
50
50
  db.set_branch_uri(self[:fullname],self[:scm_uri])
51
+
51
52
  end
52
53
  def update_default_values
53
54
  puts_debug "update_default_values"
@@ -61,13 +62,14 @@ class Project < Hash
61
62
  puts_debug "assigning self[:dep] to Hash.new"
62
63
  self[:dep]=Hash.new
63
64
  end
64
- self.delete(:setup) if self.has_key?(:setup)
65
- ["add","pull","setup","compile","test","features","commit","update" ].each do |k|
65
+
66
+ ["features" ].each do |k|
66
67
  puts_debug "set_default_value(#{k})"
67
68
  set_default_value(k)
68
69
  end
70
+ #CMD.refresh
69
71
  generate_auto_replace_directives
70
- generate_tasks(self)
72
+ #generate_tasks(self)
71
73
  end
72
74
 
73
75
  def get_default_value_name
@@ -146,6 +148,12 @@ class Project < Hash
146
148
  end
147
149
 
148
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"
149
157
  string_name=name.to_s
150
158
  puts_debug "method_missing name=" + string_name
151
159
 
@@ -162,59 +170,9 @@ class Project < Hash
162
170
  end
163
171
  end
164
172
 
165
- def execute_cmd(c)
166
- # expand the command here....
167
- command=expand_command(c)
168
- puts_debug "command: " + command.to_s + " (in Project.execute_cmd)"
169
- if c.include?('<%') && c.include?('%>')
170
- #puts "Command: " + c
171
- eval(c.gsub("<%","").gsub("%>",""))
172
- else
173
- # is the command a hash?
174
- hash=c if c.kind_of?(Hash)
175
- # can the command be converted to a hash?
176
- hash=Dev::Environment.s_to_hash(command) if hash.nil?
177
- call=nil
178
- if(hash.nil?)
179
- call=Dev::SystemCall.new(command)
180
- else
181
- call=Dev::SystemCall.new(hash)
182
- end
183
- call.puts_summary
184
- end
185
- end
173
+ def execute_cmd(c); Dev::Commands.execute_cmd(c); end
186
174
 
187
175
  def method_missing( name, *args ); array_method(name); end
188
- def expand_command(command); expand_project_variables(command); end
189
-
190
- def expand_project_variables(str)
191
- if str.kind_of?(Hash)
192
- expandedHash = Hash.new
193
- str.each do |name,value|
194
- expandedHash[name]=expand_project_variables(value)
195
- end
196
- return expandedHash
197
- end
198
-
199
- if str.kind_of?(Array)
200
- expandedArray= Array.new
201
- str.each{|e|expandedArray << expand_project_variable(e) }
202
- return expandedArray
203
- end
204
-
205
- if str.kind_of?(String)
206
- result=Dev::Environment.expand_string_variables(str) # expands ruby variables, e.g. '#{name}' to 'widget'
207
- if result.include?('<') && result.include?('>')
208
- result.scan(/(<[\w,]+>)/).each { |pvar| # expand project variables, e.g. '<name>' to 'widget
209
- key = pvar[0].gsub("<","").gsub(">","") # '<paths,nunit>' to 'C:/wherever/NUnit.exe'
210
- result = result.gsub(pvar[0],get_value(key))
211
- }
212
- end
213
- return result
214
- end
215
-
216
- return str
217
- end
218
176
 
219
177
  def loc_cmd
220
178
  cmd="countloc --recurse ."
@@ -228,21 +186,7 @@ class Project < Hash
228
186
  system(loc_cmd)
229
187
  end
230
188
 
231
- def add
232
- unless self[:src_glob].nil?
233
- scm = Dev::Scm.new
234
- return if scm.scm_type == "none"
235
- if self[:src_glob].kind_of?(Hash)
236
- self[:src_glob].each do |name,value|
237
- puts " adding files " + value.to_s
238
- scm.add_file_glob(value)
239
- end
240
- else
241
- puts " adding files " + self[:src_glob].to_s
242
- scm.add_file_glob(self[:src_glob])
243
- end
244
- end
245
- end
189
+
246
190
 
247
191
  def loc_total
248
192
  # parse the output for TOTAL LOC
@@ -259,33 +203,7 @@ class Project < Hash
259
203
  Dev::Environment.user + "." + Dev::Environment.machine
260
204
  end
261
205
 
262
- def check
263
- puts " default.taskstamp." + context + " exists." if File.exists?("default.taskstamp."+context)
264
- puts " default.taskstamp." + context + " does not exist" unless File.exists?("default.taskstamp."+context)
265
-
266
- begin
267
- hasdiff = has_diff
268
- rescue
269
- puts "has_diff threw an exception."
270
- end
271
-
272
- puts " no differences detected." unless hasdiff
273
- puts " detected differences." if hasdiff
274
-
275
- if File.exists?("default.taskstamp."+context) && !hasdiff
276
- #puts " nothing to do"
277
- update
278
- exit
279
- end
280
-
281
- #if !has_diff and File.exists?("default.taskstamp."+context)
282
- # puts " no differences detected."
283
- # puts " default.taskstamp." + context + " exists."
284
- # exit
285
- #end
286
- #puts " detected differences" if has_diff
287
- #puts " default.taskstamp." + context + " does not exist" unless File.exists?("default.taskstamp." + context)
288
- end
206
+
289
207
 
290
208
  def stamp_task(name)
291
209
  File.open("#{name}.taskstamp." + context,"w") { |f| f.write(Time.now.to_s) }
@@ -355,44 +273,11 @@ class Project < Hash
355
273
  def has_build_products
356
274
  end
357
275
 
358
- def has_diff
359
- call=nil
360
276
 
361
- if File.exists?(".git")
362
- call=Dev::SystemCall.new('git status')
363
- return true if call.output.include?("new file:")
364
- return true if call.output.include?("deleted:")
365
- return true if call.output.include?("modified:")
366
- end
367
-
368
- call=Dev::SystemCall.new('git diff --name-only') if File.exists?(".git")
369
- call=Dev::SystemCall.new('svn diff') if File.exists?(".svn")
370
-
371
- unless call.nil? || call.output.length==0
372
- puts_debug call.output
373
- return true # differences detected
374
- else
375
- return false # no differences
376
- end
377
- end
378
277
 
379
- def update
380
- array_method("update")
381
- end
382
278
 
383
- def commit
384
- scm = Dev::Scm.new
385
- return if scm.scm_type == "none"
386
- puts " no differences detected" unless has_diff
387
- array_method("commit") if has_diff
388
- if File.exists?(".svn")
389
- call=Dev::SystemCall.new('svn update')
390
- call=Dev::SystemCall.new('svn info')
391
- url = call.output.match(/URL: ([\d\w\.\:\/-]+)/)[1]
392
- rev = call.output.match(/Last Changed Rev: ([\d]+)/)[1]
393
- puts " #{url}@#{rev}"
394
- end
395
- end
279
+
280
+
396
281
 
397
282
  def rake_working_deps
398
283
  unless dep_hash.nil?
@@ -427,15 +312,7 @@ class Project < Hash
427
312
  Dev::Svn::update_revision_variables(filename)
428
313
  end
429
314
 
430
- def info
431
- #[ "file_count","loc" ].each do |k|
432
- # puts_debug "set_default_value(#{k})"
433
- # set_default_value(k)
434
- # end
435
- puts " "
436
- Hash.print_hash("",self)
437
- puts " "
438
- end
315
+
439
316
 
440
317
  def set_default_value(key)
441
318
  set_value(key,get_default_value(key)) if get_value(key).nil? && !get_default_value(key).nil?
@@ -446,116 +323,7 @@ class Project < Hash
446
323
  value=loc_total if key=="loc"
447
324
 
448
325
  array=Array.new
449
- if(key=="setup")
450
- puts_debug "assigning default values for setup"
451
- #array << "bundle install" if File.exists?("Gemfile")
452
- array << "{ :cmd=> 'bundle install', :capture_output=> false}" if File.exists?("Gemfile") && "#{RUBY_VERSION}">="1.8.7"
453
-
454
- # dep,svn directives
455
- puts_debug "checking for :dep hash...."
456
- dep_hash=self.get_value("dep")
457
- puts_debug "dep_hash is nil" if dep_hash.nil?
458
- unless dep_hash.nil?
459
- puts_debug "dep_hash is not nil"
460
- puts_debug "dep_hash is empty" if dep_hash.empty?
461
- dep_hash.each do |key,value|
462
- puts_debug ":dep[#{key}.to_s]"
463
- if value.kind_of?(Hash)
464
- dep=Dev::Dep.new(value)
465
- dep.setup_commands.each{|cmd| array << cmd}
466
- end
467
- end
468
- end
469
-
470
- if(!Dir.glob("*.csproj").nil? && Dir.glob("*.csproj").length > 0)
471
- array << "<%Dir.mkdir 'bin' unless File.exist?('bin')%>"
472
- array << "<%Dir.mkdir 'bin/Debug' unless File.exist?('bin/Debug')%>"
473
- array << "<%Dir.mkdir 'bin/Release' unless File.exist?('bin/Release')%>"
474
- end
475
- end
476
326
 
477
- if(key=="pull")
478
- # dep,svn directives
479
- dep_hash=self.get_value("dep")
480
- unless dep_hash.nil?
481
- dep_hash.each do |key,value|
482
- if value.kind_of?(Hash)
483
- dep=Dev::Dep.new(value)
484
- dep.pull_commands.each{|cmd| array << cmd}
485
- #puts_debug "pull array: " + array.to_s
486
- end
487
- end
488
- end
489
- end
490
- if(key=="compile")
491
- Dir.glob("*.gemspec").each { |gs|
492
- #array << "gem build #{gs}"
493
- array << "{ :cmd=> 'gem build #{gs}', :capture_output=> false}"
494
- } if self[:type]=="gem"
495
-
496
- Dir.glob("*.csproj").each{|cs|
497
- platforms = Dev::Project::extract_platforms(cs)
498
- platforms = ["AnyCPU"] if platforms.nil?
499
-
500
- puts_debug "for project " + cs + " platforms = " + platforms.to_s
501
- platforms.each{ |platform|
502
- if(platform=="AnyCPU")
503
- if(!has_key?(:any_release_compile_flags))
504
- self[:any_release_compile_flags]="/property:Configuration=Release /property:Platform=\"Any CPU\" /p:OutputPath=./bin/Release"
505
- end
506
- array<<"<paths,msbuild> #{cs} <any_release_compile_flags>" if RUBY_PLATFORM.include?("w32")
507
- array<<"xbuild #{cs} <any_release_compile_flags>" if !RUBY_PLATFORM.include?("w32")
508
- end
509
- if(platform=="x86")
510
- if(!has_key?(:x86_release_compile_flags))
511
- self[:x86_release_compile_flags]="/property:Configuration=Release /property:Platform=\"x86\" /p:OutputPath=./bin/x86/Release"
512
- end
513
- array<<"<paths,msbuild> #{cs} <x86_release_compile_flags>" if RUBY_PLATFORM.include?("w32")
514
- array<<"xbuild #{cs} <x86_release_compile_flags>" if !RUBY_PLATFORM.include?("w32")
515
- end
516
- if(platform=="x64")
517
- if(!has_key?(:x64_release_compile_flags))
518
- self[:x64_release_compile_flags]="/property:Configuration=Release /property:Platform=\"x64\" /p:OutputPath=./bin/x64/Release"
519
- end
520
- array<<"<paths,msbuild> #{cs} <x64_release_compile_flags>" if RUBY_PLATFORM.include?("w32")
521
- #array<<"xbuild #{cs} <x64_release_compile_flags>" if !RUBY_PLATFORM.include?("w32")
522
- end
523
- }
524
- }
525
-
526
- if self[:type]=="c++"
527
- if(!has_key?(:win32_release_compile_flags))
528
- self[:win32_release_compile_flags]="/property:Configuration=Release /property:Platform=\"win32\""
529
- end
530
- Dir.glob("*.sln").each{|sln|
531
- slntext=File.read(sln)
532
- if(slntext.include?("Format Version 10.00"))
533
- array<<"<paths,msbuild_vs9> #{sln} <win32_release_compile_flags>"
534
- else
535
- array<<"<paths,msbuild> #{sln} <win32_release_compile_flags>"
536
- end
537
- }
538
- end
539
-
540
- end
541
- if(key=="test")
542
-
543
- Dir.glob("*.gemspec").each { |gs|
544
- #array << "{cmd: 'gem install ./#{gs.gsub('.gemspec','')}-#{self[:version]}.gem', capture_output: false}"
545
- array << "{:cmd=> 'gem install #{gs.gsub('.gemspec','')}-#{self[:version]}.gem', :capture_output=> false}"
546
- #array << "gem install ./#{gs.gsub('.gemspec','')}-#{self[:version]}.gem"
547
- } if self[:type]=="gem"
548
-
549
- if self[:type]=="C#"
550
- Dir.glob("*.{Test.csproj,Features.csproj}").each { |cs|
551
- dll_name="bin/x86/Release/#{File.basename(cs,'.csproj')}.dll"
552
- array << "\"<paths,nunit>\" /nologo #{dll_name} /xml:#{dll_name}.nunit-results.xml" if RUBY_PLATFORM.include?("w32")
553
- array << "mono \"<paths,nunit>\" #{dll_name}" if !RUBY_PLATFORM.include?("w32")
554
- }
555
- end
556
-
557
-
558
- end
559
327
  if(key=="features")
560
328
  array << "cucumber features" if File.exists?("features") && Dir.glob("features/**/*.rb").length > 0
561
329
  end
@@ -563,13 +331,7 @@ class Project < Hash
563
331
  array << 'git diff' if File.exists?(".git")
564
332
  array << "{ :cmd=> 'svn diff', :capture_output=> false}" if File.exists?(".svn")
565
333
  end
566
- if(key=="commit")
567
- array << 'git commit -a -m "rake commit all"' if File.exists?(".git")
568
- array << 'svn commit -m "rake commit all"' if File.exists?(".svn")
569
- end
570
- if(key=="update")
571
- array << 'svn update' if File.exists?(".svn")
572
- end
334
+
573
335
 
574
336
  value=array if array.length > 0
575
337
 
@@ -578,15 +340,10 @@ class Project < Hash
578
340
 
579
341
 
580
342
 
581
- def self.extract_platforms(filename)
582
- results = Array::new
583
- text=File.read(filename)
584
- text.scan(/(\w+)<\/Platform/).each{ | var_match | results << var_match[0].to_s if !results.include?(var_match[0].to_s)}
585
- results
586
- end
343
+
587
344
  end
588
345
  end # module Dev
589
346
 
590
- PROJECT=Dev::Project.new(nil,true)
591
- PROJECT.refresh
592
- DEV=PROJECT
347
+ DEV=Dev::Project.new(nil,true)
348
+ DEV.refresh
349
+ PROJECT=DEV
@@ -33,7 +33,7 @@ def generate_task_hash(project)
33
33
  task_hash[:update]={ :desc=> 'updates changes from source code management' }
34
34
  end
35
35
 
36
- task_hash[:compile] = { :desc=> 'compile source code' } if project.has_key?(:compile)
36
+ task_hash[:compile] = { :desc=> 'compile source code' } if CMD.has_key?(:compile) || project.has_key?(:compile)
37
37
  task_hash[:replace] = { :desc=> 'replace text' } if project.has_key?(:replace)
38
38
 
39
39
  if project[:type]=="gem" || project[:type]=="ruby"
@@ -50,7 +50,8 @@ def generate_tasks(project)
50
50
  name=k.to_s
51
51
  desc=nil
52
52
  desc=v[:desc] if v.has_key?(:desc)
53
- ruby="task :#{name} do; task_start '#{name}'; PROJECT.#{name}; end"
53
+ #ruby="task :#{name} do; task_start '#{name}'; PROJECT.#{name}; end" if PROJECT.respond_to?(name)
54
+ ruby="task :#{name} do; task_start '#{name}'; CMD.#{name}; end"
54
55
  ruby="desc '#{desc}'; " + ruby unless desc.nil?
55
56
  if !task_exists?(name)
56
57
  puts_debug "defining task " + name
@@ -63,7 +64,7 @@ def generate_tasks(project)
63
64
  Rake.application.instance_variable_get('@tasks').delete('default')
64
65
  task_list=""
65
66
  ["check","add","setup","replace","compile","post_compile","test","commit","update"].each {|t|
66
- if(hash.has_key?(t.to_sym) || task_exists?(t) )
67
+ if(hash.has_key?(t.to_sym) || task_exists?(t) || CMD.has_key?(t.to_sym) )
67
68
  task_list = "#{task_list}," if task_list.length > 0
68
69
  task_list = "#{task_list} :#{t}"
69
70
  default_code = "#{default_code} :#{t},"
@@ -81,6 +82,15 @@ def task_exists?(name)
81
82
  end
82
83
  end
83
84
 
84
- # task :default => [:check,:add,:setup,:compile,:post_compile,:test] do
85
- # task :default => [:check, :add, :setup, :replace, :compile, :post_compile, :test, :commit] do
86
- # task :default => [ :check, :clean, :add, :setup, :replace, :compile, :test, :commit, :update, :dep_clean ] do
85
+ module Dev
86
+ class Tasks < Hash
87
+ def refresh
88
+ DEV.refresh
89
+ CMD.refresh
90
+ generate_tasks(DEV)
91
+ end
92
+ end # class Tasks
93
+ end # module Dev
94
+
95
+ TASKS=Dev::Tasks.new
96
+ TASKS.refresh
@@ -0,0 +1,39 @@
1
+ module Dev
2
+ module Cmd
3
+ class Compile
4
+ def self.get_auto_compile_directives
5
+ array=Array.new
6
+ windows=RUBY_PLATFORM.include?("w32")
7
+
8
+ # jamfiles
9
+
10
+ # vcxproj
11
+ Dir.glob('**/*.vcxproj').each { |vcxproj| array << "<paths,msbuild> #{vcxproj} /property:Configuration=Release /property:Platform=Win32" } if windows
12
+
13
+ # csproj
14
+ csbuild="<paths,msbuild>"
15
+ csbuild="xbuild" if !RUBY_PLATFORM.include?("w32")
16
+ Dir.glob('**/*.csproj').each { |csproj|
17
+ platforms=Dev::Cmd::Compile.extract_platforms(csproj)
18
+ platforms.each { |platform|
19
+ skip=(!RUBY_PLATFORM.include?("w32") && platform=="x64")
20
+ array << "#{csbuild} #{csproj} /property:Configuration=Release /property:Platform=\"#{platform}\" /p:OutputPath=./bin/#{platform}/Release" if !skip
21
+ }
22
+ }
23
+
24
+ # 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
29
+ end
30
+
31
+ def self.extract_platforms(filename)
32
+ results = Array::new
33
+ text=File.read(filename)
34
+ text.scan(/(\w+)<\/Platform/).each{ | var_match | results << var_match[0].to_s if !results.include?(var_match[0].to_s)}
35
+ results
36
+ end
37
+ end # class Compile
38
+ end # module Cmd
39
+ end # module Dev
@@ -0,0 +1,6 @@
1
+ module Dev
2
+ module Cmd
3
+ class Info
4
+ end # class Info
5
+ end # module Cmd
6
+ end # module Dev
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.145
4
+ version: 1.0.146
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -165,6 +165,9 @@ files:
165
165
  - LICENSE
166
166
  - README
167
167
  - lib/dev/BoostBuild.rb
168
+ - lib/dev/cmd/Compile.rb
169
+ - lib/dev/cmd/Info.rb
170
+ - lib/dev/Commands.rb
168
171
  - lib/dev/Database.rb
169
172
  - lib/dev/Dep.rb
170
173
  - lib/dev/Environment.rb