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.
- data/lib/dev/Dep.rb +85 -0
- data/lib/dev/Project.rb +83 -26
- data/lib/dev/Tasks.rb +5 -2
- 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
|
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
|
-
|
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
|
-
|
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
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *23359488
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: semver
|
27
|
-
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: *
|
35
|
+
version_requirements: *23358828
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: countloc
|
38
|
-
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: *
|
46
|
+
version_requirements: *23358348
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rainbow
|
49
|
-
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: *
|
57
|
+
version_requirements: *23357820
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
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: *
|
68
|
+
version_requirements: *23357412
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cucumber
|
71
|
-
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: *
|
79
|
+
version_requirements: *23356932
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: bundler
|
82
|
-
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: *
|
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
|