dev 1.0.10 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/bin/dev ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright 2012 Lou Parslow
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ #
18
+
19
+ begin
20
+ require 'rubygems'
21
+ rescue LoadError
22
+ end
23
+
24
+ require 'dev'
25
+
26
+ puts "welcome to dev"
27
+
28
+ puts ("no arguments passed") if(ARGV.length == 0)
29
+ ARGV.each do|a|
30
+ puts "Argument: #{a}"
31
+ end
data/lib/dev.rb CHANGED
@@ -12,6 +12,7 @@ end
12
12
 
13
13
  puts_debug "read " + __FILE__.foreground(:green)
14
14
 
15
+ require "#{File.dirname(__FILE__)}/dev/Environment.rb"
15
16
  require "#{File.dirname(__FILE__)}/dev/Hash.rb"
16
17
 
17
18
  Dir["#{File.dirname(__FILE__)}/dev/**/*.rb"].each{ |f| require f }
@@ -34,6 +34,19 @@ class Environment
34
34
  def self.expand_string_variables(str)
35
35
  eval("\"#{str.gsub('"','\"')}\"")
36
36
  end
37
+
38
+ def self.s_to_hash(str)
39
+ # check for hash
40
+ hash=nil
41
+ if(str.strip.index('{')==0 && str.strip.index('}')==str.strip.length-1)
42
+ begin
43
+ eval("hash=#{str.strip}")
44
+ rescue
45
+ hash=nil
46
+ end
47
+ end
48
+ hash
49
+ end
37
50
  end
38
51
 
39
52
  end # module Dev
@@ -21,6 +21,7 @@ class Project < Hash
21
21
  return
22
22
  end
23
23
  puts_debug "found directives for #{string_name}: #{self.get_value(string_name).to_s}"
24
+ puts " "
24
25
  puts string_name.foreground(:yellow).bright
25
26
  self.get_value(string_name).each{ |c|
26
27
  # expand the command here....
@@ -29,10 +30,18 @@ class Project < Hash
29
30
  #puts "Command: " + c
30
31
  eval(c.gsub("<%","").gsub("%>",""))
31
32
  else
32
- call=Dev::SystemCall.new(command)
33
+ # can the command be converted to a hash?
34
+ hash=Dev::Environment.s_to_hash(command)
35
+ call=nil
36
+ if(hash.nil?)
37
+ call=Dev::SystemCall.new(command)
38
+ else
39
+ call=Dev::SystemCall.new(hash)
40
+ end
33
41
  call.puts_summary
34
42
  end
35
43
  }
44
+ puts " "
36
45
  end
37
46
 
38
47
  def method_missing( name, *args )
@@ -123,6 +132,10 @@ class Project < Hash
123
132
  end
124
133
 
125
134
  def info
135
+ [ "file_count","loc" ].each do |k|
136
+ puts_debug "set_default_value(#{k})"
137
+ set_default_value(k)
138
+ end
126
139
  puts " "
127
140
  Hash.print_hash("",self)
128
141
  puts " "
@@ -177,7 +190,7 @@ class Project < Hash
177
190
  unless dep_hash.nil?
178
191
  dep_hash.each do |key,value|
179
192
  if value.kind_of?(Hash)
180
- # potential hash keys: uri, dir
193
+ # potential hash keys: uri, dir, rake
181
194
  # uri is required
182
195
  unless value.get_value("uri").nil?
183
196
  uri=expand_project_variables(value.get_value("uri"))
@@ -191,6 +204,10 @@ class Project < Hash
191
204
 
192
205
  array << "svn export " + expand_project_variables(value.get_value("uri")) + " " + dir unless File.exists?(dir)
193
206
  array << "<%puts ' #{dir} exists.'%>" if File.exists?(dir)
207
+
208
+ unless value.get_value("rake").nil?
209
+ array << "{cmd: 'rake #{value.get_value("rake").to_s}', dir: '#{dir}'}"
210
+ end
194
211
  end
195
212
  end
196
213
  end
@@ -212,7 +229,7 @@ class Project < Hash
212
229
  Dir.glob("*.csproj").each{|cs|array<<"<paths,msbuild> #{cs} <x86_release_compile_flags>"}
213
230
  end
214
231
  if(key=="test")
215
- Dir.glob("*.gemspec").each { |gs| array << "gem uninstall #{gs.gsub('.gemspec','')} -v #{self[:version]}" } if self[:type]=="gem"
232
+ #Dir.glob("*.gemspec").each { |gs| array << "gem uninstall #{gs.gsub('.gemspec','')} -v #{self[:version]}" } if self[:type]=="gem"
216
233
  Dir.glob("*.gemspec").each { |gs| array << "gem install ./#{gs.gsub('.gemspec','')}-#{self[:version]}.gem" } if self[:type]=="gem"
217
234
  if self[:type]=="C#"
