dev_commands 0.0.41 → 0.0.42

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ddb5e7dbeac67f1bff9a6f4025e85497c9a001d3
4
- data.tar.gz: 4a1887451dcf5ad54eee8d5c0b592d8127567673
3
+ metadata.gz: 6b611814d3d0fd7323179bf1a3f0280d60a13099
4
+ data.tar.gz: 949e91336bd6fb6481716f8c1d6fa490d10162d1
5
5
  SHA512:
6
- metadata.gz: baaf2c25cae9277a5c558d3809ff4117a518008cafa0a72479f7ed68f03e2da2a3943aa2aa41b3bd9a414edeb81b6fef6e2f619feb892b3b8c6748e5be8d383f
7
- data.tar.gz: 3a139999d22aaf6ec49ad4705ac29889f2e63d29ff001300d5c4bb0b0160f1668dbea64b913ccdfdd844db8831bd726f546ffe3151e84f78d573e8ceaa191757
6
+ metadata.gz: b0da1876adb0693a5d7cf0ac17bfa5c3a107fdba5e4d360cf53fb87beb0698cefaf295fd77e2852e27b16cbe583909e87888b2dd80c8d860b7ff6dcd684109a1
7
+ data.tar.gz: 13e503c95cad72a4648ee7fba49596e6265b3af3fefa01fcbb98c1e2e97f9b65ca3392de8bdb9e85c5d9481a20536cafa8293c3827d1165c9a62eb90270e6ff2
data/lib/array.rb CHANGED
@@ -1,14 +1,9 @@
1
1
  class Array
2
- def execute value=nil
2
+ def execute
3
3
  i=0
4
4
  while i < self.length
5
5
  self[i]=Command.new(self[i]) if(self[i].is_a?(String))
6
6
  self[i]=Command.new(self[i]) if(self[i].is_a?(Hash) && !self[i].is_a?(Command))
7
-
8
- if(!value.nil? && value.is_a?(Hash))
9
- value.each{|k,v|self[i][k]=v}
10
- end
11
-
12
7
  self[i].execute if(self[i].is_a?(Command))
13
8
  i=i+1
14
9
  end
data/lib/build.rb CHANGED
@@ -1,22 +1,28 @@
1
1
  require_relative('msbuild.rb')
2
-
2
+ require_relative('gemspec.rb')
3
3
  class Build < Array
4
4
  def update
5
- Dir.glob('*.gemspec'){|gemspec|
6
- add "gem build #{gemspec}"
7
- }
8
- Dir.glob('**/*.sln'){|sln_file|
9
- vs_version=MSBuild.get_vs_version(sln_file)
10
- if(MSBuild.has_version?(vs_version))
11
- MSBuild.get_configurations(sln_file).each{ |configuration|
12
- MSBuild.get_platforms(sln_file).each{|platform|
13
- #Console.debug "configuration='#{configuration}', platform='#{platform}'"
14
- self.add "\"#{MSBuild.get_version(vs_version)}\" \"#{sln_file}\" /nologo /p:Configuration=#{configuration} /p:Platform=\"#{platform}\""
15
- }
16
- }
17
- else
18
- "puts version #{vs_version} not found for MsBuild"
19
- end
20
- }
5
+
6
+ changed = true
7
+ changed = Git.has_changes? if(File.exists?('.git') && defined?(Git))
8
+ changed = Svn.has_changes? if(File.exists?('.svn') && defined?(Svn))
9
+ if(changed)
10
+ Dir.glob('*.gemspec'){|gemspec|
11
+ add "gem build #{gemspec}" if !File.exist?(Gemspec.gemfile gemspec)
12
+ }
13
+ Dir.glob('*.sln'){|sln_file|
14
+ vs_version=MSBuild.get_vs_version(sln_file)
15
+ if(MSBuild.has_version?(vs_version))
16
+ MSBuild.get_configurations(sln_file).each{ |configuration|
17
+ MSBuild.get_platforms(sln_file).each{|platform|
18
+ #Console.debug "configuration='#{configuration}', platform='#{platform}'"
19
+ self.add "\"#{MSBuild.get_version(vs_version)}\" \"#{sln_file}\" /nologo /p:Configuration=#{configuration} /p:Platform=\"#{platform}\""
20
+ }
21
+ }
22
+ else
23
+ "puts version #{vs_version} not found for MsBuild"
24
+ end
25
+ }
26
+ end
21
27
  end
22
28
  end
data/lib/command.rb CHANGED
@@ -3,9 +3,26 @@ require_relative('./array.rb')
3
3
  require_relative('./hash.rb')
4
4
  require_relative('./timer.rb')
5
5
 
6
- BUFFER_SIZE=1024 if(!defined?(BUFFER_SIZE))
7
-
8
-
6
+ # = Command
7
+ #
8
+ # execution of system commands
9
+ #
10
+ # = Keys
11
+ #
12
+ # - :input The input of the commands.
13
+ # - :timeout The timeout in seconds.
14
+ # a value of zero is to infinite timeout.
15
+ # defaults to zero
16
+ # - :directory The working directory for the command.
17
+ # defaults to the current directory
18
+ # - :exit_code The exit code of the command
19
+ # - :output The output contains the stdout output of the command
20
+ # - :error The error contains stderr output of the command
21
+ # - :machine The name of the machine the command executed on
22
+ # - :user The user name
23
+ # - :start_time
24
+ # - :end_time
25
+ #
9
26
  class Command < Hash
10
27
  def initialize command
11
28
 
@@ -31,23 +48,12 @@ class Command < Hash
31
48
  end
32
49
  end
33
50
 
34
- def quiet?
35
- (self.has_key?(:quiet) && self[:quiet])
36
- end
37
-
38
- def execute value=nil
39
-
40
- if(!value.nil? && value.is_a?(Hash))
41
- value.each{|k,v|self[k]=v}
42
- end
51
+ def execute
52
+ puts "#{self[:input]}" if(!self.has_key?(:quiet) || !self[:quiet])
43
53
  pwd=Dir.pwd
44
54
  Dir.chdir(self[:directory]) if(self.has_key?(:directory) && File.exists?(self[:directory]))
45
55
  self[:directory] = pwd if(self[:directory].length==0)
46
- if(self[:timeout] > 0)
47
- puts "#{self[:input]} (#{self[:directory]}) timeout #{self[:timeout].to_s}" if(!quiet?)
48
- else
49
- puts "#{self[:input]} (#{self[:directory]})" if(!quiet?)
50
- end
56
+
51
57
  self[:machine] = Command.machine
52
58
  self[:user] = Command.user
53
59
 
@@ -67,27 +73,10 @@ class Command < Hash
67
73
  self[:end_time] = Time.now
68
74
  else
69
75
  begin
70
- if(self[:timeout] <= 0)
71
- self[:output],self[:error],status= Open3.capture3(self[:input])
72
- self[:exit_code]=status.to_i
73
- self[:elapsed] = timer.elapsed_str
74
- self[:end_time] = Time.now
75
- else
76
- require_relative 'timeout.rb'
77
- #puts run_with_timeout(self[:input], self[:timeout], 1).to_s
78
- #self[:output] = run_with_timeout(self[:input], self[:timeout], 1)
79
- result=run_with_timeout(self[:input], self[:timeout], 1)
80
- self[:output]=result[0]
81
- self[:exit_code]=result[1]
82
-
83
- self[:elapsed] = timer.elapsed_str
84
- self[:end_time] = Time.now
85
-
86
- if(timer.elapsed >= self[:timeout])
87
- self[:exit_code]=1
88
- self[:error] = self[:error] + "timed out"
89
- end
90
- end
76
+ self[:output],self[:error],status= Open3.capture3(self[:input])
77
+ self[:exit_code]=status.to_i
78
+ self[:elapsed] = timer.elapsed_str
79
+ self[:end_time] = Time.now
91
80
  rescue Exception => e
92
81
  self[:elapsed] = timer.elapsed_str
93
82
  self[:end_time] = Time.now
@@ -99,10 +88,13 @@ class Command < Hash
99
88
  Dir.chdir(pwd) if pwd != Dir.pwd
100
89
 
101
90
  if(self[:exit_code] != 0)
102
- if(!quiet?)
91
+ if(!self.has_key?(:quiet) || !self[:quiet])
92
+ puts ' '
103
93
  puts "exit_code=#{self[:exit_code]}"
94
+ puts ' '
104
95
  puts self[:output]
105
96
  puts self[:error]
97
+ puts ' '
106
98
  end
107
99
  if(!self.has_key?(:ignore_failure) || !self[:ignore_failure])
108
100
  raise "#{self[:input]} failed"
data/lib/hash.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Hash
2
- def execute value=nil
2
+ def execute
3
3
  self.each{|k,v|
4
4
  v.update if v.respond_to?(:update)
5
5
  if(v.is_a?(Array) && v.length==0)
@@ -7,7 +7,7 @@ class Hash
7
7
  else
8
8
  #puts "executing #{k}"
9
9
 
10
- v.execute(value) if v.respond_to?(:execute)
10
+ v.execute if v.respond_to?(:execute)
11
11
  end
12
12
  }
13
13
  end
data/spec/command_spec.rb CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
4
4
 
5
5
  describe Command do
6
6
  it "should be able to execute ruby --version command" do
7
- cmd=Command.new({ :input => 'ruby --version', :quiet => true})
7
+ cmd=Command.new("ruby --version")
8
8
  # Timeout
9
9
  expect(cmd[:timeout]).to eq(0)
10
10
  cmd[:timeout]=3000
@@ -58,7 +58,7 @@ describe Command do
58
58
  end
59
59
 
60
60
  it "should be able to write to/load from JSON" do
61
- cmd=Command.new({ :input => 'ruby --version', :quiet => true})
61
+ cmd=Command.new("ruby --version")
62
62
  expect(cmd[:timeout]).to eq(0)
63
63
  expect(cmd[:input]).to eq("ruby --version")
64
64
  cmd2=Command.new(JSON.parse(cmd.to_json))
@@ -66,12 +66,6 @@ describe Command do
66
66
  expect(cmd2[:input]).to eq("ruby --version")
67
67
  end
68
68
 
69
- it "should be able to timeout" do
70
- cmd=Command.new({ :input => 'ftp', :timeout => 0.5, :ignore_failure => true, :quiet => true})
71
- cmd.execute
72
- expect(cmd[:exit_code]).not_to eq(0)
73
- end
74
-
75
69
  it "should be able to execute rake command in specific directory" do
76
70
  dir="#{File.dirname(__FILE__)}/tmp/rake_test"
77
71
  FileUtils.mkdir_p(dir) if(!File.exists?(dir))
@@ -80,41 +74,16 @@ describe Command do
80
74
  f.puts " puts 'rake_test'"
81
75
  f.puts "end"
82
76
  }
83
- cmd=Command.new({ :input => 'rake', :quiet => true, :timeout => 2 })
77
+ cmd=Command.new("rake")
84
78
  cmd[:directory]=dir
85
79
  cmd.execute
86
80
  FileUtils.rm_r("#{File.dirname(__FILE__)}/tmp")
87
81
  expect(cmd[:output].include?('rake_test')).to eq(true)
88
82
  end
89
83
 
90
- it "should fail when calling rake produces an error" do
91
- dir="#{File.dirname(__FILE__)}/tmp/rake_error_test"
92
- FileUtils.mkdir_p(dir) if(!File.exists?(dir))
93
- File.open("#{dir}/rakefile.rb","w") { |f|
94
- f.puts "task :default do"
95
- f.puts " raise 'rake_test'"
96
- f.puts "end"
97
- }
98
- cmd=Command.new({ :input => 'rake', :ignore_failure => true, :quiet => true})
99
- cmd[:directory]=dir
100
- cmd.execute({:quiet => true})
101
- FileUtils.rm_r("#{File.dirname(__FILE__)}/tmp")
102
- expect(cmd[:exit_code]).not_to eq(0)
103
-
104
- cmd=Command.new({ :input => 'rake bogus', :ignore_failure => true, :quiet => true})
105
- cmd[:directory]=dir
106
- cmd.execute
107
- expect(cmd[:exit_code]).not_to eq(0)
108
-
109
- cmd=Command.new({ :input => 'rake bogus', :timeout => 3, :ignore_failure => true, :quiet => true})
110
- cmd[:directory]=dir
111
- cmd.execute
112
- expect(cmd[:exit_code]).not_to eq(0)
113
- end
114
-
115
84
  it "should be able to execute an array of commands" do
116
85
  help=['git --help','rake --help','ruby --help']
117
- help.execute({:quiet => true})
86
+ help.execute
118
87
  File.open('help.html','w'){|f|f.write(help.to_html)}
119
88
  end
120
89
 
@@ -122,11 +91,11 @@ describe Command do
122
91
  commands=Hash.new
123
92
  commands[:help]=['git --help','rake --help','ruby --help']
124
93
  commands[:version]=['git --version','rake --version','ruby --version']
125
- commands.execute({:quiet => true})
94
+ commands.execute
126
95
  File.open('commands.html','w'){|f|f.write(commands.to_html)}
127
96
  end
128
97
 
129
- it "should be able to get the output" do
98
+ it "hsould be able to get the output" do
130
99
  expect(Command.output('git --version').include?('git version')).to eq(true)
131
100
  expect(Command.output('bogus --version').include?('bogus version')).to eq(false)
132
101
  end
metadata CHANGED
@@ -1,133 +1,79 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev_commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.41
4
+ version: 0.0.42
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lou Parslow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-16 00:00:00.000000000 Z
11
+ date: 2015-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '10.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: yard
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
33
+ version: '3.0'
90
34
  type: :development
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
- - - '>='
38
+ - - "~>"
95
39
  - !ruby/object:Gem::Version
96
- version: '0'
40
+ version: '3.0'
97
41
  - !ruby/object:Gem::Dependency
98
42
  name: yard
99
43
  requirement: !ruby/object:Gem::Requirement
100
44
  requirements:
101
- - - '>='
45
+ - - "~>"
102
46
  - !ruby/object:Gem::Version
