eac_ruby_utils 0.40.0 → 0.41.0

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
  SHA256:
3
- metadata.gz: 60224aa50261e8212946f7fb3cbe3efd1bef3ee6853bf827d78ca18810d81fc9
4
- data.tar.gz: 2da01ff57939fc85b13fab89241c711526726681e547d0194565cad04b9ce811
3
+ metadata.gz: 8e04909bde0d65f8b8615601194b4fb9c1fb3b6b56f6bf02cd98103fe0510e7b
4
+ data.tar.gz: 902d0c69a54f0a0330c4e47afa498501b02beec6367c6d952f6d72f8388b74c5
5
5
  SHA512:
6
- metadata.gz: 35bd1179d9dfdaf7f741f2cf054a379ed37018318955397996bdc8acd484d53b602efc9d383d2c9ee866db00dc306843c48e5c282812f56d08439a1f286c5b78
7
- data.tar.gz: 4a937089189a97671ccfa8e30499fa0ddcc69843bdfd6a96232594e48c2019f20bcc02e653c597e2f086c6990437cb5c9d13b58287c4dc87817b0ea5d2a875e9
6
+ metadata.gz: cbaf478b74fbb77fff8682b733685773ad8c3de4eac8e5fc9c2adcca81fbeac56a5e4df330c0ffb60097f1c3d75b371270814b52ca1bd54ef77fa417adf55284
7
+ data.tar.gz: 947edd1f4ba4f942ba78ed5e17f99b95d1d89f456426437efa6c3eb35128c12b312fb628f962f0e123a38d8ea37c6fa7a135d1c4c4d7d1b6f9b6449e465458ed
@@ -2,12 +2,14 @@
2
2
 
3
3
  require 'addressable'
4
4
  require 'eac_ruby_utils/envs/base_env'
5
+ require 'eac_ruby_utils/patches/object/if_present'
5
6
  require 'net/ssh'
6
7
  require 'shellwords'
7
8
 
8
9
  module EacRubyUtils
9
10
  module Envs
10
11
  class SshEnv < ::EacRubyUtils::Envs::BaseEnv
12
+ IDENTITITY_FILE_OPTION = 'IdentityFile'
11
13
  USER_PATTERN = /[a-z_][a-z0-9_-]*/.freeze
12
14
  HOSTNAME_PATTERN = /[^@]+/.freeze
13
15
  USER_HOSTNAME_PATTERN = /\A(?:(#{USER_PATTERN})@)?(#{HOSTNAME_PATTERN})\z/.freeze
@@ -51,6 +53,7 @@ module EacRubyUtils
51
53
  def ssh_command_line
52
54
  r = %w[ssh]
53
55
  r += ['-p', uri.port] if uri.port.present?
56
+ ssh_identity_file.if_present { |v| r += ['-i', v] }
54
57
  r += ssh_command_line_options
55
58
  r << user_hostname_uri
56
59
  r.map { |a| Shellwords.escape(a) }.join(' ')
@@ -58,7 +61,9 @@ module EacRubyUtils
58
61
 
59
62
  def ssh_command_line_options
60
63
  r = []
61
- uri.query_values&.each { |k, v| r += ['-o', "#{k}=#{v}"] }
64
+ uri.query_values&.each do |k, v|
65
+ r += ['-o', "#{k}=#{v}"] unless k == IDENTITITY_FILE_OPTION
66
+ end
62
67
  r
63
68
  end
64
69
 
@@ -67,6 +72,12 @@ module EacRubyUtils
67
72
  r = "#{uri.user}@#{r}" if uri.user.present?
68
73
  r
69
74
  end
75
+
76
+ def ssh_identity_file
77
+ uri.query_values.if_present do |v|
78
+ v[IDENTITITY_FILE_OPTION]
79
+ end
80
+ end
70
81
  end
71
82
  end
72
83
  end
@@ -18,6 +18,10 @@ module EacRubyUtils
18
18
  end
19
19
  end
20
20
 
21
+ def immutable_value_get(object)
22
+ super || []
23
+ end
24
+
21
25
  def immutable_value_set(object, value)
22
26
  duplicate_object(object) do |old_value|
23
27
  (old_value || []) + [value]
@@ -11,6 +11,10 @@ module EacRubyUtils
11
11
  apply_set(klass)
12
12
  end
13
13
 
14
+ def immutable_value_get(object)
15
+ super || {}
16
+ end
17
+
14
18
  def immutable_value_set(object, key, value)
15
19
  duplicate_object(object) do |old_value|
16
20
  (old_value || {}).merge(key => value)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.40.0'
4
+ VERSION = '0.41.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.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: 2020-07-10 00:00:00.000000000 Z
11
+ date: 2020-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport