libexec 0.2.0 → 0.2.2
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/Gemfile.lock +2 -2
- data/lib/libexec/exec.rb +86 -43
- data/lib/libexec/version.rb +1 -1
- data/lib/libexec.rb +0 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88d970febf501ba9372769e1d9e133f7b2ba925f746cd0f548678d380f9febf9
|
4
|
+
data.tar.gz: '0902086c184c1e813ce6dab467f59c5b4b6a90414b248707267c7c3bfd7e46ff'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea31a1801ef196301ac6035e75fffbf9be1695f64406d2fc4321d467cd9db27874cdc6b26044ab61c17906d7ca0bb8928e901aa6fecbe9075fd57343bb3923cf
|
7
|
+
data.tar.gz: 6be76f8b62e4003dd09a8d1ac06ad7070de2077637a51158480dda664e70eecc46f3f1c1da5dcd1757d33abb636be1134894e34c7b5486247feec7aab6129b35
|
data/Gemfile.lock
CHANGED
data/lib/libexec/exec.rb
CHANGED
@@ -2,61 +2,71 @@
|
|
2
2
|
|
3
3
|
module Libexec
|
4
4
|
module Exec
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
cmd.push(arg)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
5
|
+
# wrapper for Ruby IO.popen
|
6
|
+
# {https://docs.ruby-lang.org/en/master/IO.html#method-c-popen link} <br>
|
7
|
+
# cmd first grammar <br>
|
8
|
+
# conv argv by _ruby_style_cmd
|
9
|
+
#
|
10
|
+
# @return [nil]
|
11
|
+
def run(*argv, env: {}, mode: "r", **opts)
|
12
|
+
cmd = _ruby_style_cmd(argv)
|
17
13
|
|
18
|
-
# https://docs.ruby-lang.org/en/master/IO.html#method-c-popen
|
19
14
|
IO.popen(env, cmd, mode, opts) do |pipe|
|
20
15
|
print pipe.gets until pipe.eof?
|
21
16
|
end
|
22
17
|
nil
|
23
18
|
end
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
cmd.concat(arg)
|
31
|
-
elsif arg.instance_of?(String)
|
32
|
-
cmd.push(arg)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
20
|
+
# Run code block in IO.popen <br>
|
21
|
+
# inspired from Ruby IO.each_line
|
22
|
+
# {https://docs.ruby-lang.org/en/master/IO.html#method-i-each_line link}
|
23
|
+
def each_line(*argv, env: {}, mode: "r", **opts, &block)
|
24
|
+
cmd = _ruby_style_cmd(argv)
|
36
25
|
|
37
|
-
# https://docs.ruby-lang.org/en/master/IO.html#method-i-each_line
|
38
26
|
IO.popen(env, cmd, mode, opts) do |pipe|
|
39
27
|
pipe.each_line(&block)
|
40
28
|
end
|
41
29
|
end
|
42
30
|
|
43
|
-
|
31
|
+
# wrapper for `ls -1` which will be often used
|
32
|
+
#
|
33
|
+
# @param [Array] argv
|
34
|
+
# @return [Array] line.chomp
|
35
|
+
def by_ls_1(*argv, **opts)
|
44
36
|
arr = []
|
45
|
-
|
37
|
+
argv.unshift(["ls", "-1"])
|
38
|
+
each_line(argv, opts: opts) do |line|
|
46
39
|
arr.push line.chomp
|
47
40
|
end
|
48
41
|
arr
|
49
42
|
end
|
50
43
|
|
51
|
-
|
52
|
-
|
44
|
+
# Operate each line result by yourself in `ls -1`
|
45
|
+
#
|
46
|
+
# @param [Array] argv
|
47
|
+
def each_ls_1(*argv, **opts, &block)
|
48
|
+
argv.unshift(["ls", "-1"])
|
49
|
+
each_line(argv, opts: opts, &block)
|
53
50
|
end
|
54
51
|
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
# wrapper for Process.spawn
|
53
|
+
# {https://docs.ruby-lang.org/en/master/Process.html#method-c-last_status link}
|
54
|
+
#
|
55
|
+
# @return [Integer]
|
56
|
+
def code(*argv, **opts)
|
57
|
+
opt_catch_error = opts[:catch_error]
|
58
|
+
opt_code = opts[:code]
|
59
|
+
|
60
|
+
*args, last_arg = argv
|
58
61
|
|
59
|
-
|
62
|
+
is_integer = last_arg.instance_of?(Integer)
|
63
|
+
arg_catch_error = is_integer
|
64
|
+
arg_code = is_integer ? last_arg : false
|
65
|
+
|
66
|
+
catch_error = arg_catch_error|| opt_catch_error || false
|
67
|
+
code = arg_code || opt_code || 1
|
68
|
+
|
69
|
+
cmd = is_integer ? _js_style_cmd(args) : _js_style_cmd(argv)
|
60
70
|
Process.spawn(cmd)
|
61
71
|
Process.wait
|
62
72
|
|
@@ -71,23 +81,56 @@ module Libexec
|
|
71
81
|
127
|
72
82
|
end
|
73
83
|
|
74
|
-
|
75
|
-
|
84
|
+
# wrapper for Kernel.`command`
|
85
|
+
# {https://docs.ruby-lang.org/en/master/Kernel.html#method-i-60 link}
|
86
|
+
#
|
87
|
+
# @note Only recommend to use when get single line output
|
88
|
+
# @return [String] output.chomp
|
89
|
+
def output(*argv)
|
90
|
+
cmd = _js_style_cmd(argv)
|
91
|
+
|
92
|
+
output = `#{cmd}`
|
93
|
+
output.chomp
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
# cmd must be unix command String <br>
|
99
|
+
# no " ", not Array <br>
|
100
|
+
# not support cmd with opt like `ls -1`
|
101
|
+
#
|
102
|
+
# @param [Array] argv
|
103
|
+
# @return [String | Array]
|
104
|
+
#
|
105
|
+
# @since 0.2.1
|
106
|
+
def _ruby_style_cmd(argv)
|
107
|
+
cmd, *args = argv
|
108
|
+
|
109
|
+
args.empty? ? cmd : argv.flatten
|
110
|
+
end
|
111
|
+
|
112
|
+
# in JS style, all arg connect with " " <br>
|
113
|
+
# so cmd like `ls -1` is OK
|
114
|
+
#
|
115
|
+
# @param [Array] argv
|
116
|
+
# @return [String | Array]
|
117
|
+
#
|
118
|
+
# @since 0.2.1
|
119
|
+
def _js_style_cmd(argv)
|
120
|
+
cmd, *args = argv
|
121
|
+
|
122
|
+
unless args.empty?
|
76
123
|
arr = [cmd]
|
77
|
-
|
124
|
+
args.each do |arg|
|
78
125
|
if arg.instance_of?(Array)
|
79
|
-
arr.push(
|
80
|
-
|
126
|
+
arr.push(%('#{arg.join(" ")}'))
|
127
|
+
else
|
81
128
|
arr.push(arg)
|
82
129
|
end
|
83
130
|
end
|
84
|
-
|
85
131
|
cmd = arr.join(" ")
|
86
132
|
end
|
87
|
-
|
88
|
-
# https://docs.ruby-lang.org/en/master/Kernel.html#method-i-60
|
89
|
-
output = `#{cmd}`
|
90
|
-
output.chomp
|
133
|
+
cmd
|
91
134
|
end
|
92
135
|
end
|
93
136
|
end
|
data/lib/libexec/version.rb
CHANGED
data/lib/libexec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libexec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- initdc
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Wrapper for ruby exec shell command.
|
14
14
|
email:
|