verbose-shell 0.2.1 → 0.3.0
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 +4 -4
- data/Rakefile +9 -1
- data/lib/verbose-shell/version.rb +2 -2
- data/lib/verbose-shell.rb +42 -17
- data/verbose-shell.gemspec +3 -2
- metadata +23 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eab068b31159003750b1d5c4fe63ec4ee4175405a8e68a380b16a91c1f8f7461
|
|
4
|
+
data.tar.gz: 8a2f37566449ae10c823d478e01e3209fe7b1fca5368b5c9ba33433d0f6890f9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 836dde2994738abc1d1e8a4b0dfa2e2269404485bcc860adfc90955a8065f04957c34c5a728a56afca96fd051a853c54b058a6ac7a77f8a8660586d1190888a6
|
|
7
|
+
data.tar.gz: f8c6bf683eb9a5938e6c9832aefd96ccfc5399870bc21836aa36e2e6ead05fbf48f889f9ad10cf7905c15a27bbf164e39e6ce139c8eba5e0dd740507ac9d3773
|
data/Rakefile
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
VERSION = "0.
|
|
1
|
+
class VerboseShell
|
|
2
|
+
VERSION = "0.3.0"
|
|
3
3
|
end
|
data/lib/verbose-shell.rb
CHANGED
|
@@ -4,6 +4,21 @@ require 'pastel'
|
|
|
4
4
|
|
|
5
5
|
class VerboseShell
|
|
6
6
|
@verbose = 0
|
|
7
|
+
|
|
8
|
+
class ShellError < RuntimeError
|
|
9
|
+
attr_accessor :output, :cmd, :exit_code
|
|
10
|
+
def initialize(output, cmd, exit_code)
|
|
11
|
+
@output = output
|
|
12
|
+
@cmd = cmd
|
|
13
|
+
@exit_code = exit_code
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def message
|
|
17
|
+
"\n\n"+(['']*20+@output.split("\n"))[-20..-1].join("\n").lstrip + "\n"+Pastel.new.bright_white.on_red("💩 Command \"#{@cmd[0]}\" returned #{@exit_code}")
|
|
18
|
+
end
|
|
19
|
+
def to_s; message; end
|
|
20
|
+
end
|
|
21
|
+
|
|
7
22
|
class << self
|
|
8
23
|
attr_accessor :verbose
|
|
9
24
|
def verbose=(val); @verbose = val == true ? 1 : (val || 0); end
|
|
@@ -13,20 +28,6 @@ class VerboseShell
|
|
|
13
28
|
puts "+ "+args.map{|a| a =~ /\s/ ? '"'+a+'"' : a}.join(' ') # TODO: Fix quoting so it's more shell-like
|
|
14
29
|
end
|
|
15
30
|
|
|
16
|
-
class ShellError < RuntimeError
|
|
17
|
-
attr_accessor :output, :cmd, :exit_code
|
|
18
|
-
def initialize(output, cmd, exit_code)
|
|
19
|
-
@output = output
|
|
20
|
-
@cmd = cmd
|
|
21
|
-
@exit_code = exit_code
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def message
|
|
25
|
-
"\n\n"+(['']*20+@output.split("\n"))[-20..-1].join("\n").lstrip + "\n"+Pastel.new.bright_white.on_red("💩 Command \"#{@cmd[0]}\" returned #{@exit_code}")
|
|
26
|
-
end
|
|
27
|
-
def to_s; message; end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
31
|
def system(*args)
|
|
31
32
|
system_trace *args
|
|
32
33
|
args, opts = args.last.is_a?(Hash) ? [args[0..-2], args.last.dup] : [args, {}]
|
|
@@ -38,14 +39,38 @@ class VerboseShell
|
|
|
38
39
|
end
|
|
39
40
|
end
|
|
40
41
|
|
|
41
|
-
def
|
|
42
|
+
def try_system(*args)
|
|
42
43
|
system *args
|
|
43
|
-
rescue
|
|
44
|
+
rescue ShellError => e
|
|
45
|
+
e.exit_code
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def system_or_true(*args)
|
|
49
|
+
warn "system_or_true is deprecated, use system_noraise", category: :deprecated, uplevel: 1
|
|
50
|
+
system_noraise(*args)
|
|
44
51
|
end
|
|
45
52
|
|
|
46
53
|
def capture(*args) # ``
|
|
47
54
|
system_trace *args
|
|
48
|
-
IO.popen(args + (@verbose == 0 ? [{:err => "/dev/null"}] : []), "r") {|io| io.read}.strip
|
|
55
|
+
ret = IO.popen(args + (@verbose == 0 ? [{:err => "/dev/null"}] : []), "r") {|io| io.read}.strip
|
|
56
|
+
raise ShellError.new(ret, args, $?.exitstatus) unless $? == 0
|
|
57
|
+
ret
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def try_capture(*args) # ``
|
|
61
|
+
system_trace *args
|
|
62
|
+
ret = IO.popen(args + (@verbose == 0 ? [{:err => "/dev/null"}] : []), "r") {|io| io.read}.strip
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def popen(*args, &block)
|
|
66
|
+
env = args.first.is_a?(Hash) && args.unshift
|
|
67
|
+
opts = args.last.is_a?(Hash) && args.pop
|
|
68
|
+
mode = args.length == 2 ? args.pop : 'r'
|
|
69
|
+
cmd = args[0]
|
|
70
|
+
system_trace *cmd
|
|
71
|
+
ret = IO.popen(*([env, cmd, mode, opts].select {|v| v}.to_a), &block)
|
|
72
|
+
raise ShellError.new('', cmd, $?.exitstatus) if block_given? and $? != 0
|
|
73
|
+
ret
|
|
49
74
|
end
|
|
50
75
|
|
|
51
76
|
def which?(exe)
|
data/verbose-shell.gemspec
CHANGED
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
|
|
24
24
|
spec.add_dependency 'pastel', '~> 0.7.2'
|
|
25
25
|
|
|
26
|
-
spec.add_development_dependency "bundler", "
|
|
27
|
-
spec.add_development_dependency "rake", "
|
|
26
|
+
spec.add_development_dependency "bundler", ">= 2.2"
|
|
27
|
+
spec.add_development_dependency "rake", ">= 12.3"
|
|
28
|
+
spec.add_development_dependency "minitest", "~> 5.25"
|
|
28
29
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: verbose-shell
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Caldwell
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: pastel
|
|
@@ -28,30 +27,44 @@ dependencies:
|
|
|
28
27
|
name: bundler
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
|
-
- - "
|
|
30
|
+
- - ">="
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.2
|
|
32
|
+
version: '2.2'
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
|
-
- - "
|
|
37
|
+
- - ">="
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.2
|
|
39
|
+
version: '2.2'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rake
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '12.3'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '12.3'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: minitest
|
|
43
56
|
requirement: !ruby/object:Gem::Requirement
|
|
44
57
|
requirements:
|
|
45
58
|
- - "~>"
|
|
46
59
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
60
|
+
version: '5.25'
|
|
48
61
|
type: :development
|
|
49
62
|
prerelease: false
|
|
50
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
64
|
requirements:
|
|
52
65
|
- - "~>"
|
|
53
66
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
67
|
+
version: '5.25'
|
|
55
68
|
description: sh -x like logging of FileUtils functions.
|
|
56
69
|
email:
|
|
57
70
|
- david@porkrind.org
|
|
@@ -73,7 +86,6 @@ homepage: https://github.com/caldwell/verbose-shell
|
|
|
73
86
|
licenses:
|
|
74
87
|
- MIT
|
|
75
88
|
metadata: {}
|
|
76
|
-
post_install_message:
|
|
77
89
|
rdoc_options: []
|
|
78
90
|
require_paths:
|
|
79
91
|
- lib
|
|
@@ -88,8 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
88
100
|
- !ruby/object:Gem::Version
|
|
89
101
|
version: '0'
|
|
90
102
|
requirements: []
|
|
91
|
-
rubygems_version: 3.
|
|
92
|
-
signing_key:
|
|
103
|
+
rubygems_version: 3.7.2
|
|
93
104
|
specification_version: 4
|
|
94
105
|
summary: sh -x like logging of FileUtils functions.
|
|
95
106
|
test_files: []
|