dev 1.0.11 → 1.0.12
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/Environment.rb +0 -7
- data/lib/dev/Project.rb +13 -24
- data/lib/dev/SystemCall.rb +61 -4
- data/lib/dev/Tasks.rb +31 -59
- metadata +19 -17
data/lib/dev/Environment.rb
CHANGED
data/lib/dev/Project.rb
CHANGED
@@ -2,7 +2,6 @@ puts_debug "read " + __FILE__.foreground(:green)
|
|
2
2
|
require 'semver'
|
3
3
|
|
4
4
|
UNITTESTS=Array.new
|
5
|
-
|
6
5
|
module Dev
|
7
6
|
|
8
7
|
class Project < Hash
|
@@ -21,8 +20,6 @@ class Project < Hash
|
|
21
20
|
return
|
22
21
|
end
|
23
22
|
puts_debug "found directives for #{string_name}: #{self.get_value(string_name).to_s}"
|
24
|
-
puts " "
|
25
|
-
puts string_name.foreground(:yellow).bright
|
26
23
|
self.get_value(string_name).each{ |c|
|
27
24
|
# expand the command here....
|
28
25
|
command=expand_command(c)
|
@@ -41,23 +38,16 @@ class Project < Hash
|
|
41
38
|
call.puts_summary
|
42
39
|
end
|
43
40
|
}
|
44
|
-
puts " "
|
45
41
|
end
|
46
42
|
|
47
|
-
def method_missing( name, *args )
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
def expand_command(command)
|
52
|
-
result=expand_project_variables(command)
|
53
|
-
return result
|
54
|
-
end
|
43
|
+
def method_missing( name, *args ); array_method(name); end
|
44
|
+
def expand_command(command); expand_project_variables(command); end
|
55
45
|
|
56
46
|
def expand_project_variables(str)
|
57
|
-
result=Dev::Environment.expand_string_variables(str)
|
47
|
+
result=Dev::Environment.expand_string_variables(str) # expands ruby variables, e.g. '#{name}' to 'widget'
|
58
48
|
if result.include?('<') && result.include?('>')
|
59
|
-
result.scan(/(<[\w,]+>)/).each { |pvar|
|
60
|
-
key = pvar[0].gsub("<","").gsub(">","")
|
49
|
+
result.scan(/(<[\w,]+>)/).each { |pvar| # expand project variables, e.g. '<name>' to 'widget
|
50
|
+
key = pvar[0].gsub("<","").gsub(">","") # '<paths,nunit>' to 'C:/wherever/NUnit.exe'
|
61
51
|
result = result.gsub(pvar[0],get_value(key))
|
62
52
|
}
|
63
53
|
end
|
@@ -87,11 +77,15 @@ class Project < Hash
|
|
87
77
|
end
|
88
78
|
|
89
79
|
def replace
|
90
|
-
|
80
|
+
puts " "
|
81
|
+
puts "replace".foreground(:yellow).bright
|
82
|
+
hash=self[:replace]
|
83
|
+
if hash.nil?
|
84
|
+
puts " no replace directives"
|
85
|
+
end
|
91
86
|
unless hash.nil?
|
92
87
|
hash.each do |k,v|
|
93
88
|
unless v.nil?
|
94
|
-
# v[:file], v[:search], v[:replace],v[:glob]
|
95
89
|
file=v[:file]
|
96
90
|
search=v[:search]
|
97
91
|
replace=v[:replace]
|
@@ -158,7 +152,6 @@ class Project < Hash
|
|
158
152
|
value="**/*.{c,cpp,h,hpp,semver}" if key=="src_glob" && (self[:type]=="C++" || self[:type]=="c++" || self[:type]=="cpp")
|
159
153
|
value="**/*.{rb,feature,semver}" if key=="src_glob" && self[:type]=="ruby"
|
160
154
|
value="**/*.{rb,feature,gemspec,semver}" if key=="src_glob" && self[:type]=="gem"
|
161
|
-
#value=Dir.glob(self[:src_glob]).length.to_s if key=="file_count"
|
162
155
|
value=loc_total if key=="loc"
|
163
156
|
value="svn" if key=="scm_type" && File.exists?(".svn")
|
164
157
|
value="git" if key=="scm_type" && File.exists?(".git")
|
@@ -206,17 +199,13 @@ class Project < Hash
|
|
206
199
|
array << "<%puts ' #{dir} exists.'%>" if File.exists?(dir)
|
207
200
|
|
208
201
|
unless value.get_value("rake").nil?
|
209
|
-
array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}'}"
|
202
|
+
array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}', cache:'true'}" unless value.get_value("cache").nil?
|
203
|
+
array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}'}" if value.get_value("cache").nil?
|
210
204
|
end
|
211
205
|
end
|
212
206
|
end
|
213
207
|
end
|
214
208
|
end
|
215
|
-
|
216
|
-
#bootstrap << "cd lib" if File.exists?("lib/Gemfile")
|
217
|
-
#bootstrap << "cd lib;bundle install;cd .." if File.exists?("lib/Gemfile")
|
218
|
-
#bootstrap << "cd .." if File.exists?("lib/Gemfile")
|
219
|
-
#bootstrap << "<%exec_in_dir('bundle install','lib')%>" if File.exists?("lib/Gemfile")
|
220
209
|
end
|
221
210
|
if(key=="compile")
|
222
211
|
Dir.glob("*.gemspec").each { |gs| array << "gem build #{gs}" } if self[:type]=="gem"
|
data/lib/dev/SystemCall.rb
CHANGED
@@ -5,12 +5,13 @@ require 'tmpdir'
|
|
5
5
|
module Dev
|
6
6
|
|
7
7
|
class SystemCall
|
8
|
-
attr_accessor :output,:error,:status,:command,:start_time,:end_time,:timed_out,:dir
|
8
|
+
attr_accessor :output,:error,:status,:command,:start_time,:end_time,:timed_out,:dir,:cache
|
9
9
|
|
10
10
|
def initialize(cmd)
|
11
11
|
if(cmd.kind_of?(Hash))
|
12
12
|
@command=cmd[:cmd]
|
13
13
|
@dir=cmd[:dir] unless cmd[:dir].nil?
|
14
|
+
@cache=cmd[:cache] unless[:cache].nil?
|
14
15
|
else
|
15
16
|
@command=cmd
|
16
17
|
end
|
@@ -18,8 +19,63 @@ class SystemCall
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def elapsed; @end_time-@start_time; end
|
22
|
+
|
23
|
+
def cache_name
|
24
|
+
name = @dir+"/" + @command.gsub(" ","_").gsub("\\","-").gsub("/","-") unless @dir.nil?
|
25
|
+
name = @command.gsub(" ","_").gsub("\\","-").gsub("/","-") if @dir.nil?
|
26
|
+
return name
|
27
|
+
end
|
28
|
+
|
29
|
+
def has_cache
|
30
|
+
File.exist?(cache_name)
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_hash
|
34
|
+
hash = Hash.new()
|
35
|
+
hash[:cmd]=@command
|
36
|
+
hash[:dir]=@dir
|
37
|
+
hash[:output]=@output
|
38
|
+
hash[:error]=@error
|
39
|
+
hash[:status]=@status
|
40
|
+
hash[:start_time]=@start_time
|
41
|
+
hash[:end_time]=@end_time
|
42
|
+
hash[:timed_out]=@timed_out
|
43
|
+
hash[:cache]=@cache
|
44
|
+
return hash
|
45
|
+
end
|
46
|
+
|
47
|
+
def set_hash(hash)
|
48
|
+
@command=hash[:cmd] unless hash[:cmd].nil?
|
49
|
+
@dir=hash[:dir] unless hash[:dir].nil?
|
50
|
+
@output=hash[:output] unless hash[:output].nil?
|
51
|
+
@error=hash[:error] unless hash[:error].nil?
|
52
|
+
@status=hash[:status] unless hash[:status].nil?
|
53
|
+
@start_time=hash[:start_time] unless hash[:start_time].nil?
|
54
|
+
@end_time=hash[:end_time] unless hash[:end_time].nil?
|
55
|
+
@timed_out=hash[:timed_out] unless hash[:timed_out].nil?
|
56
|
+
@cache=hash[:cache] unless hash[:cache].nil?
|
57
|
+
end
|
58
|
+
|
59
|
+
def write_cache
|
60
|
+
marshal_dump = Marshal.dump(get_hash)
|
61
|
+
file=File.new(cache_name,'wb')
|
62
|
+
file.write marshal_dump
|
63
|
+
file.close
|
64
|
+
end
|
65
|
+
|
66
|
+
def load_cache
|
67
|
+
file=File.open(cache_name,'rb')
|
68
|
+
hash = Marshal.load file.read
|
69
|
+
file.close
|
70
|
+
set_hash hash
|
71
|
+
end
|
72
|
+
|
21
73
|
def execute(cmd)
|
22
|
-
|
74
|
+
|
75
|
+
if !@cache.nil? && has_cache
|
76
|
+
load_cache
|
77
|
+
return
|
78
|
+
end
|
23
79
|
@start_time=Time.now
|
24
80
|
filename=Dir.tmpdir + "/" + (0...8).map{65.+(rand(25)).chr}.join
|
25
81
|
begin
|
@@ -43,6 +99,7 @@ class SystemCall
|
|
43
99
|
rescue
|
44
100
|
puts "error executing ruby code"
|
45
101
|
ensure
|
102
|
+
write_cache if !@cache.nil?
|
46
103
|
begin
|
47
104
|
File.delete("#{filename}.out") if File.exists?("#{filename}.out")
|
48
105
|
File.delete("#{filename}.err") if File.exists?("#{filename}.err")
|
@@ -52,12 +109,11 @@ class SystemCall
|
|
52
109
|
end
|
53
110
|
end
|
54
111
|
|
55
|
-
|
56
|
-
|
57
112
|
def puts_summary
|
58
113
|
if(@status != 0)
|
59
114
|
summary = " [".foreground(:cyan) + "X".foreground(:red).bright + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") has exit status of " + @status.to_s
|
60
115
|
summary += " dir: " + @dir unless @dir.nil?
|
116
|
+
summary += " cache: true" unless @cache.nil?
|
61
117
|
puts summary
|
62
118
|
puts @output
|
63
119
|
warn @error
|
@@ -66,6 +122,7 @@ class SystemCall
|
|
66
122
|
elapsed_str="[" + "%.0f" %(elapsed) + "s]"
|
67
123
|
summary = " [".foreground(:cyan) + "+".foreground(:green) + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") " + elapsed_str.foreground(:cyan)
|
68
124
|
summary += " dir: " + @dir unless @dir.nil?
|
125
|
+
summary += " cache: true" unless @cache.nil?
|
69
126
|
puts summary
|
70
127
|
end
|
71
128
|
end
|
data/lib/dev/Tasks.rb
CHANGED
@@ -2,68 +2,40 @@ puts_debug "read " + __FILE__.foreground(:green)
|
|
2
2
|
|
3
3
|
require 'rake'
|
4
4
|
include Rake::DSL
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
|
6
|
+
def task_start(task_name)
|
7
|
+
puts " "
|
8
|
+
puts "[:#{task_name}]".foreground(:yellow).bright
|
9
|
+
end
|
10
|
+
|
11
|
+
task :clean do; task_start "clean"; end
|
12
|
+
task :clobber do; task_start "clobber"; end
|
12
13
|
|
13
14
|
require 'rake/clean'
|
14
15
|
CLEAN.include('*.gem','doc/*','obj/*')
|
15
|
-
CLOBBER.include('
|
16
|
+
CLOBBER.include('doc','obj')
|
16
17
|
|
17
18
|
def generate_tasks(project)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
task :features do; PROJECT.features; end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
19
|
+
task_hash = {
|
20
|
+
info: { desc: 'display information about the rakefile' },
|
21
|
+
compile: { desc: 'compile' },
|
22
|
+
test: { desc: 'run unit tests' },
|
23
|
+
commit: { desc: 'commit' },
|
24
|
+
replace: { desc: 'replace text' },
|
25
|
+
loc: { desc: 'count the lines of code' },
|
26
|
+
setup: { desc: 'setup the project environment' }
|
27
|
+
}
|
28
|
+
if project[:type]=="gem" || project[:type]=="ruby"
|
29
|
+
task_hash[:features] = { desc: 'tests cucumber features' }
|
33
30
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
desc "compile"
|
46
|
-
task :compile do
|
47
|
-
PROJECT.compile
|
48
|
-
end
|
49
|
-
|
50
|
-
desc "run unit tests"
|
51
|
-
task :test do
|
52
|
-
PROJECT.test # we want an exception raised here if PROJECT is undefined or nil
|
53
|
-
end
|
54
|
-
|
55
|
-
desc "commit"
|
56
|
-
task :commit do
|
57
|
-
PROJECT.commit # we want an exception raised here if PROJECT is undefined or nil
|
58
|
-
end
|
59
|
-
|
60
|
-
desc "replace text based on replace: hash entries"
|
61
|
-
task :replace do
|
62
|
-
PROJECT.replace
|
63
|
-
end
|
64
|
-
|
65
|
-
desc "count the lines of code"
|
66
|
-
task :loc do
|
67
|
-
PROJECT.loc
|
68
|
-
end
|
69
|
-
|
31
|
+
task_hash.each do |k,v|
|
32
|
+
name=k.to_s
|
33
|
+
desc=nil
|
34
|
+
desc=v[:desc] if v.has_key?(:desc)
|
35
|
+
ruby="task :#{name} do; task_start '#{name}'; PROJECT.#{name}; end"
|
36
|
+
ruby="desc '#{desc}'; " + ruby unless desc.nil?
|
37
|
+
unless task_defined(name)
|
38
|
+
eval(ruby)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
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.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-03 00:00:00.000000000
|
12
|
+
date: 2012-02-03 00:00:00.000000000 -07:00
|
13
|
+
default_executable:
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: rake
|
16
|
-
requirement: &
|
17
|
+
requirement: &22267620 !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
19
|
requirements:
|
19
20
|
- - ! '>='
|
@@ -21,10 +22,10 @@ dependencies:
|
|
21
22
|
version: '0'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
+
version_requirements: *22267620
|
25
26
|
- !ruby/object:Gem::Dependency
|
26
27
|
name: semver
|
27
|
-
requirement: &
|
28
|
+
requirement: &22267248 !ruby/object:Gem::Requirement
|
28
29
|
none: false
|
29
30
|
requirements:
|
30
31
|
- - ! '>='
|
@@ -32,10 +33,10 @@ dependencies:
|
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
+
version_requirements: *22267248
|
36
37
|
- !ruby/object:Gem::Dependency
|
37
38
|
name: countloc
|
38
|
-
requirement: &
|
39
|
+
requirement: &22266792 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
41
42
|
- - ! '>='
|
@@ -43,10 +44,10 @@ dependencies:
|
|
43
44
|
version: '0'
|
44
45
|
type: :runtime
|
45
46
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
+
version_requirements: *22266792
|
47
48
|
- !ruby/object:Gem::Dependency
|
48
49
|
name: rainbow
|
49
|
-
requirement: &
|
50
|
+
requirement: &22266456 !ruby/object:Gem::Requirement
|
50
51
|
none: false
|
51
52
|
requirements:
|
52
53
|
- - ! '>='
|
@@ -54,10 +55,10 @@ dependencies:
|
|
54
55
|
version: '0'
|
55
56
|
type: :runtime
|
56
57
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
+
version_requirements: *22266456
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
60
|
name: rspec
|
60
|
-
requirement: &
|
61
|
+
requirement: &22266132 !ruby/object:Gem::Requirement
|
61
62
|
none: false
|
62
63
|
requirements:
|
63
64
|
- - ! '>='
|
@@ -65,10 +66,10 @@ dependencies:
|
|
65
66
|
version: '0'
|
66
67
|
type: :development
|
67
68
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
+
version_requirements: *22266132
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
71
|
name: cucumber
|
71
|
-
requirement: &
|
72
|
+
requirement: &22265796 !ruby/object:Gem::Requirement
|
72
73
|
none: false
|
73
74
|
requirements:
|
74
75
|
- - ! '>='
|
@@ -76,10 +77,10 @@ dependencies:
|
|
76
77
|
version: '0'
|
77
78
|
type: :development
|
78
79
|
prerelease: false
|
79
|
-
version_requirements: *
|
80
|
+
version_requirements: *22265796
|
80
81
|
- !ruby/object:Gem::Dependency
|
81
82
|
name: bundler
|
82
|
-
requirement: &
|
83
|
+
requirement: &22265424 !ruby/object:Gem::Requirement
|
83
84
|
none: false
|
84
85
|
requirements:
|
85
86
|
- - ! '>='
|
@@ -87,7 +88,7 @@ dependencies:
|
|
87
88
|
version: '0'
|
88
89
|
type: :development
|
89
90
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
+
version_requirements: *22265424
|
91
92
|
description: development tasks
|
92
93
|
email: lou.parslow@gmail.com
|
93
94
|
executables:
|
@@ -105,6 +106,7 @@ files:
|
|
105
106
|
- lib/dev/Tasks.rb
|
106
107
|
- lib/dev.rb
|
107
108
|
- bin/dev
|
109
|
+
has_rdoc: true
|
108
110
|
homepage: http://rubygems.org/gems/dev
|
109
111
|
licenses: []
|
110
112
|
post_install_message:
|
@@ -125,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
127
|
version: '0'
|
126
128
|
requirements: []
|
127
129
|
rubyforge_project: dev
|
128
|
-
rubygems_version: 1.
|
130
|
+
rubygems_version: 1.5.2
|
129
131
|
signing_key:
|
130
132
|
specification_version: 3
|
131
133
|
summary: dev
|