eco-helpers 0.8.3 → 0.8.4
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/eco-helpers.gemspec +0 -2
- data/lib/eco-helpers.rb +0 -1
- data/lib/eco/api/common/people/person_entry.rb +67 -30
- data/lib/eco/api/common/version_patches.rb +2 -1
- data/lib/eco/api/common/version_patches/base_model.rb +27 -0
- data/lib/eco/api/organization/people.rb +6 -0
- data/lib/eco/api/organization/tag_tree.rb +6 -0
- data/lib/eco/api/policies/policy.rb +2 -2
- data/lib/eco/api/session.rb +23 -30
- data/lib/eco/api/session/batch.rb +3 -2
- data/lib/eco/api/session/batch_job.rb +18 -10
- data/lib/eco/api/session/batch_status.rb +27 -11
- data/lib/eco/api/session/config.rb +20 -7
- data/lib/eco/api/usecases/default_cases/change_email_case.rb +2 -6
- data/lib/eco/api/usecases/default_cases/refresh_presets_case.rb +3 -2
- data/lib/eco/api/usecases/use_case.rb +6 -5
- data/lib/eco/api/usecases/use_case_chain.rb +3 -3
- data/lib/eco/api/usecases/use_case_io.rb +3 -3
- data/lib/eco/assets.rb +3 -1
- data/lib/eco/{common → assets}/language.rb +2 -2
- data/lib/eco/cli.rb +3 -4
- data/lib/eco/cli/config.rb +10 -0
- data/lib/eco/cli/config/options.rb +11 -0
- data/lib/eco/cli/scripting.rb +23 -0
- data/lib/eco/cli/scripting/args_helpers.rb +55 -0
- data/lib/eco/cli/scripting/argument.rb +31 -0
- data/lib/eco/cli/scripting/arguments.rb +70 -0
- data/lib/eco/common.rb +1 -3
- data/lib/eco/data/crypto/encryption.rb +2 -2
- data/lib/eco/language/models/collection.rb +1 -1
- data/lib/eco/version.rb +1 -1
- metadata +9 -62
- data/lib/eco/cli/api.rb +0 -14
- data/lib/eco/cli/root.rb +0 -9
- data/lib/eco/cli/session.rb +0 -9
- data/lib/eco/cli/session/batch.rb +0 -9
- data/lib/eco/common/base_cli.rb +0 -23
- data/lib/eco/common/base_cli_backup.rb +0 -120
- data/lib/eco/common/meta_thor.rb +0 -111
- data/lib/eco/common/meta_thor/command_group.rb +0 -36
- data/lib/eco/common/meta_thor/command_unit.rb +0 -48
- data/lib/eco/common/meta_thor/input_backup.rb +0 -111
- data/lib/eco/common/meta_thor/input_multi_backup.rb +0 -139
- data/lib/eco/common/meta_thor/pipe.rb +0 -85
- data/lib/eco/common/meta_thor/thor.rb +0 -1
- data/lib/eco/common/meta_thor/thor/command.rb +0 -36
- data/lib/eco/common/meta_thor/value.rb +0 -54
- data/lib/eco/scripting.rb +0 -32
- data/lib/eco/scripting/README.md +0 -11
- data/lib/eco/scripting/args_helpers.rb +0 -53
- data/lib/eco/scripting/argument.rb +0 -29
- data/lib/eco/scripting/arguments.rb +0 -68
@@ -0,0 +1,31 @@
|
|
1
|
+
module Eco
|
2
|
+
class CLI
|
3
|
+
class Scripting
|
4
|
+
class Argument
|
5
|
+
|
6
|
+
attr_reader :key
|
7
|
+
|
8
|
+
def initialize(key, with_param: false)
|
9
|
+
@key = key
|
10
|
+
@with_param = !!with_param
|
11
|
+
end
|
12
|
+
|
13
|
+
def args_slice(*args)
|
14
|
+
#pp "known arg '#{key}' => included? #{args.include?(key)}"
|
15
|
+
return args unless args.include?(key)
|
16
|
+
i = args.index(key)
|
17
|
+
j = with_param?? i+1 : i
|
18
|
+
args - args.slice(i..j)
|
19
|
+
end
|
20
|
+
|
21
|
+
def with_param!
|
22
|
+
@with_param = true
|
23
|
+
end
|
24
|
+
|
25
|
+
def with_param?
|
26
|
+
@with_param
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Eco
|
2
|
+
class CLI
|
3
|
+
class Scripting
|
4
|
+
class Arguments
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
attr_reader :args
|
8
|
+
|
9
|
+
def initialize(args = ARGV)
|
10
|
+
@args = args
|
11
|
+
@known = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def each(params: {}, &block)
|
15
|
+
return to_enum(:each) unless block
|
16
|
+
@known.values.each(&block)
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(key, with_param: false)
|
20
|
+
self << Argument.new(key, with_param: with_param)
|
21
|
+
end
|
22
|
+
|
23
|
+
def <<(arg)
|
24
|
+
raise "Expected Argument. Given #{arg.class}" unless arg.is_a?(Argument)
|
25
|
+
if karg = @known[arg.key]
|
26
|
+
#puts "Found already existent option #{arg.key} (with_param: arg.with_param?)"
|
27
|
+
karg.with_param! if arg.with_param?
|
28
|
+
else
|
29
|
+
#puts "Adding unexistent option #{arg.key}"
|
30
|
+
@known[arg.key] = arg
|
31
|
+
end
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
def known?(value)
|
36
|
+
@known.key?(to_key(value))
|
37
|
+
end
|
38
|
+
|
39
|
+
def keys
|
40
|
+
@known.keys
|
41
|
+
end
|
42
|
+
|
43
|
+
def unknown(exclude: [])
|
44
|
+
reduce(args.dup - exclude) do |not_known, arg|
|
45
|
+
arg.args_slice(*not_known)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def any_unkown?(exclude: [])
|
50
|
+
unknown(exclude: exclude).length > 0
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def to_key(value)
|
56
|
+
case value
|
57
|
+
when String
|
58
|
+
value
|
59
|
+
when Argument
|
60
|
+
value.key
|
61
|
+
else
|
62
|
+
"Missuse: only able to transform to key a String or an Argument. Given #{value.class}"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/eco/common.rb
CHANGED
@@ -3,12 +3,12 @@ require 'json'
|
|
3
3
|
require 'base64'
|
4
4
|
require 'pp'
|
5
5
|
|
6
|
-
require_relative '../../scripting'
|
6
|
+
require_relative '../../cli/scripting'
|
7
7
|
|
8
8
|
# see some ramblings here: http://distributed-frostbite.blogspot.com/2010/06/file-encryption-in-ruby-with-openssl.html
|
9
9
|
|
10
10
|
def run! # this will run only if called from command line (not when require'd nor load'd)
|
11
|
-
include Eco::Scripting
|
11
|
+
include Eco::CLI::Scripting
|
12
12
|
include Eco::Data::Crypto
|
13
13
|
# script arguments
|
14
14
|
keygen = get_arg("-keygen")
|
@@ -37,7 +37,7 @@ module Eco
|
|
37
37
|
|
38
38
|
#attr_reader :items
|
39
39
|
|
40
|
-
def initialize(data = [], klass:, factory: nil, handy: Eco::
|
40
|
+
def initialize(data = [], klass:, factory: nil, handy: Eco::Assets::Language.new)
|
41
41
|
raise "Raise klass required, given: #{klass}" if !klass
|
42
42
|
@klass = klass
|
43
43
|
@factory = factory
|
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: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -118,46 +118,6 @@ dependencies:
|
|
118
118
|
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
120
|
version: 0.4.3
|
121
|
-
- !ruby/object:Gem::Dependency
|
122
|
-
name: thor
|
123
|
-
requirement: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
125
|
-
- - "~>"
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: '0'
|
128
|
-
- - ">="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '0.20'
|
131
|
-
type: :runtime
|
132
|
-
prerelease: false
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '0'
|
138
|
-
- - ">="
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: '0.20'
|
141
|
-
- !ruby/object:Gem::Dependency
|
142
|
-
name: nokogiri
|
143
|
-
requirement: !ruby/object:Gem::Requirement
|
144
|
-
requirements:
|
145
|
-
- - "~>"
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '1.6'
|
148
|
-
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: 1.6.8
|
151
|
-
type: :runtime
|
152
|
-
prerelease: false
|
153
|
-
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
requirements:
|
155
|
-
- - "~>"
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '1.6'
|
158
|
-
- - ">="
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: 1.6.8
|
161
121
|
- !ruby/object:Gem::Dependency
|
162
122
|
name: aws-sdk-s3
|
163
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -299,6 +259,7 @@ files:
|
|
299
259
|
- lib/eco/api/common/session/mailer.rb
|
300
260
|
- lib/eco/api/common/session/s3_uploader.rb
|
301
261
|
- lib/eco/api/common/version_patches.rb
|
262
|
+
- lib/eco/api/common/version_patches/base_model.rb
|
302
263
|
- lib/eco/api/common/version_patches/external_person.rb
|
303
264
|
- lib/eco/api/common/version_patches/internal_person.rb
|
304
265
|
- lib/eco/api/eco_faker.rb
|
@@ -361,24 +322,15 @@ files:
|
|
361
322
|
- lib/eco/api/usecases/use_case_io.rb
|
362
323
|
- lib/eco/api/usecases/use_group.rb
|
363
324
|
- lib/eco/assets.rb
|
325
|
+
- lib/eco/assets/language.rb
|
364
326
|
- lib/eco/cli.rb
|
365
|
-
- lib/eco/cli/
|
366
|
-
- lib/eco/cli/
|
367
|
-
- lib/eco/cli/
|
368
|
-
- lib/eco/cli/
|
327
|
+
- lib/eco/cli/config.rb
|
328
|
+
- lib/eco/cli/config/options.rb
|
329
|
+
- lib/eco/cli/scripting.rb
|
330
|
+
- lib/eco/cli/scripting/args_helpers.rb
|
331
|
+
- lib/eco/cli/scripting/argument.rb
|
332
|
+
- lib/eco/cli/scripting/arguments.rb
|
369
333
|
- lib/eco/common.rb
|
370
|
-
- lib/eco/common/base_cli.rb
|
371
|
-
- lib/eco/common/base_cli_backup.rb
|
372
|
-
- lib/eco/common/language.rb
|
373
|
-
- lib/eco/common/meta_thor.rb
|
374
|
-
- lib/eco/common/meta_thor/command_group.rb
|
375
|
-
- lib/eco/common/meta_thor/command_unit.rb
|
376
|
-
- lib/eco/common/meta_thor/input_backup.rb
|
377
|
-
- lib/eco/common/meta_thor/input_multi_backup.rb
|
378
|
-
- lib/eco/common/meta_thor/pipe.rb
|
379
|
-
- lib/eco/common/meta_thor/thor.rb
|
380
|
-
- lib/eco/common/meta_thor/thor/command.rb
|
381
|
-
- lib/eco/common/meta_thor/value.rb
|
382
334
|
- lib/eco/data.rb
|
383
335
|
- lib/eco/data/crypto.rb
|
384
336
|
- lib/eco/data/crypto/encryption.rb
|
@@ -403,11 +355,6 @@ files:
|
|
403
355
|
- lib/eco/language/models/parser_serializer.rb
|
404
356
|
- lib/eco/language/models/wrap.rb
|
405
357
|
- lib/eco/language/values_at.rb
|
406
|
-
- lib/eco/scripting.rb
|
407
|
-
- lib/eco/scripting/README.md
|
408
|
-
- lib/eco/scripting/args_helpers.rb
|
409
|
-
- lib/eco/scripting/argument.rb
|
410
|
-
- lib/eco/scripting/arguments.rb
|
411
358
|
- lib/eco/tester.rb
|
412
359
|
- lib/eco/version.rb
|
413
360
|
homepage: https://www.ecoportal.com
|
data/lib/eco/cli/api.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
module Eco
|
2
|
-
module CLI
|
3
|
-
class API < Eco::Common::BaseCLI
|
4
|
-
class_option :csv_in, :type => :string, :banner => "FILE", :desc => "CSV input file"
|
5
|
-
class_option :csv_out, :type => :string, :banner => "FILE", :desc => "CSV output file"
|
6
|
-
class_option :json_in, :type => :string, :banner => "FILE", :desc => "CSV input file"
|
7
|
-
class_option :json_out, :type => :string, :banner => "FILE", :desc => "CSV input file"
|
8
|
-
|
9
|
-
class_option :config_file, :aliases => "o", :type => :string,
|
10
|
-
:banner => "FILE", :desc => "specifes the session configuration file"
|
11
|
-
#class_option :csv_in, :alisaes =>
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
data/lib/eco/cli/root.rb
DELETED
data/lib/eco/cli/session.rb
DELETED
data/lib/eco/common/base_cli.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Eco
|
2
|
-
module Common
|
3
|
-
class BaseCLI < MetaThor
|
4
|
-
CUSTOM_HELP_MAPPINGS = ["?", "help"]
|
5
|
-
ALL_HELP_MAPPINGS = Thor::HELP_MAPPINGS + CUSTOM_HELP_MAPPINGS
|
6
|
-
|
7
|
-
class_option :simulate, type: :boolean, aliases: :s, desc: "do not launch updates or rewrite files"
|
8
|
-
#class_option :verbosity, type: :numeric, default: 0, desc: "defines the level of verbosity to show feedback"
|
9
|
-
|
10
|
-
class << self
|
11
|
-
def start(given_args = ARGV, config = {})
|
12
|
-
super(given_args, config)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
|
18
|
-
no_commands do
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
|
3
|
-
module Eco
|
4
|
-
module Common
|
5
|
-
class BaseCLI < MethaThor
|
6
|
-
PIPE = "!"
|
7
|
-
CUSTOM_HELP_MAPPINGS = ["?", "help"]
|
8
|
-
ALL_HELP_MAPPINGS = Thor::HELP_MAPPINGS + CUSTOM_HELP_MAPPINGS
|
9
|
-
|
10
|
-
class_option :simulate, type: :boolean, aliases: :s, desc: "do not launch updates or rewrite files"
|
11
|
-
class_option :verbosity, type: :numeric, default: 0, desc: "defines the level of verbosity to show feedback"
|
12
|
-
|
13
|
-
class_option :input, type: :hash, default: {json: nil}, required: false, desc: "--input=json:STRING"
|
14
|
-
class_option :pipe, type: :boolean, default: false, required: false, desc: "--pipe subcommand"
|
15
|
-
|
16
|
-
def self.start(given_args = ARGV, config = {})
|
17
|
-
#given_args = splat_namespaces(given_args)
|
18
|
-
given_args = BaseCLI.parse_help(given_args)
|
19
|
-
super(given_args, config)
|
20
|
-
end
|
21
|
-
|
22
|
-
# incompatible with options / arguments of Hash type
|
23
|
-
# see: parse_hash here: https://github.com/erikhuda/thor/blob/master/lib/thor/parser/arguments.rb
|
24
|
-
def self.splat_namespaces(args)
|
25
|
-
args.reduce([]) do |done, arg|
|
26
|
-
done.concat(arg.split(":"))
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.parse_help(args)
|
31
|
-
# Help enhancement. Adapted from: https://stackoverflow.com/a/49044225/4352306
|
32
|
-
last = args.last
|
33
|
-
if args.length > 1 && help?(last)
|
34
|
-
# switch last and second last position
|
35
|
-
last = "help" if custom_help?(last)
|
36
|
-
args.insert(args.length - 2, last).pop
|
37
|
-
puts "> #{args.join(" ")}"
|
38
|
-
end
|
39
|
-
args
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.help?(value)
|
43
|
-
case value
|
44
|
-
when String
|
45
|
-
ALL_HELP_MAPPINGS.include?(value)
|
46
|
-
when Symbol
|
47
|
-
help?(value.to_s)
|
48
|
-
when Array
|
49
|
-
value.any? { |v| help?(v) }
|
50
|
-
when Hash
|
51
|
-
value.keys.any { |k| help?(v) }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.custom_help?(value)
|
56
|
-
CUSTOM_HELP_MAPPINGS.include?(value)
|
57
|
-
end
|
58
|
-
|
59
|
-
protected
|
60
|
-
|
61
|
-
no_commands do
|
62
|
-
def input?(options)
|
63
|
-
if options
|
64
|
-
options.key?("input") || options.key?(:input) ||
|
65
|
-
options.key?("json") || options.key?(:json)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def input_object(input)
|
70
|
-
Eco::CLI::Input.new(input)
|
71
|
-
end
|
72
|
-
|
73
|
-
def input(value)
|
74
|
-
case
|
75
|
-
when value.is_a?(Eco::CLI::Input)
|
76
|
-
value.value
|
77
|
-
when value.is_a?(Eco::CLI::MultiInput)
|
78
|
-
value.to_h
|
79
|
-
when value.is_a?(String)
|
80
|
-
input(JSON.parse(value))
|
81
|
-
when value&.key?("input")
|
82
|
-
input(value["input"])
|
83
|
-
when value&.key?(:input)
|
84
|
-
input(value[:input])
|
85
|
-
when value&.key?("json")
|
86
|
-
JSON.parse(value["json"])
|
87
|
-
when value&.key?(:json)
|
88
|
-
JSON.parse(value[:json])
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def pipe(input, args)
|
93
|
-
command, args, piped = parse_pipe(args)
|
94
|
-
invoke command, args, {input: input_object(input)} if piped
|
95
|
-
piped
|
96
|
-
end
|
97
|
-
|
98
|
-
def parse_pipe(args)
|
99
|
-
args.shift if piped = (args.first == PIPE)
|
100
|
-
subcommand = ""
|
101
|
-
if piped
|
102
|
-
raise "Error: bad usage of pipe ('#{PIPE}'). Expected: '#{PIPE} command' " unless subcommand = args.slice!(0)
|
103
|
-
if help?(subcommand)
|
104
|
-
# Idea adapted from: https://stackoverflow.com/a/46167300/4352306
|
105
|
-
self.class.command_help(Thor::Base.shell.new, args.first)
|
106
|
-
exit
|
107
|
-
end
|
108
|
-
end
|
109
|
-
[subcommand, args, piped]
|
110
|
-
end
|
111
|
-
|
112
|
-
def help?(value)
|
113
|
-
BaseCLI.help?(value)
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|