eco-helpers 3.0.35 → 3.0.36

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
  SHA256:
3
- metadata.gz: 066f83734d88958d4068ea25131fdf31b9f1e8002a120ddfa9869831f859a548
4
- data.tar.gz: 874dcfebe7974fea10d8b68220ce665748851862da15724c1f62a16e1ae990df
3
+ metadata.gz: 0e20a7da6586a0761a6f727d17030b1d7f193d2e4784f993b03ea6fdb2e5dc59
4
+ data.tar.gz: da8b1b55aa5b4724fd1addf04117c2ffbcc528e14fb3c2a4606c4d736bad2d5d
5
5
  SHA512:
6
- metadata.gz: 0ae22bb1f7d33eb073ce0cb55e2f35f8bf4d3480e21af463b5f9921f423a65672cad9626d0a2e8eb197bc3a050c8e3dd558bcdcaa15bcb3236b0f117fdbb3e8d
7
- data.tar.gz: 87ebd3f93e78286e4615afd833230ed0744debde8d8c6382e8dcc0f0e44f697d4871bd7b6636ae0c2d05bc9c5fe2d56ecb25da1bab9d2dadb989d5cfb0cb91a7
6
+ metadata.gz: 3c83dbf3bd230f10db7db729c68856817a83957f666cbba326fcec9e49b8564fb1b360af759aa7739a41918e23d85a854addacac6983dba351b8a242b896aa2c
7
+ data.tar.gz: a672f177a39d3e0d38bfb090f267d8111dc296a0953e91554907866c506f841c91594e5856870bf4bd005aa67dc69f3e5cca86bd36cbd311537191747f7ac40d
data/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [3.0.36] - 2025-04-xx
5
+ ## [3.0.37] - 2025-04-xx
6
6
 
7
7
  ### Added
8
8
 
@@ -10,6 +10,17 @@ All notable changes to this project will be documented in this file.
10
10
 
11
11
  ### Fixed
12
12
 
13
+ ## [3.0.36] - 2025-04-15
14
+
15
+ ### Added
16
+
17
+ - `UseCases::Lib::Base::Env`
18
+ - `UseCases::Service::Sftp` wrap specific methods to use different `sftp` paths.
19
+
20
+ ### Changed
21
+
22
+ - `UseCases::Lib::Files::Sftp` to use `Lib::Base::Env`
23
+
13
24
  ## [3.0.35] - 2025-04-09
14
25
 
15
26
  ### Fixed
@@ -0,0 +1,46 @@
1
+ module Eco::API::UseCases::Lib::Base
2
+ # Basic stuff you would need in any use case
3
+ # @note this is intended to be at the foremost part upfront
4
+ module Env
5
+ class << self
6
+ def included(base)
7
+ super
8
+
9
+ base.send :include, Eco::Language::AuxiliarLogger
10
+ base.prepend(InstanceMethods)
11
+ end
12
+ end
13
+
14
+ module InstanceMethods
15
+ private
16
+
17
+ def config
18
+ session.config
19
+ end
20
+
21
+ def session(required: true)
22
+ if instance_variable_defined?(:@session) && !@session.nil?
23
+ @session
24
+ elsif defined?(super) && !super.nil?
25
+ super
26
+ elsif Object.const_defined?(:ASSETS)
27
+ ASSETS.session
28
+ elsif required
29
+ raise 'Missing session object'
30
+ end
31
+ end
32
+
33
+ def options(required: true)
34
+ if instance_variable_defined?(:@options) && !@options.nil?
35
+ @session
36
+ elsif defined?(super) && !super.nil?
37
+ super
38
+ elsif Object.const_defined?(:ASSETS)
39
+ ASSETS.cli.options
40
+ else
41
+ raise 'Missing options object'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,6 @@
1
+ module Eco::API::UseCases::Lib
2
+ module Base
3
+ end
4
+ end
5
+
6
+ require_relative 'base/env'
@@ -1,5 +1,5 @@
1
1
  module Eco::API::UseCases::Lib
2
- # Basic stuff you would need in any use case
2
+ # Basic error handling you would need in any use case
3
3
  module ErrorHandling
4
4
  include Eco::Language::AuxiliarLogger
5
5
 
@@ -2,9 +2,13 @@ module Eco::API::UseCases::Lib::Files
2
2
  module Sftp
3
3
  class UnspecifiedRemoteFolder < ArgumentError; end
4
4
 
5
- include Eco::Language::AuxiliarLogger
5
+ class << self
6
+ def included(base)
7
+ super
6
8
 
7
- attr_reader :session, :options
9
+ base.send :include, Eco::API::UseCases::Lib::Base::Env
10
+ end
11
+ end
8
12
 
9
13
  private
10
14
 
@@ -136,6 +140,7 @@ module Eco::API::UseCases::Lib::Files
136
140
 
137
141
  # `remote_target_folder` overrides `sftp_config.remote_folder` as well as `remote_subfolder`
138
142
  # `remote_folder` overrides `sftp_config.remote_folder` but NOT `remote_subfolder`
143
+ # @note `sftp_config.remote_folder` has already the subpath of the active enviro.
139
144
  def remote_folder(subfolder = remote_subfolder)
140
145
  return super if defined?(super) && !super.nil?
141
146
 
@@ -177,7 +182,7 @@ module Eco::API::UseCases::Lib::Files
177
182
  end
178
183
 
179
184
  def sftp_config
180
- session.config.sftp
185
+ config.sftp
181
186
  end
182
187
 
183
188
  def sftp_session
@@ -8,4 +8,5 @@ module Eco
8
8
  end
9
9
 
10
10
  require_relative 'lib/error_handling'
11
+ require_relative 'lib/base'
11
12
  require_relative 'lib/files'
@@ -0,0 +1,74 @@
1
+ module Eco::API::UseCases::Service
2
+ # Class that pulls configuration from the subject (i.e. `remote_folder`)
3
+ class Sftp
4
+ module WithTargetConfig
5
+ class << self
6
+ def included(base)
7
+ super
8
+
9
+ # base.send :include, Eco::Language::Methods::InstanceMethodHelpers
10
+ # base.extend ClassMethods
11
+ base.send :include, InstanceMethods
12
+ end
13
+ end
14
+
15
+ module InstanceMethods
16
+ private
17
+
18
+ def with_target_sftp_config
19
+ src_base = sftp_config.base_path
20
+ src_path = sftp_config.enviro_subpaths
21
+
22
+ sftp_config.base_path = _base_path
23
+ sftp_config.enviro_subpaths = _env_paths
24
+
25
+ yield
26
+ ensure
27
+ sftp_config.base_path = src_base
28
+ sftp_config.enviro_subpaths = src_path
29
+ end
30
+
31
+ def _base_path
32
+ self.class::BASE_PATH if self.class.const_defined?(:BASE_PATH)
33
+ end
34
+
35
+ def _env_paths
36
+ self.class::ENV_PATHS if self.class.const_defined?(:ENV_PATHS)
37
+ end
38
+ end
39
+
40
+ # module ClassMethods
41
+ # def wrap_with_target_sftp(*mtds)
42
+ # mtds.map(&:to_sym).each do |method_name|
43
+ # msg = "#{self} does not have instance method '#{method_name}'"
44
+ # has_method = instance_method?(name: method_name, include_private: true, inherited: true)
45
+ # raise ArgumentError, msg unless has_method
46
+ #
47
+ # method_was_inherited = instance_inherited_method?(name: method_name)
48
+ # method_is_public = instance_method?(name: method_name, include_private: false)
49
+ # original_method = :"method_to_wrap_with_target_sftp_#{method_name}"
50
+ #
51
+ # # don't over-override
52
+ # next if instance_method?(name: original_method, include_private: true, inherited: true)
53
+ #
54
+ # method_def = proc do |*args, **kargs, &block|
55
+ # with_target_sftp_config do
56
+ # if method_was_inherited
57
+ # super(*args, **kargs, &block)
58
+ # else
59
+ # send(original_method, *args, **kargs, &block)
60
+ # end
61
+ # end
62
+ # end
63
+ #
64
+ # alias_method(original_method, method_name) unless method_was_inherited
65
+ # define_method(method_name, &method_def)
66
+ # private method_name unless method_is_public
67
+ # end
68
+ #
69
+ # self
70
+ # end
71
+ # end
72
+ end
73
+ end
74
+ end
@@ -1,7 +1,12 @@
1
+ require_relative 'sftp/with_target_config'
1
2
  module Eco::API::UseCases::Service
2
3
  # Class that pulls configuration from the subject (i.e. `remote_folder`)
3
4
  class Sftp
4
5
  include Eco::API::UseCases::Lib::Files::Sftp
6
+ public(*Eco::API::UseCases::Lib::Files::Sftp.private_instance_methods(inherited: false))
7
+
8
+ include WithTargetConfig
9
+
5
10
  # include Eco::Language::Delegation::DelegatingMissing
6
11
  include Eco::Language::Delegation::DelegatingMissingConst
7
12
  include Eco::Language::Delegation::DelegatingBlank
@@ -19,18 +24,34 @@ module Eco::API::UseCases::Service
19
24
  @subject = subject
20
25
  end
21
26
 
22
- # @note overriding Sftp `attr_reader`
23
- def session
24
- subject.send(:session)
27
+ private
28
+
29
+ attr_reader :subject
30
+
31
+ def to_remote_path(...)
32
+ with_target_sftp_config do
33
+ super
34
+ end
35
+ end
36
+
37
+ def remote_folder(...)
38
+ with_target_sftp_config do
39
+ super
40
+ end
25
41
  end
26
42
 
27
- # @note overriding Sftp `attr_reader`
28
- def options
29
- subject.send(:options)
43
+ def _base_path
44
+ return send(:base_path) if respond_to?(:base_path, true)
45
+ return super if defined?(super) && !super.nil?
46
+
47
+ sftp_config.base_path
30
48
  end
31
49
 
32
- private
50
+ def _env_paths
51
+ return send(:env_paths) if respond_to?(:env_paths, true)
52
+ return super if defined?(super) && !super.nil?
33
53
 
34
- attr_reader :subject
54
+ sftp_config.enviro_subpaths
55
+ end
35
56
  end
36
57
  end
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = '3.0.35'.freeze
2
+ VERSION = '3.0.36'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.35
4
+ version: 3.0.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-08 00:00:00.000000000 Z
11
+ date: 2025-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -881,6 +881,8 @@ files:
881
881
  - lib/eco/api/usecases/graphql/utils.rb
882
882
  - lib/eco/api/usecases/graphql/utils/sftp.rb
883
883
  - lib/eco/api/usecases/lib.rb
884
+ - lib/eco/api/usecases/lib/base.rb
885
+ - lib/eco/api/usecases/lib/base/env.rb
884
886
  - lib/eco/api/usecases/lib/error_handling.rb
885
887
  - lib/eco/api/usecases/lib/files.rb
886
888
  - lib/eco/api/usecases/lib/files/file_pattern.rb
@@ -915,6 +917,7 @@ files:
915
917
  - lib/eco/api/usecases/samples/drivers/url_pull_sample.rb
916
918
  - lib/eco/api/usecases/service.rb
917
919
  - lib/eco/api/usecases/service/sftp.rb
920
+ - lib/eco/api/usecases/service/sftp/with_target_config.rb
918
921
  - lib/eco/api/usecases/use_case.rb
919
922
  - lib/eco/api/usecases/use_case/chainer.rb
920
923
  - lib/eco/api/usecases/use_case_chain.rb