eco-helpers 1.5.2 → 1.5.7

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: afef384678f171e737391056ca300ac9d9c813240d32422445ad1e256911be31
4
- data.tar.gz: 82f7b611239cc9e5d58778d1db9ffaef7cef748360fd82abeba3df710c56ac60
3
+ metadata.gz: 7620c9cd737d1ba284868030b84b2589b0cd55c71708fee487c79dbce3fa3313
4
+ data.tar.gz: 444174de9c8634744060d411dcbad7229ef6c2acf24065f001ff29ecd41c6d4c
5
5
  SHA512:
6
- metadata.gz: 6516df10c5fbf6d48f8fa5bfdb993320a15043fecdcbe84c2927c6c84ab9fd817d298f9ae0806a6e43476d2342e862fbecb55ed14fc532bc4cf007f32a9ff7e6
7
- data.tar.gz: 13763cf62b5d0741d0d23837f66480fcf678ac317d6ac726cdea0fbd12cb4ce048b57e3278053536c214661f9aa591a90a22e06b5a24720bba087459c6536d72
6
+ metadata.gz: ae26e27d3b51f2b11cc50f6a6c6acc6229172b6a0416ca6feb633727b7fb45c9f19307d8d355ea14f77a67a041cf6886b54299f555b45990ff2c16ff6857f130
7
+ data.tar.gz: a11ca5b39ca0067c912b2ae59b5bfff1f59caa8ee23565b91f3dc8d694c966cc593a9efb5b7ca1c9c53cae4855f6fa4e59c3a792c6068c5179637641f22a5300
@@ -1,7 +1,46 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [1.5.2] - 2020-10-29
4
+ ## [1.5.7] - 2020-12-17
5
+
6
+ ### Added
7
+ ### Changed
8
+ ### Fixed
9
+ - `Eco::API::Sesssion#parse_attribute` was not using phase argument
10
+
11
+ ## [1.5.6] - 2020-12-04
12
+
13
+ ### Added
14
+ ### Changed
15
+ ### Fixed
16
+ - `Eco::API::UseCases::DefaultCases::RestoreDBCase` fixed typo and slightly improved
17
+ - fixed some back-end errors when chaining usecases
18
+ - `Eco::API::UseCases::DefaultCases::OrgDataConvertCase` improved
19
+
20
+ ## [1.5.5] - 2020-12-03
21
+
22
+ ### Added
23
+ ### Changed
24
+ ### Fixed
25
+ - rubies previous to `2.5` do not have `yield_self`
26
+
27
+ ## [1.5.4] - 2020-12-02
28
+
29
+ ### Added
30
+ - update `ecoportal-api` dependency
31
+ ### Changed
32
+ ### Fixed
33
+ - `Eco::API::MicroCases#people_refresh` typo
34
+
35
+ ## [1.5.3] - 2020-11-30
36
+
37
+ ### Added
38
+ ### Changed
39
+ ### Fixed
40
+ - `Eco::API::Session::Batch::RequestStats#blanked_value?` better blank detection
41
+ - `Eco::API::MicroCases#with_each_starter` rectified typo
42
+
43
+ ## [1.5.2] - 2020-11-26
5
44
 
6
45
  ### Added
7
46
  - **custom** usecases, policies and error handlers can now be **declared within its own class**
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.add_development_dependency "yard", ">= 0.9.18", "< 0.10"
29
29
  s.add_development_dependency "redcarpet", ">= 3.5.0", "< 3.6"
30
30
 
31
- s.add_dependency 'ecoportal-api', '>= 0.7.2', '< 0.8'
31
+ s.add_dependency 'ecoportal-api', '>= 0.7.3', '< 0.8'
32
32
  s.add_dependency 'ecoportal-api-oozes', '>= 0.7.2', '< 0.8'
33
33
  s.add_dependency 'aws-sdk-s3', '>= 1.64.0', '< 2'
34
34
  s.add_dependency 'aws-sdk-ses', '>= 1.29.0', '< 2'
@@ -7,6 +7,7 @@ module Eco
7
7
  end
8
8
  end
9
9
 
10
+ require_relative 'version_patches/object'
10
11
  require_relative 'version_patches/exception'
11
12
  require_relative 'version_patches/hash'
12
13
  require_relative 'version_patches/ecoportal_api'
