dev 1.0.11 → 1.0.12
Sign up to get free protection for your applications and to get access to all the features.
- 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
|