dev 1.0.10 → 1.0.11

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/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: