dev_commands 0.0.41 → 0.0.42

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