103
- version: '0'
47
+ version: '0.8'
104
48
  type: :development
105
49
  prerelease: false
106
50
  version_requirements: !ruby/object:Gem::Requirement
107
51
  requirements:
108
- - - '>='
52
+ - - "~>"
109
53
  - !ruby/object:Gem::Version
110
- version: '0'
54
+ version: '0.8'
111
55
  - !ruby/object:Gem::Dependency
112
56
  name: bundler
113
57
  requirement: !ruby/object:Gem::Requirement
114
58
  requirements:
115
- - - '>='
59
+ - - "~>"
116
60
  - !ruby/object:Gem::Version
117
- version: '0'
61
+ version: '1.7'
118
62
  type: :development
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
65
  requirements:
122
- - - '>='
66
+ - - "~>"
123
67
  - !ruby/object:Gem::Version
124
- version: '0'
68
+ version: '1.7'
125
69
  description: execution of system commands
126
70
  email: lou.parslow@gmail.com
127
71
  executables: []
128
72
  extensions: []
129
73
  extra_rdoc_files: []
130
74
  files:
75
+ - LICENSE
76
+ - README.md
131
77
  - lib/add.rb
132
78
  - lib/analyze.rb
133
79
  - lib/array.rb
@@ -151,7 +97,6 @@ files:
151
97
  - lib/setup.rb
152
98
  - lib/test.rb
153
99
  - lib/text.rb
154
- - lib/timeout.rb
155
100
  - lib/timer.rb
156
101
  - lib/update.rb
157
102
  - lib/upgrade.rb
@@ -162,8 +107,6 @@ files:
162
107
  - spec/sln-vs12-example/rakefile.rb
163
108
  - spec/sln-vs9-example/rakefile.rb
164
109
  - spec/text_spec.rb
165
- - LICENSE
166
- - README.md
167
110
  homepage: http://github.com/lou-parslow/dev_commands.gem
168
111
  licenses:
169
112
  - Apache 2.0
@@ -174,17 +117,17 @@ require_paths:
174
117
  - lib
175
118
  required_ruby_version: !ruby/object:Gem::Requirement
176
119
  requirements:
177
- - - '>='
120
+ - - ">="
178
121
  - !ruby/object:Gem::Version
179
122
  version: '0'
180
123
  required_rubygems_version: !ruby/object:Gem::Requirement
181
124
  requirements:
182
- - - '>='
125
+ - - ">="
183
126
  - !ruby/object:Gem::Version
184
127
  version: '0'
185
128
  requirements: []
186
129
  rubyforge_project:
187
- rubygems_version: 2.0.14
130
+ rubygems_version: 2.2.2
188
131
  signing_key:
189
132
  specification_version: 4
190
133
  summary: gem to execute system commands
data/lib/timeout.rb DELETED
@@ -1,54 +0,0 @@
1
- ############################################################################
2
- # The following code is based on code originally copied from
3
- # https://gist.github.com/lpar/1032297
4
- # Gist title: lpar/timeout.rb
5
- ############################################################################
6
- # Runs a specified shell command in a separate thread.
7
- # If it exceeds the given timeout in seconds, kills it.
8
- # Returns any output produced by the command (stdout or stderr) as a String.
9
- # Uses Kernel.select to wait up to the tick length (in seconds) between
10
- # checks on the command's status
11
- #
12
- # If you've got a cleaner way of doing this, I'd be interested to see it.
13
- # If you think you can do it with Ruby's Timeout module, think again.
14
- def run_with_timeout(command, timeout, tick)
15
- output = ''
16
- exit_code=1
17
- begin
18
- # Start task in another thread, which spawns a process
19
- stdin, stderrout, thread = Open3.popen2e(command)
20
- # Get the pid of the spawned process
21
- pid = thread[:pid]
22
- start = Time.now
23
-
24
- while (Time.now - start) < timeout and thread.alive?
25
- # Wait up to `tick` seconds for output/error data
26
- Kernel.select([stderrout], nil, nil, tick)
27
- # Try to read the data
28
- begin
29
- output << stderrout.read_nonblock(BUFFER_SIZE)
30
- rescue IO::WaitReadable
31
- # A read would block, so loop around for another select
32
- rescue EOFError
33
- # Command has completed, not really an error...
34
- break
35
- end
36
- end
37
-
38
- # Give Ruby time to clean up the other thread
39
- sleep 1
40
-
41
- if thread.alive?
42
- # We need to kill the process, because killing the thread leaves
43
- # the process alive but detached, annoyingly enough.
44
- Process.kill("TERM", pid)
45
- else
46
- exit_code=thread.value
47
- end
48
-
49
- ensure
50
- stdin.close if stdin
51
- stderrout.close if stderrout
52
- end
53
- return [output,exit_code]
54
- end