@@ -0,0 +1,10 @@
1
+ Object.class_eval do
2
+ unless method_defined?(:yield_self)
3
+ define_method(:yield_self) do |&block|
4
+ return block.call(self) if block
5
+ out = self
6
+ out = [self] unless self.is_a?(Enumerable)
7
+ out.each
8
+ end
9
+ end
10
+ end
@@ -23,7 +23,7 @@ module Eco
23
23
  missing = people.length - entries.length
24
24
  logger.error("Missed to obtain #{missing} people during the refresh") if missing > 0
25
25
 
26
- Eco::API::Organization::People.new(status.people)
26
+ Eco::API::Organization::People.new(entries)
27
27
  end
28
28
 
29
29
  end
@@ -19,7 +19,7 @@ module Eco
19
19
  session.logger.error("This person (id: '#{person.id}') already exists: #{entry.to_s(:identify)}")
20
20
  next
21
21
  end
22
- staters << person
22
+ starters << person
23
23
  yield(entry, person) if block_given?
24
24
  end
25
25
  people.newFrom starters
@@ -126,7 +126,7 @@ module Eco
126
126
  unless parsers = entry_factory.person_parser
127
127
  raise "There are no parsers defined"
128
128
  end
129
- parsers.parse(attr, source)
129
+ parsers.parse(attr, source, phase)
130
130
  end
131
131
 
132
132
  # @see Eco::API::Common::People::EntryFactory#export
@@ -214,8 +214,12 @@ module Eco
214
214
  case value
215
215
  when nil
216
216
  true
217
+ when false
218
+ true
219
+ when Numeric
220
+ value == 0
217
221
  when Array
218
- value.empty?
222
+ value.compact.empty?
219
223
  when String
220
224
  value.to_s.strip.empty?
221
225
  end
@@ -2,6 +2,8 @@ class Eco::API::UseCases::DefaultCases::OrgDataConvertCase < Eco::API::Common::L
2
2
  name "org-data-convert"
3
3
  type :import
4
4
 
5
+ attr_reader :session, :options
6
+
5
7
  def org_data_convert(people)
6
8
  pp "Going to convert data from '#{source_enviro}' to '#{ASSETS.active_config}'"
7
9
  puts "\n"
@@ -50,27 +52,43 @@ class Eco::API::UseCases::DefaultCases::OrgDataConvertCase < Eco::API::Common::L
50
52
 
51
53
  def policy_groups_convert(ids)
52
54
  ids.map do |id|
53
- unless name = source_config.policy_groups.to_name(id)
54
- error("Ops, do not know #{id} usergroup for source environment")
55
+ unless name = source_policy_groups.to_name(id) || ignore_missing_policy_groups?
56
+ msg = "Ops, do not know #{id} usergroup for source environment"
57
+ msg += "\nUse the option -ignore-missing-policy-groups if you do not care"
58
+ error(msg)
55
59
  end
56
60
  session.policy_groups.to_id(name).tap do |new_id|
57
- unless new_id
58
- error("Ops, do not know #{name} usergroup for destination environment")
61
+ unless new_id || ignore_missing_policy_groups?
62
+ msg = "Ops, do not know #{name} usergroup for destination environment"
63
+ msg += "\nUse the option -ignore-missing-policy-groups if you do not care"
64
+ error(msg)
59
65
  end
60
66
  end
61
- end
67
+ end.compact
68
+ end
69
+
70
+ def source_policy_groups
71
+ source_config.policy_groups
62
72
  end
63
73
 
64
74
  def source_config
65
- @source_config ||= ASSETS.config(key: source_enviro, update_active: false)
75
+ @source_config ||= ASSETS.config(key: source_enviro, update_active: false).tap do |config|
76
+ unless config
77
+ error("The source environment '#{source_enviro}' does not exit or is not configured")
78
+ end
79
+ end
66
80
  end
67
81
 
68
82
  def source_enviro
69
83
  @source_enviro ||= options.dig(:source_enviro).tap do |enviro|
70
- error("A source organization is required to migrate data") unless enviro
84
+ error("A source environment is required to migrate data from") unless enviro
71
85
  end
72
86
  end
73
87
 
88
+ def ignore_missing_policy_groups?
89
+ options.dig(:ignore, :missing, :policy_groups)
90
+ end
91
+
74
92
  def logger
75
93
  @session.logger
76
94
  end
@@ -2,7 +2,11 @@ class Eco::API::UseCases::DefaultCases::RestoreDBCase < Eco::API::Common::Loader
2
2
  name "restore-db"
3
3
  type :sync
4
4
 
5
+ attr_reader :session, :options
6
+
5
7
  def main(entries, people, session, options, usecase)
8
+ @session = session; @options = options
9
+
6
10
  micro = session.micro
7
11
  require_people_as_entries!(entries)
8
12
 
@@ -26,21 +30,21 @@ class Eco::API::UseCases::DefaultCases::RestoreDBCase < Eco::API::Common::Loader
26
30
 
27
31
  person.new? ? restart.add(person) : update.add(person)
28
32
 
29
- core_copy(entry, person, options) unless options.dig(:exclude, :core)
30
- person.details = entry.details unless options.dig(:exclude, :details)
33
+ core_copy(entry, person) unless options.dig(:exclude, :core)
34
+ person.details = entry.details unless options.dig(:exclude, :details)
31
35
 
32
36
  unless options.dig(:exclude, :account) || !entry.account
33
37
  person.account ||= {}
34
- account_copy(entry.account, person.account, options)
38
+ account_copy(entry.account, person.account)
35
39
  end
36
40
  end
37
41
 
38
- report_re_starters(re_starters, session.logger)
42
+ report_re_starters(re_starters)
39
43
  end
40
44
 
41
45
  private
42
46
 
43
- def core_copy(entry, person, options)
47
+ def core_copy(entry, person)
44
48
  person.external_id = entry.external_id unless options.dig(:exclude, :external_id)
45
49
  person.name = entry.name unless options.dig(:exclude, :name)
46
50
  person.email = entry.email unless options.dig(:exclude, :email)
@@ -49,8 +53,8 @@ class Eco::API::UseCases::DefaultCases::RestoreDBCase < Eco::API::Common::Loader
49
53
  person.freemium = entry.freemium
50
54
  end
51
55
 
52
- def account_copy(src, dst, options)
53
- if src = entry.account
56
+ def account_copy(src, dst)
57
+ if src
54
58
  dst.default_tag = src.default_tag unless options.dig(:exclude, :filter_tags)
55
59
  dst.policy_group_ids = src.policy_group_ids unless options.dig(:exclude, :policy_groups)
56
60
 
@@ -59,27 +63,31 @@ class Eco::API::UseCases::DefaultCases::RestoreDBCase < Eco::API::Common::Loader
59
63
  dst.permissions_custom = src.permissions_custom
60
64
  end
61
65
 
62
- dst.login_provider_ids = src.login_provider_ids
63
- dst.accept_eula = src.accept_eula
66
+ unless options.dig(:exclude, :login_providers) || options.dig(:source_enviro)
67
+ dst.login_provider_ids = src.login_provider_ids
68
+ end
64
69
 
65
70
  if src.preferences
66
71
  dst.doc["preferences"] = JSON.parse((src.doc["preferences"] || {}).to_json)
67
72
  end
68
73
 
69
- dst.starred_ids = src.starred_ids
70
- dst.landing_page_id = src.landing_page_id
74
+ unless options.dig(:source_enviro)
75
+ dst.starred_ids = src.starred_ids
76
+ dst.landing_page_id = src.landing_page_id
77
+ end
78
+
71
79
  dst&.send_invites = options[:send_invites] if options.key?(:send_invites)
72
80
  end
73
81
  end
74
82
 
75
- def require_people_as_entries!(entries, logger)
83
+ def require_people_as_entries!(entries)
76
84
  unless entries.is_a?(Eco::API::Organization::People)
77
85
  logger.error("Your input should be an 'Eco::API::Organization::People' object. Got: #{entries.class}")
78
86
  exit(1)
79
87
  end
80
88
  end
81
89
 
82
- def report_re_starters(re_starters, logger)
90
+ def report_re_starters(re_starters)
83
91
  unless re_starters.empty?
84
92
  logger.error("There were #{re_starters.length} entries of the backup that do not exist in the (filtered?) people manager")
85
93
  logger.error("Some examples:")
