dev 1.0.14 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/lib/dev/Dep.rb +85 -0
  2. data/lib/dev/Project.rb +83 -26
  3. data/lib/dev/Tasks.rb +5 -2
  4. metadata +16 -15
data/lib/dev/Dep.rb ADDED
@@ -0,0 +1,85 @@
1
+ module Dev
2
+
3
+ #PROJECT = Dev::Project.new( {
4
+ # name: 'Musco.Cs.Framework',
5
+ # type: 'C#',
6
+ # dep: { nunit:{uri: 'svn://denver-svn/ThirdParty/export/NUnit/2.5.10.11092',
7
+ # dir: 'ThirdParty/NUnit/2.5.10.11092'},
8
+ # specflow:{uri: 'svn://denver-svn/ThirdParty/export/SpecFlow/1.8.1',
9
+ # dir: 'ThirdParty/SpecFlow/1.8.1'},
10
+ # interface:{uri: 'svn://denver-svn/Musco.Cs/Interface/trunk@#{INTERFACE_REV}',
11
+ # rake: 'default', cache: 'true' }
12
+ # } ,
13
+ # replace: { interface: { glob: '*.csproj',
14
+ # search: /Musco.Cs\\Interface\\trunk@[\d]+/,
15
+ # replace: "Musco.Cs\\Interface\\trunk@#{INTERFACE_REV}" } }
16
+ #} )
17
+
18
+ # uri:
19
+ # dir:
20
+ # rake:
21
+ # cache:
22
+ class Dep < Hash
23
+
24
+ # constructor that accepts a hash
25
+ def initialize(hash,init_defaults=true)
26
+ hash.each { |name,value| self[name]=value }
27
+ end
28
+
29
+ def get_rel_dir
30
+ return Dev::Environment.expand_string_variables(self[:dir]) unless self[:dir].nil?
31
+ uri=Dev::Environment.expand_string_variables(self[:uri])
32
+ uri_words=uri.split('/')
33
+ while(uri_words.length > 3) do
34
+ uri_words.shift
35
+ end
36
+ return uri_words.join('/')
37
+ end
38
+
39
+ def get_dep_dir
40
+ return Dev::Environment.dev_root + "/dep/" + get_rel_dir
41
+ end
42
+
43
+ def get_wrk_dir
44
+ return Dev::Environment.dev_root + "/wrk/" + get_rel_dir unless get_rel_dir.include?("@")
45
+ return Dev::Environment.dev_root + "/wrk/" + get_rel_dir.split("@")[0]
46
+ end
47
+
48
+ def get_export_command(local_dir)
49
+ unless self[:uri].nil?
50
+ uri=Dev::Environment.expand_string_variables(self.get_value("uri"))
51
+ return "svn export #{uri} #{local_dir}"
52
+ end # unless
53
+ end
54
+
55
+ def get_rake_command
56
+ end
57
+
58
+
59
+ def setup_commands
60
+ array = Array.new
61
+ array << "<%SystemCall.new('#{get_export_command(get_dep_dir)}') unless File.exists?('#{get_dep_dir}')%>"
62
+ array << "<%puts ' #{get_dep_dir} exists.' if File.exist?('#{get_dep_dir}')%>"
63
+
64
+ unless self[:rake].nil?
65
+ array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}', cache:'true'}" unless self.get_value("cache").nil?
66
+ array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_dep_dir}'}" if self.get_value("cache").nil?
67
+ end
68
+
69
+ return array
70
+ end
71
+
72
+ def pull_commands
73
+ array = Array.new
74
+ if(File.exists?(get_wrk_dir))
75
+ unless self[:rake].nil?
76
+ array << "{cmd: 'rake pull', dir: '#{get_wrk_dir}'}"
77
+ array << "{cmd: 'rake #{self.get_value("rake").to_s}', dir: '#{get_wrk_dir}'}"
78
+ end
79
+ end
80
+
81
+ return array
82
+ end
83
+
84
+ end # class Dep
85
+ end # module Dev
data/lib/dev/Project.rb CHANGED
@@ -75,6 +75,20 @@ class Project < Hash
75
75
  end
76
76
  "?"
77
77
  end
78
+
79
+ def check
80
+ if !has_diff and File.exists?("default.taskstamp")
81
+ puts " no differences detected."
82
+ puts " default.taskstamp exists."
83
+ exit
84
+ end
85
+ puts " detected differences" if has_diff
86
+ puts " default.taskstamp does not exist" unless File.exists?("default.taskstamp")
87
+ end
88
+
89
+ def stamp_task(name)
90
+ File.open("#{name}.taskstamp","w") { |f| f.write(Time.now.to_s) }
91
+ end
78
92
 
79
93
  def replace
80
94
  #puts " "
@@ -114,17 +128,64 @@ class Project < Hash
114
128
  array_method("features")
115
129
  end
116
130
 
117
- def commit
131
+ def has_build_products
132
+ end
133
+
134
+ def has_diff
135
+ puts_debug "found .svn directory" if File.exists?(".svn")
118
136
  call=nil
119
137
  call=Dev::SystemCall.new('git diff') if File.exists?(".git")
120
138
  call=Dev::SystemCall.new('svn diff') if File.exists?(".svn")
121
139
  unless call.nil? || call.output.length==0
122
- array_method("commit")
140
+ puts_debug "call command: " + call.command unless call.nil?
141
+ puts_debug "diff output: " + call.output unless call.nil?
142
+ return true # differences detected
123
143
  else
124
- puts " no differences detected"
144
+ puts_debug "call is nil" if call.nil?
145
+ puts_debug "call command: " + call.command unless call.nil?
146
+ puts_debug "diff output: " + call.output unless call.nil?
147
+ return false # no differences
125
148
  end
126
149
  end
127
150
 
151
+ def commit
152
+ puts " no differences detected" unless has_diff
153
+ array_method("commit") if has_diff
154
+ end
155
+
156
+ def rake_working_deps
157
+ unless dep_hash.nil?
158
+ dep_hash.each do |key,value|
159
+ if value.kind_of?(Hash)
160
+ # potential hash keys: uri, dir, rake
161
+ # uri is required
162
+ unless value.get_value("uri").nil?
163
+ uri=expand_project_variables(value.get_value("uri"))
164
+ uri_words=uri.split('/')
165
+ while(uri_words.length > 3) do
166
+ uri_words.shift
167
+ end
168
+ dir=self[:dev_root] + "/wrk/" + uri_words.join('/')
169
+ unless value.get_value("rake").nil?
170
+ if(File.exist?(dir))
171
+ rake_task=value.get_value("rake")
172
+ cmd_hash = {:cmd=> "rake #{rake_task}", :dir=> "#{dir}"}
173
+ end
174
+ end
175
+ end
176
+ end # unless value.get_value("uri").nil?
177
+ end
178
+ end # unless dep_hash.nil?
179
+ end
180
+
181
+ #def push
182
+ # loop over all 'rakeable' dependencies, if there is a local working copy, rake them
183
+
184
+ # upgrade dependencies
185
+
186
+ # rake this project
187
+ #end
188
+
128
189
  def info
129
190
  [ "file_count","loc" ].each do |k|
130
191
  puts_debug "set_default_value(#{k})"
@@ -183,28 +244,24 @@ class Project < Hash
183
244
  unless dep_hash.nil?
184
245
  dep_hash.each do |key,value|
185
246
  if value.kind_of?(Hash)
186
- # potential hash keys: uri, dir, rake
187
- # uri is required
188
- unless value.get_value("uri").nil?
189
- uri=expand_project_variables(value.get_value("uri"))
190
- uri_words=uri.split('/')
191
- while(uri_words.length > 3) do
192
- uri_words.shift
193
- end
194
- dir=uri_words.join('/')
195
- dir=expand_project_variables(value.get_value("dir")) unless value.get_value("dir").nil?
196
- dir=self[:dev_root] + "/dep/" + dir unless dir.include?(self[:dev_root])
197
-
198
- cmd = "svn export " + expand_project_variables(value.get_value("uri")) + " " + dir
199
- eval_cmd = "<%SystemCall.new('#{cmd}') unless File.exists?('#{dir}')%>"
200
- array << eval_cmd
201
- array << "<%puts ' #{dir} exists.' if File.exist?('#{dir}')%>"
202
-
203
- unless value.get_value("rake").nil?
204
- array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}', cache:'true'}" unless value.get_value("cache").nil?
205
- array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}'}" if value.get_value("cache").nil?
206
- end
207
- end
247
+
248
+ dep=Dev::Dep.new(value)
249
+ dep.setup_commands.each{|cmd| array << cmd}
250
+
251
+ end
252
+ end
253
+ end
254
+ end
255
+
256
+ if(key=="pull")
257
+ # dep,svn directives
258
+ dep_hash=self.get_value("dep")
259
+ unless dep_hash.nil?
260
+ dep_hash.each do |key,value|
261
+ if value.kind_of?(Hash)
262
+ dep=Dev::Dep.new(value)
263
+ dep.pull_commands.each{|cmd| array << cmd}
264
+ puts_debug "pull array: " + array.to_s
208
265
  end
