eco-helpers 3.0.7 → 3.0.8
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/CHANGELOG.md +17 -1
- data/Rakefile +5 -0
- data/eco-helpers.gemspec +3 -0
- data/lib/eco/api/policies/default_policies/99_user_access_policy.rb +5 -2
- data/lib/eco/api/policies.rb +4 -2
- data/lib/eco/api/session/batch/job.rb +5 -2
- data/lib/eco/api/session/batch.rb +18 -2
- data/lib/eco/api/session/config.rb +1 -0
- data/lib/eco/api/session.rb +5 -1
- data/lib/eco/assets.rb +4 -2
- data/lib/eco/cli/scripting/args_helpers.rb +5 -2
- data/lib/eco/cli_default/options.rb +24 -2
- data/lib/eco/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5f99b7ad6dad2fcd262a6269bbe2c7a2acae695b077712ce745c9f0746e2580
|
4
|
+
data.tar.gz: de2217f416b703f1cc0ae06f6c42bddbebedef906013b128b5efcdc552df40af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6149a32bf28606ac1051a127deabefd66fbab577700035f36ba01b9268438b1223423a30e399c1efaed92858586722a0dfa6d7d1a180a4ff0870c894ac730fde
|
7
|
+
data.tar.gz: 1799bbf948a1725f99b567b0934c29eb53f3361db5c22c660e616e876cc857c15c85330db3d2e60df4a6d5f1c0c9697722e1ded6b114897cbe8b5a257fd06511
|
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.
|
5
|
+
## [3.0.9] - 2024-08-xx
|
6
6
|
|
7
7
|
### Added
|
8
8
|
|
@@ -10,6 +10,22 @@ All notable changes to this project will be documented in this file.
|
|
10
10
|
|
11
11
|
### Fixed
|
12
12
|
|
13
|
+
## [3.0.8] - 2024-08-30
|
14
|
+
|
15
|
+
### Added
|
16
|
+
|
17
|
+
- options to choose `-batch-mode` [`:batch`|`:job`]
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
|
21
|
+
- When `-skip-api-policies`
|
22
|
+
- Default policy: to skip non generic logic when api policies are skept
|
23
|
+
- Still run default policies
|
24
|
+
|
25
|
+
### Fixed
|
26
|
+
|
27
|
+
- unknown option `suggestions`
|
28
|
+
|
13
29
|
## [3.0.7] - 2024-08-27
|
14
30
|
|
15
31
|
### Added
|
data/Rakefile
CHANGED
@@ -19,6 +19,11 @@ RSpec::Core::RakeTask.new(:spec_fast) do |task|
|
|
19
19
|
end
|
20
20
|
task(rspec_fast: :spec_fast)
|
21
21
|
|
22
|
+
desc "run rubocop diaplying cop names"
|
23
|
+
RuboCop::RakeTask.new(:rubocop) do |t|
|
24
|
+
t.options = ['--display-cop-names']
|
25
|
+
end
|
26
|
+
|
22
27
|
# default task name is yard
|
23
28
|
desc "Yard: generate all the documentation"
|
24
29
|
YARD::Rake::YardocTask.new(:doc) do |t|
|
data/eco-helpers.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# rubocop:disable Gemspec/DevelopmentDependencies
|
1
2
|
lib = File.expand_path('lib', __dir__)
|
2
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
4
|
|
@@ -54,3 +55,5 @@ Gem::Specification.new do |spec|
|
|
54
55
|
spec.add_dependency 'roo-xls', '>= 1.2.0', '< 1.3'
|
55
56
|
spec.add_dependency 'rubyzip', '>= 2.3.2', '< 2.4'
|
56
57
|
end
|
58
|
+
|
59
|
+
# rubocop:enable Gemspec/DevelopmentDependencies
|
@@ -14,8 +14,10 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
|
|
14
14
|
self.account_removed_count = 0
|
15
15
|
|
16
16
|
people.each do |person|
|
17
|
-
remove_account_when_no_email!(person)
|
18
|
-
|
17
|
+
remove_account_when_no_email!(person)
|
18
|
+
|
19
|
+
next if options.dig(:skip, :api_policies)
|
20
|
+
next unless (account = person.account)
|
19
21
|
next if options.dig(:exclude, :account)
|
20
22
|
|
21
23
|
add_def_policy_group_if_applicable!(account)
|
@@ -35,6 +37,7 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def remove_account_when_no_email!(person)
|
40
|
+
return unless person.email.to_s.empty?
|
38
41
|
return unless person.account
|
39
42
|
|
40
43
|
self.account_removed_count += 1 if had_account?(person)
|
data/lib/eco/api/policies.rb
CHANGED
@@ -15,8 +15,10 @@ module Eco
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def add(policy)
|
18
|
-
|
19
|
-
|
18
|
+
msg = "Expected Eco::API::Policies::Policy object. Given: #{policy}"
|
19
|
+
raise ArgumentError, msg unless policy.is_a?(Eco::API::Policies::Policy)
|
20
|
+
|
21
|
+
super
|
20
22
|
end
|
21
23
|
|
22
24
|
def launch(people:, session:, job:, options: {})
|
@@ -350,9 +350,12 @@ module Eco
|
|
350
350
|
# Applies the changes introduced by api policies
|
351
351
|
def apply_policies(pre_queue)
|
352
352
|
people(pre_queue).tap do |entries|
|
353
|
-
|
353
|
+
if options.dig(:skip, :api_policies)
|
354
|
+
policies = session.default_policies
|
355
|
+
else
|
356
|
+
policies = session.policies
|
357
|
+
end
|
354
358
|
|
355
|
-
policies = session.policies
|
356
359
|
next if policies.empty?
|
357
360
|
|
358
361
|
policies.launch(
|
@@ -12,6 +12,16 @@ module Eco
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
# @return [Symbol] the batch mode to run
|
16
|
+
def batch_mode(opts = self.options)
|
17
|
+
opts.dig(:workflow, :batch, :mode) || :batch
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Boolean] are we running in `:job` mode?
|
21
|
+
def job_mode?(opts = self.options)
|
22
|
+
batch_mode(opts) == :job
|
23
|
+
end
|
24
|
+
|
15
25
|
# Gets the _people_ of the organization according `params`.
|
16
26
|
# If `people` is not `nil`, scopes to only the people specified.
|
17
27
|
# @note
|
@@ -113,6 +123,11 @@ module Eco
|
|
113
123
|
)
|
114
124
|
end
|
115
125
|
|
126
|
+
# Default way to retrieve options (unless provided)
|
127
|
+
def options
|
128
|
+
ASSETS.cli.options
|
129
|
+
end
|
130
|
+
|
116
131
|
def launch_batch( # rubocop:disable Metrics/AbcSize
|
117
132
|
data,
|
118
133
|
method:,
|
@@ -120,7 +135,8 @@ module Eco
|
|
120
135
|
job_mode: true, # rubocop:disable Lint/UnusedMethodArgument
|
121
136
|
per_page: DEFAULT_BATCH_BLOCK,
|
122
137
|
people_api: api&.people,
|
123
|
-
silent: false
|
138
|
+
silent: false,
|
139
|
+
options: self.options
|
124
140
|
)
|
125
141
|
iteration = 1
|
126
142
|
done = 0
|
@@ -145,7 +161,7 @@ module Eco
|
|
145
161
|
|
146
162
|
start_slice = Time.now
|
147
163
|
offer_retry_on(Ecoportal::API::Errors::TimeOut) do
|
148
|
-
people_api.batch(job_mode:
|
164
|
+
people_api.batch(job_mode: job_mode?(options)) do |batch|
|
149
165
|
slice.each do |person|
|
150
166
|
batch.public_send(method, person) do |response|
|
151
167
|
faltal("Request with no response") unless response
|
data/lib/eco/api/session.rb
CHANGED
@@ -252,11 +252,15 @@ module Eco
|
|
252
252
|
# @return [Eco::API::Policies]
|
253
253
|
def policies
|
254
254
|
@policies ||= config.policies.dup.tap do |policies|
|
255
|
-
default_policies = Eco::API::Policies::DefaultPolicies.new
|
256
255
|
policies.merge(default_policies)
|
257
256
|
end
|
258
257
|
end
|
259
258
|
|
259
|
+
# The native policies
|
260
|
+
def default_policies
|
261
|
+
@default_policies ||= Eco::API::Policies::DefaultPolicies.new
|
262
|
+
end
|
263
|
+
|
260
264
|
# Set of helpers to simplify your code
|
261
265
|
# @see Eco::API::MicroCases
|
262
266
|
# @return [Eco::API::MicroCases]
|
data/lib/eco/assets.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Eco
|
2
2
|
class Assets
|
3
|
-
|
4
3
|
attr_reader :active_config
|
5
4
|
|
6
5
|
def initialize
|
@@ -17,10 +16,12 @@ module Eco
|
|
17
16
|
|
18
17
|
def config(key: active_config, update_active: true)
|
19
18
|
configs[:default] ||= Eco::API::Session::Config.new(key)
|
19
|
+
|
20
20
|
unless configs.key?(key)
|
21
|
-
@active_config = key
|
21
|
+
@active_config = key if update_active
|
22
22
|
configs[key] = configs[:default].clone(key)
|
23
23
|
end
|
24
|
+
|
24
25
|
configs[key].tap do |config|
|
25
26
|
config.active_api(key) if config.apis.defined?(key)
|
26
27
|
yield(config) if block_given?
|
@@ -36,6 +37,7 @@ module Eco
|
|
36
37
|
@cli_init = true
|
37
38
|
require_relative('cli_default')
|
38
39
|
end
|
40
|
+
|
39
41
|
@cli.tap { yield(@cli) if block_given? }
|
40
42
|
end
|
41
43
|
end
|
@@ -2,6 +2,8 @@ module Eco
|
|
2
2
|
class CLI
|
3
3
|
class Scripting
|
4
4
|
module ArgsHelpers
|
5
|
+
class UnknownArgument < ArgumentError; end
|
6
|
+
|
5
7
|
# @return [Array<String] the command line arguments.
|
6
8
|
def argv
|
7
9
|
@argv || ARGV
|
@@ -31,7 +33,8 @@ module Eco
|
|
31
33
|
}
|
32
34
|
unknown = arguments.unknown(**args) do |key, correct|
|
33
35
|
next suggestions[key] = correct unless correct.empty?
|
34
|
-
|
36
|
+
|
37
|
+
suggestions[key] = ['-- not known similar options! --']
|
35
38
|
end
|
36
39
|
unknown = unknown.select {|arg| is_modifier?(arg)} if only_options
|
37
40
|
|
@@ -49,7 +52,7 @@ module Eco
|
|
49
52
|
msg << "\nUse 'ruby main.rb -org [-usecase] --help -options' for more information"
|
50
53
|
msg << "\n - Please, remember that use case specific options "
|
51
54
|
msg << "should come after the use case in the command line.\n"
|
52
|
-
raise msg
|
55
|
+
raise UnknownArgument, msg
|
53
56
|
end
|
54
57
|
|
55
58
|
# @return [Boolean] if `key` is in the command line.
|
@@ -27,7 +27,7 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
|
|
27
27
|
puts conf.usecases.help(refine: huc)
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
help_str = [
|
31
31
|
"Please specify one of the below:",
|
32
32
|
" -filters to display available filters on people",
|
33
33
|
" -input-filters to display available filters on input data",
|
@@ -36,7 +36,9 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
|
|
36
36
|
"TIPS:",
|
37
37
|
" * You may specify the usecase to know its specific options by: -usecase_name --help -options",
|
38
38
|
" * You may specify a refinement to show specific information only: --help -usecases tags"
|
39
|
-
].join("\n")
|
39
|
+
].join("\n")
|
40
|
+
|
41
|
+
puts help_str unless hpf || hif || ho || huc
|
40
42
|
exit
|
41
43
|
end
|
42
44
|
|
@@ -151,6 +153,26 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
|
|
151
153
|
session.config.dry_run!
|
152
154
|
end
|
153
155
|
|
156
|
+
desc = "It specifies the type of batch to be used (default: ':batch')"
|
157
|
+
options_set.add("-batch-mode", desc) do |options, session|
|
158
|
+
mode_in = SCR.get_arg("-batch-mode", with_param: true)
|
159
|
+
mode_str = mode_in.to_s.downcase
|
160
|
+
mode_sym = %i[batch job].find do |md|
|
161
|
+
next true if md.to_s == mode_str
|
162
|
+
|
163
|
+
md.to_s == mode_str.gsub(':', '')
|
164
|
+
end
|
165
|
+
|
166
|
+
unless mode_sym
|
167
|
+
session.log(:warn) {
|
168
|
+
"Unknown job_mode: #{mode_in}. Switching to default: ':batch'"
|
169
|
+
}
|
170
|
+
mode_sym = :batch
|
171
|
+
end
|
172
|
+
|
173
|
+
options.deep_merge!(workflow: {batch: {mode: mode_sym}})
|
174
|
+
end
|
175
|
+
|
154
176
|
desc = "Runs runs post_launch cases even if in dry-run"
|
155
177
|
options_set.add("-run-postlaunch", desc) do |options, session|
|
156
178
|
options.deep_merge!(post_launch: {run: true})
|
data/lib/eco/version.rb
CHANGED
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.
|
4
|
+
version: 3.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -922,7 +922,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
922
922
|
- !ruby/object:Gem::Version
|
923
923
|
version: '0'
|
924
924
|
requirements: []
|
925
|
-
rubygems_version: 3.5.
|
925
|
+
rubygems_version: 3.5.18
|
926
926
|
signing_key:
|
927
927
|
specification_version: 4
|
928
928
|
summary: eco-helpers to manage people api cases
|