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.
@@ -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