eco-helpers 2.0.54 → 2.0.57
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -2
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api/common/session/file_manager.rb +2 -2
- data/lib/eco/api/common/session/sftp.rb +10 -1
- data/lib/eco/api/usecases/default_cases/hris_case.rb +1 -1
- data/lib/eco/api/usecases/ooze_samples/helpers/shortcuts.rb +29 -2
- data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +17 -4
- data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +14 -12
- data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +2 -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: 5f311bacb1d039da9637ae6eb6fc33f709aef06e6647591a6f9dd981d010a424
|
4
|
+
data.tar.gz: fe3056df3a19353c4b915440f3ba26bb181e8b89aa8570e4a356b8aa926e71b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0a0506303240b5a3e7f1b52865cbf142d2b50a4adbd64ab062f607df73502c49ecf37df659fc549676922740f118cfbcf0abf336876ba49423cf8c087ff04a5
|
7
|
+
data.tar.gz: 2f5b1775eb19b2c8ed4ebf4539e06418fae5d5c0b969d9ee5f24f65a66fe8819162023e76a60409d63ac9869649dec35713981604b66e15097ea41ec47a4f3af
|
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,48 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [2.0.
|
4
|
+
## [2.0.57] - 2022-04-xx
|
5
5
|
|
6
6
|
### Added
|
7
|
-
- `Eco::API::UseCases::DefaultCases::Samples::Sftp` should tell where the files went in the local.
|
8
7
|
|
9
8
|
### Changed
|
9
|
+
- `Eco::API::UseCases::DefaultCases::HrisCase`
|
10
|
+
- Made it so the `leavers` batch runs first
|
11
|
+
- This aims to prevent some errors such as `cyclic supervisor` or `email already taken`
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
|
16
|
+
## [2.0.56] - 2022-04-25
|
17
|
+
|
18
|
+
### Added
|
19
|
+
- `Eco::API::UseCases::OozeSamples::OozeBaseCase#add_field_by_doc`
|
20
|
+
- Same as `#add_field` but using an existing _**doc**_ as a model
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
- `ecoportal-api-v2` dependency upgrade
|
24
|
+
- `Eco::API::Common::Session::FileManager#file_content`
|
25
|
+
- added parameter `mode:` to options can be used as well
|
26
|
+
- `Eco::API::UseCases::OozeSamples::Helpers::Shortcuts#same_string?`
|
27
|
+
- Added parameter `mild:` to compare the strings with only alphabetic characters
|
28
|
+
- `Eco::API::UseCases::OozeSamples::OozeRunBaseCase`
|
29
|
+
- `#main` and `#process_ooze` methods were not obvious to use
|
30
|
+
- `Eco::API::UseCases::OozeSamples::RegisterUpdateCase` slight change on the **`run` summary message**
|
31
|
+
|
10
32
|
### Fixed
|
33
|
+
- `Eco::API::UseCases::OozeSamples::OozeBaseCase#update_ooze`
|
34
|
+
- Added call to `validate` also when we are on `dry-run` **mode**
|
35
|
+
|
36
|
+
## [2.0.55] - 2022-04-04
|
37
|
+
|
38
|
+
### Fixed
|
39
|
+
- `Eco::API::UseCases::DefaultCases::Samples::Sftp` should move the basename to Windows compatible chars.
|
40
|
+
|
41
|
+
## [2.0.54] - 2022-04-04
|
42
|
+
|
43
|
+
### Added
|
44
|
+
- `Eco::API::UseCases::DefaultCases::Samples::Sftp` should tell where the files went in the local.
|
45
|
+
|
11
46
|
|
12
47
|
## [2.0.53] - 2022-04-04
|
13
48
|
|
data/eco-helpers.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
32
32
|
|
33
33
|
spec.add_dependency 'ecoportal-api', '>= 0.8.5', '< 0.9'
|
34
|
-
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.
|
34
|
+
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.27', '< 0.9'
|
35
35
|
spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
|
36
36
|
spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
|
37
37
|
spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
|
@@ -38,14 +38,14 @@ module Eco
|
|
38
38
|
dir.newest_file(file: filename)
|
39
39
|
end
|
40
40
|
|
41
|
-
def file_content(filename)
|
41
|
+
def file_content(filename, mode: nil)
|
42
42
|
file = dir.file(filename, should_exist: true)
|
43
43
|
if !file
|
44
44
|
logger.error("Can't read from file '#{filename}' because it does not exist.")
|
45
45
|
return nil
|
46
46
|
end
|
47
47
|
logger.debug("Reading from file '#{file}'")
|
48
|
-
File.read(file)
|
48
|
+
mode ? File.read(file, mode: mode) : File.read(file)
|
49
49
|
end
|
50
50
|
|
51
51
|
def load_json(filename)
|
@@ -65,8 +65,11 @@ module Eco
|
|
65
65
|
# @param files [String, Array<String>] full path to remote file(s) to be downloaded
|
66
66
|
# @param local_folder [String] local destination folder (`"."` if not specified)
|
67
67
|
def download(files, local_folder: nil)
|
68
|
+
puts "Creating local files:"
|
68
69
|
[files].flatten.compact.map do |fullname|
|
69
|
-
|
70
|
+
basename = windows_basename(fullname)
|
71
|
+
dest_fullname = File.join(local_folder || ".", basename)
|
72
|
+
puts " • #{dest_fullname}"
|
70
73
|
sftp_session.download(fullname, dest_fullname)
|
71
74
|
end.each do |dw|
|
72
75
|
# run SSH event loop while dw.active?
|
@@ -76,6 +79,12 @@ module Eco
|
|
76
79
|
|
77
80
|
private
|
78
81
|
|
82
|
+
def windows_basename(remote_fullname)
|
83
|
+
parts = remote_fullname.split(/[\\\/]/).map {|node| node.gsub(/[<>:\\\/\|?*]/, '_')}
|
84
|
+
local_fullname = File.join(*parts)
|
85
|
+
File.basename(local_fullname)
|
86
|
+
end
|
87
|
+
|
79
88
|
def logger
|
80
89
|
@enviro&.logger || ::Logger.new(IO::NULL)
|
81
90
|
end
|
@@ -9,10 +9,10 @@ class Eco::API::UseCases::DefaultCases::HrisCase < Eco::API::Common::Loaders::Us
|
|
9
9
|
@session = session; @options = options; @people = people
|
10
10
|
require_only_one_schema!
|
11
11
|
micro = session.micro
|
12
|
+
@leavers = session.new_job("pre", "leavers", :update, usecase, :account)
|
12
13
|
@creation = session.new_job("main", "create", :create, usecase)
|
13
14
|
@update = session.new_job("main", "update", :update, usecase)
|
14
15
|
@supers = session.new_job("post", "supers", :update, usecase, :core)
|
15
|
-
@leavers = session.new_job("post", "leavers", :update, usecase, :account)
|
16
16
|
|
17
17
|
micro.with_each_leaver(entries, people, options) do |person|
|
18
18
|
leavers.add(person, &method(:leavers_callback))
|
@@ -6,13 +6,20 @@ module Eco
|
|
6
6
|
module Shortcuts
|
7
7
|
|
8
8
|
# Offers multiple ways to compare two strings
|
9
|
-
def same_string?(value1, value2, exact: false)
|
9
|
+
def same_string?(value1, value2, exact: false, mild: false)
|
10
10
|
case
|
11
11
|
when value1.is_a?(String) && value2.is_a?(String)
|
12
12
|
if exact
|
13
13
|
value1 == value2
|
14
14
|
else
|
15
|
-
|
15
|
+
v1 = value1.to_s.strip.downcase
|
16
|
+
v2 = value2.to_s.strip.downcase
|
17
|
+
|
18
|
+
if mild
|
19
|
+
v1 = v1.gsub(/[^a-z ]+/, ' ').gsub(/\s+/, ' ').strip
|
20
|
+
v2 = v2.gsub(/[^a-z ]+/, ' ').gsub(/\s+/, ' ').strip
|
21
|
+
end
|
22
|
+
v1 == v2
|
16
23
|
end
|
17
24
|
when value1.is_a?(Regexp) && value2.is_a?(String)
|
18
25
|
value2 =~ value1
|
@@ -64,11 +71,31 @@ module Eco
|
|
64
71
|
ref << "Page (#{obj.id}) (#{object_reference(obj.current_stage)})"
|
65
72
|
when Ecoportal::API::V2::Page
|
66
73
|
ref << "Page"
|
74
|
+
when Ecoportal::API::V2::Page::Section
|
75
|
+
ref << "Section '#{obj.heading || "(unnamed)"}'"
|
76
|
+
when Ecoportal::API::V2::Page::Component
|
77
|
+
ref << "Component '#{obj.label || "(unnamed of type '#{obj.type}')"}' in #{object_reference(obj.section)}"
|
78
|
+
when Ecoportal::API::V2::Page::Force
|
79
|
+
ref << "Force '#{obj.name}'"
|
80
|
+
when Ecoportal::API::V2::Page::Force::Binding
|
81
|
+
ref << "Binding '#{obj.name}' in #{object_reference(obj.force)}"
|
67
82
|
end
|
68
83
|
ref << " '#{obj.name}'" if obj.respond_to?(:name)
|
69
84
|
end
|
70
85
|
end
|
71
86
|
|
87
|
+
def to_i
|
88
|
+
Float(value).to_i
|
89
|
+
end
|
90
|
+
|
91
|
+
# https://stackoverflow.com/a/5661695/4352306
|
92
|
+
def is_number?(value)
|
93
|
+
begin
|
94
|
+
true if Float(value)
|
95
|
+
rescue ArgumentError => e
|
96
|
+
false
|
97
|
+
end
|
98
|
+
end
|
72
99
|
end
|
73
100
|
end
|
74
101
|
end
|
@@ -29,7 +29,18 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
29
29
|
|
30
30
|
protected
|
31
31
|
|
32
|
-
def
|
32
|
+
def add_field_by_doc(doc, section, after: nil, before: nil, side: :left)
|
33
|
+
unless section.is_a?(Ecoportal::API::V2::Page::Section)
|
34
|
+
raise "You need to specify a section for a new field. Given: #{section.class}"
|
35
|
+
end
|
36
|
+
target.components.add(doc: doc) do |field|
|
37
|
+
section.add_component(field, after: after, before: before, side: side)
|
38
|
+
end.tap do |field|
|
39
|
+
yield(field) if block_given?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_field(name, type, section, after: nil, before: nil, side: :left)
|
33
44
|
unless section.is_a?(Ecoportal::API::V2::Page::Section)
|
34
45
|
raise "You need to specify a section for a new field. Given: #{section.class}"
|
35
46
|
end
|
@@ -92,7 +103,7 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
92
103
|
if ooze_id = ooze && ooze.id
|
93
104
|
exit_error "#{object_reference(ooze)} does not have stages!" unless ooze.stages?
|
94
105
|
else
|
95
|
-
exit_error "There's no target ooze to
|
106
|
+
exit_error "There's no target ooze to retrieve stages from"
|
96
107
|
end
|
97
108
|
|
98
109
|
if stg = ooze.stages[id_name] || ooze.stages.get_by_name(id_name)
|
@@ -129,11 +140,15 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
129
140
|
end
|
130
141
|
end
|
131
142
|
else
|
143
|
+
ooze.validate.tap do |validation|
|
144
|
+
logger.error(validation) if validation.is_a?(String)
|
145
|
+
end
|
132
146
|
unless options.dig(:feedback, :only_stats)
|
133
147
|
if patch = (patch_doc(ooze) || {})["page"]
|
134
148
|
pp patch
|
135
149
|
end
|
136
150
|
end
|
151
|
+
|
137
152
|
backup_patch!(ooze)
|
138
153
|
exit(0) if dirty?(ooze) && dry_count > DRY_COUNT
|
139
154
|
false
|
@@ -189,6 +204,4 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
189
204
|
logger.error(msg)
|
190
205
|
exit(1)
|
191
206
|
end
|
192
|
-
|
193
|
-
|
194
207
|
end
|
@@ -3,24 +3,26 @@ class Eco::API::UseCases::OozeSamples::OozeRunBaseCase < Eco::API::UseCases::Ooz
|
|
3
3
|
name "ooze-run-base"
|
4
4
|
type :other
|
5
5
|
|
6
|
-
attr_reader :session, :options, :usecase
|
7
|
-
|
8
6
|
SAVE_PATCH = "ooze_patch_update.json"
|
9
7
|
|
10
|
-
def main(session, options, usecase
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
yield(ooze)
|
8
|
+
def main(session, options, usecase)
|
9
|
+
super(session, options, usecase) do
|
10
|
+
if method(:process_ooze).parameters.count == 0
|
11
|
+
ooze # retrieve ooze
|
12
|
+
process_ooze
|
13
|
+
else
|
14
|
+
process_ooze(ooze)
|
15
|
+
end
|
16
|
+
yield(target) if block_given?
|
20
17
|
exit_if_no_changes!
|
18
|
+
update_ooze(target)
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
22
|
+
def process_ooze(page = target)
|
23
|
+
raise "You need to redefine this method"
|
24
|
+
end
|
25
|
+
|
24
26
|
private
|
25
27
|
|
26
28
|
def ooze
|
@@ -39,7 +39,8 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
39
39
|
msg += " • Duplicated search results #{dupped_search_oozes}\n"
|
40
40
|
msg += " • Retrieved a total of #{retrieved_oozes}\n"
|
41
41
|
msg += " • Could not get #{non_retrieved_oozes} oozes.\n"
|
42
|
-
msg += " • Updated #{updated_oozes} oozes
|
42
|
+
msg += " • Updated #{updated_oozes} oozes.\n"
|
43
|
+
msg += " - Failed update on #{failed_update_oozes} oozes.\n"
|
43
44
|
logger.info(msg)
|
44
45
|
end
|
45
46
|
|
@@ -72,7 +73,6 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
72
73
|
end
|
73
74
|
|
74
75
|
if pending = queue_shift(page_result.id)
|
75
|
-
|
76
76
|
if dirty?(pending)
|
77
77
|
msg = "Inconsistent search results. "
|
78
78
|
msg << "Launching update on '#{object_reference(pending)}' to be able to queue it back"
|
data/lib/eco/version.rb
CHANGED
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: 2.0.
|
4
|
+
version: 2.0.57
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
requirements:
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.8.
|
139
|
+
version: 0.8.27
|
140
140
|
- - "<"
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0.9'
|
@@ -146,7 +146,7 @@ dependencies:
|
|
146
146
|
requirements:
|
147
147
|
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version: 0.8.
|
149
|
+
version: 0.8.27
|
150
150
|
- - "<"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.9'
|