@@ -89,4 +97,8 @@ class Eco::API::UseCases::DefaultCases::RestoreDBCase < Eco::API::Common::Loader
89
97
  end
90
98
  end
91
99
 
100
+ def logger
101
+ session.logger
102
+ end
103
+
92
104
  end
@@ -36,7 +36,7 @@ module Eco
36
36
  # @option kargs [Eco::API:Session] :session
37
37
  # @option kargs [Hash] :options hash with symbol keys (i.e. behaviour modifiers, cli trackers, filters, etc.)
38
38
  def launch(io: nil, **kargs)
39
- params = io&.params(keyed: true) || {}
39
+ params = io&.params(keyed: true, all: true) || {}
40
40
  kargs = params.merge(kargs).merge(usecase: self)
41
41
 
42
42
  UseCaseIO.new(**kargs).tap do |uio|
@@ -65,7 +65,6 @@ module Eco
65
65
  #kargs = aux_io.params(keyed: true)
66
66
  kargs = params(keyed: true, all: true).merge(usecase: usecase)
67
67
  kargs.delete(:job)
68
-
69
68
  case self.type
70
69
  when :import
71
70
  kargs[:input] = output
@@ -55,6 +55,27 @@ ASSETS.cli.config do |cnf|
55
55
  options.deep_merge!(super: {new: new_id})
56
56
  end
57
57
 
58
+ desc = "Usage '-org-data-convert backup.json -restore-db-from'."
59
+ desc += " Transforms an input .json file to the values of the destination environment "
60
+ desc += " (names missmatch won't solve: i.e. usergroups)"
61
+ cases.add("-org-data-convert", :import, desc, case_name: "org-data-convert") do |input, session, options|
62
+ unless input && input.is_a?(Eco::API::Organization::People)
63
+ file = SCR.get_file("-org-data-convert", required: true)
64
+ input = Eco::API::Organization::People.new(JSON.parse(File.read(file)))
65
+ session.logger.info("Source DB: loaded #{input.length} entries.")
66
+ end
67
+
68
+ if source_enviro = SCR.get_arg("-source-enviro", with_param: true)
69
+ options.merge!(source_enviro: source_enviro)
70
+ else
71
+ session.logger.error("You need to specify a -source-enviro for the conversion to work out")
72
+ exit(1)
73
+ end
74
+
75
+ options.deep_merge!(ignore: {missing: {policy_groups: true}}) if SCR.get_arg("-ignore-missing-policy-groups")
76
+
77
+ end
78
+
58
79
  desc = "Restores the people manager by using a backup.json file"
59
80
  cases.add("-restore-db-from", :sync, desc, case_name: "restore-db") do |input, people, session, options|
60
81
  unless input && input.is_a?(Eco::API::Organization::People)
@@ -122,7 +122,7 @@ ASSETS.cli.config do |config|
122
122
 
123
123
  wf.on(:report) do |wf_report, io|
124
124
  #config.reports.active(io: io)
125
- #io.session.reports
125
+ #io.session.reports
126
126
  io
127
127
  end
128
128
 
@@ -94,7 +94,7 @@ module Eco
94
94
  when Eco::API::UseCases::UseCaseIO
95
95
  io.chain(usecase: usecase)
96
96
  when Eco::API::UseCases::BaseIO
97
- params = io.params(keyed: true).merge(usecase: usecase)
97
+ params = io.params(keyed: true, all: true).merge(usecase: usecase)
98
98
  Eco::API::UseCases::UseCaseIO.new(**params)
99
99
  end
100
100
  end
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "1.5.2"
2
+ VERSION = "1.5.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -116,7 +116,7 @@ dependencies:
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 0.7.2
119
+ version: 0.7.3
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0.8'
@@ -126,7 +126,7 @@ dependencies:
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 0.7.2
129
+ version: 0.7.3
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0.8'
@@ -296,6 +296,7 @@ files:
296
296
  - lib/eco/api/common/version_patches/exception.rb
297
297
  - lib/eco/api/common/version_patches/hash.rb
298
298
  - lib/eco/api/common/version_patches/hash/deep_merge.rb
299
+ - lib/eco/api/common/version_patches/object.rb
299
300
  - lib/eco/api/custom.rb
300
301
  - lib/eco/api/custom/error_handler.rb
301
302
  - lib/eco/api/custom/namespace.rb