209
266
  end
210
267
  end
@@ -252,7 +309,7 @@ class Project < Hash
252
309
  self[:type]="C#" if self[:type].nil?
253
310
 
254
311
  [ "version","dev_root","src_glob","scm_type",
255
- "paths","setup","compile","test","features","commit" ].each do |k|
312
+ "paths","add","pull","setup","compile","test","features","commit" ].each do |k|
256
313
  puts_debug "set_default_value(#{k})"
257
314
  set_default_value(k)
258
315
  end
data/lib/dev/Tasks.rb CHANGED
@@ -15,7 +15,7 @@ task :clean do; task_start "clean"; end
15
15
  task :clobber do; task_start "clobber"; end
16
16
 
17
17
  require 'rake/clean'
18
- CLEAN.include('*.gem','doc/*','obj/*')
18
+ CLEAN.include('*.gem','doc/*','obj/*','*.taskstamp')
19
19
  CLOBBER.include('doc','obj')
20
20
 
21
21
  def generate_tasks(project)
@@ -26,7 +26,9 @@ def generate_tasks(project)
26
26
  :commit=> { :desc=> 'commit' },
27
27
  :replace=> { :desc=> 'replace text' },
28
28
  :loc=> { :desc=> 'count the lines of code' },
29
- :setup=> { :desc=> 'setup the project environment' }
29
+ :setup=> { :desc=> 'setup the project environment' },
30
+ :pull=> { :desc=> 'rake working copies of dependencies' },
31
+ :check=> { :desc=> 'checks if the project default task may be skipped' }
30
32
  }
31
33
  if project[:type]=="gem" || project[:type]=="ruby"
32
34
  task_hash[:features] = { :desc=> 'tests cucumber features' }
@@ -40,6 +42,7 @@ def generate_tasks(project)
40
42
  ruby="task :#{name} do; task_start '#{name}'; PROJECT.#{name}; end"
41
43
  ruby="desc '#{desc}'; " + ruby unless desc.nil?
42
44
  unless task_defined(name)
45
+ puts_debug "defining task " + name
43
46
  eval(ruby)
44
47
  end
45
48
  end
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.14
4
+ version: 1.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &26797464 !ruby/object:Gem::Requirement
16
+ requirement: &23359488 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *26797464
24
+ version_requirements: *23359488
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: semver
27
- requirement: &26797188 !ruby/object:Gem::Requirement
27
+ requirement: &23358828 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *26797188
35
+ version_requirements: *23358828
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: countloc
38
- requirement: &26796936 !ruby/object:Gem::Requirement
38
+ requirement: &23358348 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *26796936
46
+ version_requirements: *23358348
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rainbow
49
- requirement: &26796684 !ruby/object:Gem::Requirement
49
+ requirement: &23357820 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *26796684
57
+ version_requirements: *23357820
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &26796432 !ruby/object:Gem::Requirement
60
+ requirement: &23357412 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *26796432
68
+ version_requirements: *23357412
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: cucumber
71
- requirement: &26796180 !ruby/object:Gem::Requirement
71
+ requirement: &23356932 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *26796180
79
+ version_requirements: *23356932
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: bundler
82
- requirement: &26795928 !ruby/object:Gem::Requirement
82
+ requirement: &23356152 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *26795928
90
+ version_requirements: *23356152
91
91
  description: development tasks
92
92
  email: lou.parslow@gmail.com
93
93
  executables:
@@ -97,6 +97,7 @@ extra_rdoc_files: []
97
97
  files:
98
98
  - LICENSE
99
99
  - README
100
+ - lib/dev/Dep.rb
100
101
  - lib/dev/Environment.rb
101
102
  - lib/dev/Hash.rb
102
103
  - lib/dev/Project.rb