218
235
  Dir.glob("*.{Test.csproj,Features.csproj}").each { |cs|
@@ -243,11 +260,13 @@ class Project < Hash
243
260
 
244
261
  self[:type]="C#" if self[:type].nil?
245
262
 
246
- [ "version","dev_root","src_glob","file_count","loc","scm_type",
263
+ [ "version","dev_root","src_glob","scm_type",
247
264
  "paths","setup","compile","test","features","commit" ].each do |k|
248
265
  puts_debug "set_default_value(#{k})"
249
266
  set_default_value(k)
250
267
  end
268
+
269
+ generate_tasks(self)
251
270
  end
252
271
  end
253
272
  end # module Dev
@@ -5,16 +5,31 @@ 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
8
+ attr_accessor :output,:error,:status,:command,:start_time,:end_time,:timed_out,:dir
9
9
 
10
- def initialize(cmd); execute(cmd); end
10
+ def initialize(cmd)
11
+ if(cmd.kind_of?(Hash))
12
+ @command=cmd[:cmd]
13
+ @dir=cmd[:dir] unless cmd[:dir].nil?
14
+ else
15
+ @command=cmd
16
+ end
17
+ execute(@command);
18
+ end
19
+
11
20
  def elapsed; @end_time-@start_time; end
12
- def execute(cmd)
13
- @command=cmd
21
+ def execute(cmd)
22
+ #@command=cmd
14
23
  @start_time=Time.now
15
24
  filename=Dir.tmpdir + "/" + (0...8).map{65.+(rand(25)).chr}.join
16
25
  begin
17
- system("#{@command} >#{filename}.out 2>#{filename}.err")
26
+ if(@dir.nil?)
27
+ system("#{@command} >#{filename}.out 2>#{filename}.err")
28
+ else
29
+ Dir.chdir(dir) do
30
+ system("#{@command} >#{filename}.out 2>#{filename}.err")
31
+ end
32
+ end
18
33
  File.open("#{filename}.out",'r') {|f|
19
34
  @output = f.read
20
35
  f.close
@@ -41,13 +56,17 @@ class SystemCall
41
56
 
42
57
  def puts_summary
43
58
  if(@status != 0)
44
- puts " [".foreground(:cyan) + "X".foreground(:red).bright + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") has exit status of " + @status.to_s
45
- puts @output
46
- warn @error
47
- throw "exit status was " + @status.to_s
59
+ summary = " [".foreground(:cyan) + "X".foreground(:red).bright + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") has exit status of " + @status.to_s
60
+ summary += " dir: " + @dir unless @dir.nil?
61
+ puts summary
62
+ puts @output
63
+ warn @error
64
+ throw "exit status was " + @status.to_s
48
65
  else
49
66
  elapsed_str="[" + "%.0f" %(elapsed) + "s]"
50
- puts " [".foreground(:cyan) + "+".foreground(:green) + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") " + elapsed_str.foreground(:cyan)
67
+ summary = " [".foreground(:cyan) + "+".foreground(:green) + "]".foreground(:cyan) + " system(\"" + @command.foreground(:green) + "\") " + elapsed_str.foreground(:cyan)
68
+ summary += " dir: " + @dir unless @dir.nil?
69
+ puts summary
51
70
  end
52
71
  end
53
72
 
@@ -1,7 +1,7 @@
1
1
  puts_debug "read " + __FILE__.foreground(:green)
2
2
 
3
3
  require 'rake'
4
-
4
+ include Rake::DSL
5
5
  #desc "checks for a sane environment"
6
6
  #task :sanity do
7
7
  # if(!defined?(PROJECT))
@@ -14,15 +14,28 @@ require 'rake/clean'
14
14
  CLEAN.include('*.gem','doc/*','obj/*')
15
15
  CLOBBER.include('bin','doc','obj')
16
16
 
17
- desc "setup the project environment"
18
- task :setup do
19
- PROJECT.setup
17
+ 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
+
33
+ end
20
34
  end
21
35
 
22
- desc "tests cucumber features"
23
- task :features do
24
- PROJECT.features
25
- end
36
+
37
+
38
+
26
39
 
27
40
  desc "display information about the rakefile"
28
41
  task :info do
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.10
4
+ version: 1.0.11
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: &22112892 !ruby/object:Gem::Requirement
16
+ requirement: &27112740 !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: *22112892
24
+ version_requirements: *27112740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: semver
27
- requirement: &22110456 !ruby/object:Gem::Requirement
27
+ requirement: &27112464 !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: *22110456
35
+ version_requirements: *27112464
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: countloc
38
- requirement: &22142736 !ruby/object:Gem::Requirement
38
+ requirement: &27112212 !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: *22142736
46
+ version_requirements: *27112212
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rainbow
49
- requirement: &22141956 !ruby/object:Gem::Requirement
49
+ requirement: &27111960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,44 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *22141956
57
+ version_requirements: *27111960
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &27111708 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *27111708
69
+ - !ruby/object:Gem::Dependency
70
+ name: cucumber
71
+ requirement: &27111456 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *27111456
80
+ - !ruby/object:Gem::Dependency
81
+ name: bundler
82
+ requirement: &27111204 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *27111204
58
91
  description: development tasks
59
92
  email: lou.parslow@gmail.com
60
- executables: []
93
+ executables:
94
+ - dev
61
95
  extensions: []
62
96
  extra_rdoc_files: []
63
97
  files:
@@ -70,6 +104,7 @@ files:
70
104
  - lib/dev/SystemCall.rb
71
105
  - lib/dev/Tasks.rb
72
106
  - lib/dev.rb
107
+ - bin/dev
73
108
  homepage: http://rubygems.org/gems/dev
74
109
  licenses: []
75
110
  post_install_message: