dev 1.0.11 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,12 +1,5 @@
1
1
  puts_debug "read " + __FILE__.foreground(:green)
2
2
 
3
- #def exec_in_dir(cmd,dir)
4
- # Dir.chdir(dir) { |path|
5
- # call=Dev::SystemCall.new(cmd)
6
- # call.puts_summary
7
- # }
8
- #end
9
-
10
3
  module Dev
11
4
 
12
5
  class Environment
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
- array_method(name)
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) # expands ruby variables, e.g. '#{name}' to 'widget'
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| # expand project variables, e.g. '<name>' to 'widget
60
- key = pvar[0].gsub("<","").gsub(">","") # '<paths,nunit>' to 'C:/wherever/NUnit.exe'
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
- hash=self[:replace]
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"
@@ -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
- #@command=cmd
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
- #desc "checks for a sane environment"
6
- #task :sanity do
7
- # if(!defined?(PROJECT))
8
- # throw "PROJECT must be defined"
9
- # end
10
- # PROJECT.sanity
11
- #end
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('bin','doc','obj')
16
+ CLOBBER.include('doc','obj')
16
17
 
17
18
  def generate_tasks(project)
18
- unless project.nil?
19
- unless task_defined("setup")
20
- desc "setup the project environment"
21
- task :setup do
22
- PROJECT.setup
23
- end
24
- end
25
-
26
- if project[:type]=="gem" || project[:type]=="ruby"
27
- unless task_defined("features")
28
- desc "tests cucumber features"
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
- end
35
-
36
-
37
-
38
-
39
-
40
- desc "display information about the rakefile"
41
- task :info do
42
- PROJECT.info
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.11
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 Z
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: &27112740 !ruby/object:Gem::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: *27112740
25
+ version_requirements: *22267620
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: semver
27
- requirement: &27112464 !ruby/object:Gem::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: *27112464
36
+ version_requirements: *22267248
36
37
  - !ruby/object:Gem::Dependency
37
38
  name: countloc
38
- requirement: &27112212 !ruby/object:Gem::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: *27112212
47
+ version_requirements: *22266792
47
48
  - !ruby/object:Gem::Dependency
48
49
  name: rainbow
49
- requirement: &27111960 !ruby/object:Gem::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: *27111960
58
+ version_requirements: *22266456
58
59
  - !ruby/object:Gem::Dependency
59
60
  name: rspec
60
- requirement: &27111708 !ruby/object:Gem::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: *27111708
69
+ version_requirements: *22266132
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: cucumber
71
- requirement: &27111456 !ruby/object:Gem::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: *27111456
80
+ version_requirements: *22265796
80
81
  - !ruby/object:Gem::Dependency
81
82
  name: bundler
82
- requirement: &27111204 !ruby/object:Gem::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: *27111204
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.8.11
130
+ rubygems_version: 1.5.2
129
131
  signing_key:
130
132
  specification_version: 3
131
133
  summary: dev