eac_ruby_utils 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/eac_ruby_utils/console/docopt_runner.rb +2 -0
- data/lib/eac_ruby_utils/console/speaker.rb +18 -16
- data/lib/eac_ruby_utils/envs/base_env.rb +2 -0
- data/lib/eac_ruby_utils/envs/command.rb +21 -12
- data/lib/eac_ruby_utils/envs/local_env.rb +2 -0
- data/lib/eac_ruby_utils/envs/process.rb +2 -0
- data/lib/eac_ruby_utils/envs/ssh_env.rb +6 -3
- data/lib/eac_ruby_utils/envs.rb +2 -0
- data/lib/eac_ruby_utils/options_consumer.rb +31 -0
- data/lib/eac_ruby_utils/version.rb +1 -1
- data/lib/eac_ruby_utils/yaml.rb +13 -0
- data/lib/eac_ruby_utils.rb +2 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8b6e4d5bfab257e81419c888fb9463ec1e7766dde3cda6b9e36fa9fd741a35c
|
4
|
+
data.tar.gz: c5fdbab98b1e9b659c16ec8919995ba824380a140fee28697600ddee97a0cd4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c7279d045fdb2e6af2d3cc90f87605e562c9765a85c7b7988a57fd9da1aca598c14db699fc7af6d0256363352b0ffbebb60cd6ed9fbefe8c473941cee2004f4
|
7
|
+
data.tar.gz: 1e91ea3a626b6b0d2a439f30db473fef869a708d795e0a48341b2b7b66146813ae38530d8b029ecb6436f55c1c8927884ad8af0cc72bee3f34bcc4a9c42b139a
|
@@ -1,33 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacRubyUtils
|
2
4
|
module Console
|
3
5
|
# https://github.com/fazibear/colorize
|
4
6
|
module Speaker
|
5
|
-
def puts(
|
6
|
-
STDERR.puts(
|
7
|
+
def puts(string = '')
|
8
|
+
STDERR.puts(string)
|
7
9
|
end
|
8
10
|
|
9
|
-
def out(
|
10
|
-
STDOUT.write(
|
11
|
+
def out(string = '')
|
12
|
+
STDOUT.write(string)
|
11
13
|
end
|
12
14
|
|
13
|
-
def fatal_error(
|
14
|
-
puts "ERROR: #{
|
15
|
+
def fatal_error(string)
|
16
|
+
puts "ERROR: #{string}".white.on_red
|
15
17
|
Kernel.exit 1
|
16
18
|
end
|
17
19
|
|
18
|
-
def title(
|
19
|
-
puts(('-' * (8 +
|
20
|
-
puts("--- #{
|
21
|
-
puts(('-' * (8 +
|
20
|
+
def title(string)
|
21
|
+
puts(('-' * (8 + string.length)).green)
|
22
|
+
puts("--- #{string} ---".green)
|
23
|
+
puts(('-' * (8 + string.length)).green)
|
22
24
|
puts
|
23
25
|
end
|
24
26
|
|
25
|
-
def info(
|
26
|
-
puts
|
27
|
+
def info(string)
|
28
|
+
puts string.white
|
27
29
|
end
|
28
30
|
|
29
|
-
def warn(
|
30
|
-
puts
|
31
|
+
def warn(string)
|
32
|
+
puts string.yellow
|
31
33
|
end
|
32
34
|
|
33
35
|
def infov(*args)
|
@@ -42,8 +44,8 @@ module EacRubyUtils
|
|
42
44
|
puts r.join(', ')
|
43
45
|
end
|
44
46
|
|
45
|
-
def success(
|
46
|
-
puts
|
47
|
+
def success(string)
|
48
|
+
puts string.green
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacRubyUtils
|
2
4
|
module Envs
|
3
5
|
class Command
|
@@ -36,6 +38,7 @@ module EacRubyUtils
|
|
36
38
|
def execute!(options = {})
|
37
39
|
er = ExecuteResult.new(execute(options), options)
|
38
40
|
return er.result if er.success?
|
41
|
+
|
39
42
|
raise "execute! command failed: #{self}\n#{er.r.pretty_inspect}"
|
40
43
|
end
|
41
44
|
|
@@ -51,6 +54,7 @@ module EacRubyUtils
|
|
51
54
|
|
52
55
|
def system!(options = {})
|
53
56
|
return if system(options)
|
57
|
+
|
54
58
|
raise "system! command failed: #{self}"
|
55
59
|
end
|
56
60
|
|
@@ -66,30 +70,35 @@ module EacRubyUtils
|
|
66
70
|
ENV['DEBUG'].to_s.strip != ''
|
67
71
|
end
|
68
72
|
|
69
|
-
def append_command_options(
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
73
|
+
def append_command_options(command, options)
|
74
|
+
command = options[:input].command + ' | ' + command if options[:input]
|
75
|
+
if options[:input_file]
|
76
|
+
command = "cat #{Shellwords.escape(options[:input_file])}" \
|
77
|
+
" | #{command}"
|
78
|
+
end
|
79
|
+
command += ' > ' + Shellwords.escape(options[:output_file]) if options[:output_file]
|
80
|
+
command
|
74
81
|
end
|
75
82
|
|
76
|
-
def escape(
|
77
|
-
raise "#{
|
78
|
-
|
79
|
-
m
|
83
|
+
def escape(arg)
|
84
|
+
raise "#{arg}|#{arg.class}" unless arg.is_a?(String)
|
85
|
+
|
86
|
+
m = /^\@ESC_(.+)$/.match(arg)
|
87
|
+
m ? m[1] : Shellwords.escape(arg)
|
80
88
|
end
|
81
89
|
|
82
90
|
class ExecuteResult
|
83
91
|
attr_reader :r, :options
|
84
92
|
|
85
|
-
def initialize(
|
86
|
-
@r =
|
93
|
+
def initialize(result, options)
|
94
|
+
@r = result
|
87
95
|
@options = options
|
88
96
|
end
|
89
97
|
|
90
98
|
def result
|
91
99
|
return exit_code_zero_result if exit_code_zero?
|
92
100
|
return expected_error_result if expected_error?
|
101
|
+
|
93
102
|
raise 'Failed!'
|
94
103
|
end
|
95
104
|
|
@@ -100,7 +109,7 @@ module EacRubyUtils
|
|
100
109
|
private
|
101
110
|
|
102
111
|
def exit_code_zero?
|
103
|
-
r[:exit_code]
|
112
|
+
r[:exit_code]&.zero?
|
104
113
|
end
|
105
114
|
|
106
115
|
def exit_code_zero_result
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacRubyUtils
|
2
4
|
module Envs
|
3
5
|
class SshEnv < ::EacRubyUtils::Envs::BaseEnv
|
@@ -5,13 +7,14 @@ module EacRubyUtils
|
|
5
7
|
def parse_uri(uri)
|
6
8
|
r = parse_user_hostname(uri) || ::Addressable::URI.parse(uri)
|
7
9
|
return r if r.scheme == 'ssh'
|
10
|
+
|
8
11
|
raise "URI has no SSH scheme: #{uri}"
|
9
12
|
end
|
10
13
|
|
11
14
|
private
|
12
15
|
|
13
|
-
def parse_user_hostname(
|
14
|
-
m = /\A([^@]+)@([^@]+)\z/.match(
|
16
|
+
def parse_user_hostname(user_hostname)
|
17
|
+
m = /\A([^@]+)@([^@]+)\z/.match(user_hostname)
|
15
18
|
m ? ::Addressable::URI.new(scheme: 'ssh', host: m[2], user: m[1]) : nil
|
16
19
|
rescue Addressable::URI::InvalidURIError
|
17
20
|
nil
|
@@ -44,7 +47,7 @@ module EacRubyUtils
|
|
44
47
|
|
45
48
|
def ssh_command_line_options
|
46
49
|
r = []
|
47
|
-
uri.query_values
|
50
|
+
uri.query_values&.each { |k, v| r += ['-o', "#{k}=#{v}"] }
|
48
51
|
r
|
49
52
|
end
|
50
53
|
end
|
data/lib/eac_ruby_utils/envs.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EacRubyUtils
|
4
|
+
class OptionsConsumer
|
5
|
+
def initialize(data)
|
6
|
+
@data = data.with_indifferent_access
|
7
|
+
end
|
8
|
+
|
9
|
+
def consume(key, default_value = nil, &block)
|
10
|
+
return default_value unless data.key?(key)
|
11
|
+
|
12
|
+
value = data.delete(key)
|
13
|
+
value = yield(value) if block
|
14
|
+
value
|
15
|
+
end
|
16
|
+
|
17
|
+
def validate
|
18
|
+
return if data.empty?
|
19
|
+
|
20
|
+
raise "Invalid keys: #{data.keys}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def left_data
|
24
|
+
data.dup
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :data
|
30
|
+
end
|
31
|
+
end
|
data/lib/eac_ruby_utils.rb
CHANGED
@@ -7,6 +7,7 @@ require 'pp'
|
|
7
7
|
require 'net/ssh'
|
8
8
|
|
9
9
|
module EacRubyUtils
|
10
|
+
require 'eac_ruby_utils/options_consumer'
|
10
11
|
require 'eac_ruby_utils/console/docopt_runner'
|
11
12
|
require 'eac_ruby_utils/console/speaker'
|
12
13
|
require 'eac_ruby_utils/envs'
|
@@ -15,4 +16,5 @@ module EacRubyUtils
|
|
15
16
|
require 'eac_ruby_utils/envs/local_env'
|
16
17
|
require 'eac_ruby_utils/envs/process'
|
17
18
|
require 'eac_ruby_utils/envs/ssh_env'
|
19
|
+
require 'eac_ruby_utils/yaml'
|
18
20
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_ruby_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: colorize
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,7 +82,9 @@ files:
|
|
68
82
|
- lib/eac_ruby_utils/envs/local_env.rb
|
69
83
|
- lib/eac_ruby_utils/envs/process.rb
|
70
84
|
- lib/eac_ruby_utils/envs/ssh_env.rb
|
85
|
+
- lib/eac_ruby_utils/options_consumer.rb
|
71
86
|
- lib/eac_ruby_utils/version.rb
|
87
|
+
- lib/eac_ruby_utils/yaml.rb
|
72
88
|
homepage:
|
73
89
|
licenses:
|
74
90
|
- MIT
|