assistant 0.0.2 → 0.1.0
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/.editorconfig +13 -0
- data/.github/dependabot.yml +4 -0
- data/.github/workflows/ci.yml +41 -0
- data/.github/workflows/release.yml +46 -0
- data/.markdownlint.json +6 -0
- data/.rubocop.yml +32 -150
- data/.rubocop_todo.yml +7 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +56 -0
- data/Gemfile.lock +96 -93
- data/Rakefile +8 -3
- data/assistant.gemspec +13 -17
- data/lib/assistant/input_builder.rb +84 -0
- data/lib/assistant/log_item.rb +1 -1
- data/lib/assistant/log_list.rb +7 -1
- data/lib/assistant/refinements/string_blankness.rb +18 -0
- data/lib/assistant/service.rb +37 -6
- data/lib/assistant/service.rbs +5 -0
- data/lib/assistant/version.rb +1 -1
- data/lib/assistant.rb +0 -1
- data/mise.toml +4 -0
- metadata +39 -127
- data/.circleci/config.yml +0 -45
- data/.rspec +0 -3
data/assistant.gemspec
CHANGED
|
@@ -17,10 +17,10 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.description = 'Simple, composable services'
|
|
18
18
|
spec.homepage = 'https://github.com/ramongr/assistant'
|
|
19
19
|
spec.license = 'MIT'
|
|
20
|
-
spec.required_ruby_version = '>=
|
|
20
|
+
spec.required_ruby_version = '>= 3.4'
|
|
21
21
|
|
|
22
22
|
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
23
|
-
spec.metadata['changelog_uri'] = 'https://github.com/ramongr/assistant/blob/main/
|
|
23
|
+
spec.metadata['changelog_uri'] = 'https://github.com/ramongr/assistant/blob/main/CHANGELOG.md'
|
|
24
24
|
spec.metadata['homepage_uri'] = 'https://github.com/ramongr/assistant'
|
|
25
25
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
26
26
|
spec.metadata['source_code_uri'] = 'https://github.com/ramongr/assistant'
|
|
@@ -33,19 +33,15 @@ Gem::Specification.new do |spec|
|
|
|
33
33
|
|
|
34
34
|
spec.require_paths = 'lib'
|
|
35
35
|
|
|
36
|
-
spec.add_development_dependency 'brakeman', '~>
|
|
37
|
-
spec.add_development_dependency 'bundler', '~>
|
|
38
|
-
spec.add_development_dependency 'byebug', '~>
|
|
39
|
-
spec.add_development_dependency 'colorize', '~>
|
|
40
|
-
spec.add_development_dependency '
|
|
41
|
-
spec.add_development_dependency '
|
|
42
|
-
spec.add_development_dependency 'rake', '~> 13.
|
|
43
|
-
spec.add_development_dependency '
|
|
44
|
-
spec.add_development_dependency '
|
|
45
|
-
spec.add_development_dependency '
|
|
46
|
-
spec.add_development_dependency 'rubocop', '~>
|
|
47
|
-
spec.add_development_dependency 'rubocop-faker', '~> 1.1'
|
|
48
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.17', '>= 1.17.1'
|
|
49
|
-
spec.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
|
50
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.22'
|
|
36
|
+
spec.add_development_dependency 'brakeman', '~> 8.0'
|
|
37
|
+
spec.add_development_dependency 'bundler', '~> 4.0'
|
|
38
|
+
spec.add_development_dependency 'byebug', '~> 13.0'
|
|
39
|
+
spec.add_development_dependency 'colorize', '~> 1.1'
|
|
40
|
+
spec.add_development_dependency 'fasterer', '~> 0.11.0'
|
|
41
|
+
spec.add_development_dependency 'minitest', '~> 5.25'
|
|
42
|
+
spec.add_development_dependency 'rake', '~> 13.4'
|
|
43
|
+
spec.add_development_dependency 'rubocop', '~> 1.86'
|
|
44
|
+
spec.add_development_dependency 'rubocop-minitest', '~> 0.39'
|
|
45
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.26'
|
|
46
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.7'
|
|
51
47
|
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'assistant/refinements/string_blankness'
|
|
4
|
+
|
|
5
|
+
module Assistant
|
|
6
|
+
# This module has the building blocks for the input validation.
|
|
7
|
+
# The building blocks of listing inputs with the #input and #inputs methods
|
|
8
|
+
# and the building blocks of validating inputs with the methods that are called within those methods.
|
|
9
|
+
module InputBuilder
|
|
10
|
+
using Assistant::Refinements::StringBlankness
|
|
11
|
+
|
|
12
|
+
# Lists all inputs that have the same type and options.
|
|
13
|
+
def inputs(attr_names, type:, **)
|
|
14
|
+
attr_names.each do |attr_name|
|
|
15
|
+
input(attr_name, type:, **)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Individual input with a specific type or options
|
|
20
|
+
def input(attr_name, type:, **options)
|
|
21
|
+
# Base Methods
|
|
22
|
+
input_getter_meth(attr_name)
|
|
23
|
+
input_checker_meth(attr_name)
|
|
24
|
+
|
|
25
|
+
# Input type validation method, simple and conditional requirement validation methods
|
|
26
|
+
input_type_validator_meth(attr_name, type)
|
|
27
|
+
input_require_validator_meth(attr_name, **options) if options[:required] == true
|
|
28
|
+
input_require_conditional_meth(attr_name, **options) if options[:required] == true && options[:if]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def input_getter_meth(attr_name)
|
|
32
|
+
define_method(attr_name) do
|
|
33
|
+
@inputs[attr_name]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def input_checker_meth(attr_name)
|
|
38
|
+
define_method("#{attr_name}?") do
|
|
39
|
+
val = @inputs[attr_name]
|
|
40
|
+
return false if val.nil? || val == false
|
|
41
|
+
return !val.whitespace? if val.is_a?(String)
|
|
42
|
+
|
|
43
|
+
val.respond_to?(:empty?) ? !val.empty? : true
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def input_require_validator_meth(attr_name, **options)
|
|
48
|
+
define_method("valid_require_#{attr_name}?") do |log = true|
|
|
49
|
+
return true if options[:required] == true && send("#{attr_name}?") == true
|
|
50
|
+
|
|
51
|
+
log && send(
|
|
52
|
+
:log_item_error_initialize, attr_name:, message: "Service is missing argument with name #{attr_name}"
|
|
53
|
+
)
|
|
54
|
+
false
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def input_require_conditional_meth(attr_name, **options)
|
|
59
|
+
define_method("valid_require_conditional_#{attr_name}?") do
|
|
60
|
+
return false if send("valid_require_#{attr_name}?", false) == false
|
|
61
|
+
return true if options[:if].call(send(attr_name))
|
|
62
|
+
|
|
63
|
+
send(
|
|
64
|
+
:log_item_error_initialize,
|
|
65
|
+
attr_name:, message: "Service argument conditional requirement not met properly for #{attr_name}"
|
|
66
|
+
)
|
|
67
|
+
false
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def input_type_validator_meth(attr_name, type)
|
|
72
|
+
define_method("valid_type_#{attr_name}?") do
|
|
73
|
+
return true if @inputs[attr_name].is_a?(type)
|
|
74
|
+
|
|
75
|
+
send("#{attr_name}?") &&
|
|
76
|
+
send(
|
|
77
|
+
:log_item_error_initialize,
|
|
78
|
+
attr_name:, message: "Service argument with name #{attr_name} is not a #{type} but #{send(attr_name).class}"
|
|
79
|
+
)
|
|
80
|
+
false
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
data/lib/assistant/log_item.rb
CHANGED
data/lib/assistant/log_list.rb
CHANGED
|
@@ -4,13 +4,19 @@ module Assistant
|
|
|
4
4
|
# Service level list of logs
|
|
5
5
|
module LogList
|
|
6
6
|
def add_log(level:, source:, detail:, message:, trace: nil)
|
|
7
|
-
@logs << Assistant::LogItem.new(level
|
|
7
|
+
@logs << Assistant::LogItem.new(level:, source:, detail:, message:, trace:)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def merge_logs(other_logs)
|
|
11
11
|
@logs.concat(other_logs)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
# Convenience used by InputBuilder-generated validators to record an
|
|
15
|
+
# initialization-time error for a specific input attribute.
|
|
16
|
+
def log_item_error_initialize(attr_name:, message:)
|
|
17
|
+
@logs << Assistant::LogItem.new(detail: attr_name, level: :error, message:, source: :initialize)
|
|
18
|
+
end
|
|
19
|
+
|
|
14
20
|
::Assistant::LogItem::VALID_LEVELS.each do |level|
|
|
15
21
|
define_method("#{level}s") do
|
|
16
22
|
@logs.select { |log| log.send("#{level}?") }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Assistant
|
|
4
|
+
module Refinements
|
|
5
|
+
# Refines String with `#whitespace?`, true when a string is empty or
|
|
6
|
+
# contains only whitespace characters. Used by `InputBuilder` validators
|
|
7
|
+
# to treat whitespace-only strings as missing input without depending on
|
|
8
|
+
# ActiveSupport's `String#blank?`.
|
|
9
|
+
module StringBlankness
|
|
10
|
+
refine String do
|
|
11
|
+
# True when the string is empty or contains only whitespace.
|
|
12
|
+
def whitespace?
|
|
13
|
+
strip.empty?
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/assistant/service.rb
CHANGED
|
@@ -1,31 +1,62 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'input_builder'
|
|
4
|
+
require_relative 'log_list'
|
|
5
|
+
|
|
3
6
|
module Assistant
|
|
4
7
|
# Base class for the Assistant gem
|
|
5
8
|
class Service
|
|
6
|
-
include
|
|
9
|
+
include LogList
|
|
7
10
|
|
|
8
11
|
class << self
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
include InputBuilder
|
|
13
|
+
|
|
14
|
+
def run(**)
|
|
15
|
+
new(**).run
|
|
11
16
|
end
|
|
12
17
|
end
|
|
13
18
|
|
|
14
|
-
def initialize(
|
|
19
|
+
def initialize(**args)
|
|
15
20
|
@inputs = args
|
|
16
21
|
@logs = []
|
|
17
22
|
end
|
|
18
23
|
|
|
19
24
|
def run
|
|
25
|
+
validate_inputs
|
|
20
26
|
validate
|
|
21
|
-
|
|
27
|
+
|
|
28
|
+
if errors.empty?
|
|
29
|
+
{ result:, status:, warnings: }
|
|
30
|
+
else
|
|
31
|
+
{ errors:, result: nil, status: :with_errors }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def result
|
|
36
|
+
@result ||= execute
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def success?
|
|
40
|
+
errors.empty?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def failure?
|
|
44
|
+
errors.any?
|
|
22
45
|
end
|
|
23
46
|
|
|
24
47
|
def status
|
|
25
48
|
warnings.empty? ? :ok : :with_warnings
|
|
26
49
|
end
|
|
27
50
|
|
|
28
|
-
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
def validate_inputs
|
|
54
|
+
methods.grep(/valid_(require|type|require_conditional)_\w+\?$/).each do |validation_method|
|
|
55
|
+
send(validation_method)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
attr_reader :inputs
|
|
29
60
|
|
|
30
61
|
def execute; end
|
|
31
62
|
|
data/lib/assistant/version.rb
CHANGED
data/lib/assistant.rb
CHANGED
data/mise.toml
ADDED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: assistant
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ramon Rodrigues
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: brakeman
|
|
@@ -16,246 +15,154 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
20
|
-
- - ">="
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: 5.2.3
|
|
18
|
+
version: '8.0'
|
|
23
19
|
type: :development
|
|
24
20
|
prerelease: false
|
|
25
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
22
|
requirements:
|
|
27
23
|
- - "~>"
|
|
28
24
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 5.2.3
|
|
25
|
+
version: '8.0'
|
|
33
26
|
- !ruby/object:Gem::Dependency
|
|
34
27
|
name: bundler
|
|
35
28
|
requirement: !ruby/object:Gem::Requirement
|
|
36
29
|
requirements:
|
|
37
30
|
- - "~>"
|
|
38
31
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
40
|
-
- - ">="
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: 2.3.19
|
|
32
|
+
version: '4.0'
|
|
43
33
|
type: :development
|
|
44
34
|
prerelease: false
|
|
45
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
36
|
requirements:
|
|
47
37
|
- - "~>"
|
|
48
38
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
50
|
-
- - ">="
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
52
|
-
version: 2.3.19
|
|
39
|
+
version: '4.0'
|
|
53
40
|
- !ruby/object:Gem::Dependency
|
|
54
41
|
name: byebug
|
|
55
42
|
requirement: !ruby/object:Gem::Requirement
|
|
56
43
|
requirements:
|
|
57
44
|
- - "~>"
|
|
58
45
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: '
|
|
60
|
-
- - ">="
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: 11.1.3
|
|
46
|
+
version: '13.0'
|
|
63
47
|
type: :development
|
|
64
48
|
prerelease: false
|
|
65
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
50
|
requirements:
|
|
67
51
|
- - "~>"
|
|
68
52
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '
|
|
70
|
-
- - ">="
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: 11.1.3
|
|
53
|
+
version: '13.0'
|
|
73
54
|
- !ruby/object:Gem::Dependency
|
|
74
55
|
name: colorize
|
|
75
56
|
requirement: !ruby/object:Gem::Requirement
|
|
76
57
|
requirements:
|
|
77
58
|
- - "~>"
|
|
78
59
|
- !ruby/object:Gem::Version
|
|
79
|
-
version:
|
|
80
|
-
type: :development
|
|
81
|
-
prerelease: false
|
|
82
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
83
|
-
requirements:
|
|
84
|
-
- - "~>"
|
|
85
|
-
- !ruby/object:Gem::Version
|
|
86
|
-
version: 0.8.1
|
|
87
|
-
- !ruby/object:Gem::Dependency
|
|
88
|
-
name: factory_bot
|
|
89
|
-
requirement: !ruby/object:Gem::Requirement
|
|
90
|
-
requirements:
|
|
91
|
-
- - "~>"
|
|
92
|
-
- !ruby/object:Gem::Version
|
|
93
|
-
version: '6.2'
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: 6.2.1
|
|
60
|
+
version: '1.1'
|
|
97
61
|
type: :development
|
|
98
62
|
prerelease: false
|
|
99
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
100
64
|
requirements:
|
|
101
65
|
- - "~>"
|
|
102
66
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
104
|
-
- - ">="
|
|
105
|
-
- !ruby/object:Gem::Version
|
|
106
|
-
version: 6.2.1
|
|
67
|
+
version: '1.1'
|
|
107
68
|
- !ruby/object:Gem::Dependency
|
|
108
69
|
name: fasterer
|
|
109
70
|
requirement: !ruby/object:Gem::Requirement
|
|
110
71
|
requirements:
|
|
111
72
|
- - "~>"
|
|
112
73
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: 0.
|
|
114
|
-
type: :development
|
|
115
|
-
prerelease: false
|
|
116
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
117
|
-
requirements:
|
|
118
|
-
- - "~>"
|
|
119
|
-
- !ruby/object:Gem::Version
|
|
120
|
-
version: 0.10.1
|
|
121
|
-
- !ruby/object:Gem::Dependency
|
|
122
|
-
name: rake
|
|
123
|
-
requirement: !ruby/object:Gem::Requirement
|
|
124
|
-
requirements:
|
|
125
|
-
- - "~>"
|
|
126
|
-
- !ruby/object:Gem::Version
|
|
127
|
-
version: '13.0'
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: 13.0.6
|
|
131
|
-
type: :development
|
|
132
|
-
prerelease: false
|
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - "~>"
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '13.0'
|
|
138
|
-
- - ">="
|
|
139
|
-
- !ruby/object:Gem::Version
|
|
140
|
-
version: 13.0.6
|
|
141
|
-
- !ruby/object:Gem::Dependency
|
|
142
|
-
name: rspec
|
|
143
|
-
requirement: !ruby/object:Gem::Requirement
|
|
144
|
-
requirements:
|
|
145
|
-
- - "~>"
|
|
146
|
-
- !ruby/object:Gem::Version
|
|
147
|
-
version: '3.12'
|
|
74
|
+
version: 0.11.0
|
|
148
75
|
type: :development
|
|
149
76
|
prerelease: false
|
|
150
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
151
78
|
requirements:
|
|
152
79
|
- - "~>"
|
|
153
80
|
- !ruby/object:Gem::Version
|
|
154
|
-
version:
|
|
81
|
+
version: 0.11.0
|
|
155
82
|
- !ruby/object:Gem::Dependency
|
|
156
|
-
name:
|
|
83
|
+
name: minitest
|
|
157
84
|
requirement: !ruby/object:Gem::Requirement
|
|
158
85
|
requirements:
|
|
159
86
|
- - "~>"
|
|
160
87
|
- !ruby/object:Gem::Version
|
|
161
|
-
version: '
|
|
88
|
+
version: '5.25'
|
|
162
89
|
type: :development
|
|
163
90
|
prerelease: false
|
|
164
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
165
92
|
requirements:
|
|
166
93
|
- - "~>"
|
|
167
94
|
- !ruby/object:Gem::Version
|
|
168
|
-
version: '
|
|
95
|
+
version: '5.25'
|
|
169
96
|
- !ruby/object:Gem::Dependency
|
|
170
|
-
name:
|
|
97
|
+
name: rake
|
|
171
98
|
requirement: !ruby/object:Gem::Requirement
|
|
172
99
|
requirements:
|
|
173
100
|
- - "~>"
|
|
174
101
|
- !ruby/object:Gem::Version
|
|
175
|
-
version:
|
|
102
|
+
version: '13.4'
|
|
176
103
|
type: :development
|
|
177
104
|
prerelease: false
|
|
178
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
179
106
|
requirements:
|
|
180
107
|
- - "~>"
|
|
181
108
|
- !ruby/object:Gem::Version
|
|
182
|
-
version:
|
|
109
|
+
version: '13.4'
|
|
183
110
|
- !ruby/object:Gem::Dependency
|
|
184
111
|
name: rubocop
|
|
185
112
|
requirement: !ruby/object:Gem::Requirement
|
|
186
113
|
requirements:
|
|
187
114
|
- - "~>"
|
|
188
115
|
- !ruby/object:Gem::Version
|
|
189
|
-
version: '1.
|
|
116
|
+
version: '1.86'
|
|
190
117
|
type: :development
|
|
191
118
|
prerelease: false
|
|
192
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
193
120
|
requirements:
|
|
194
121
|
- - "~>"
|
|
195
122
|
- !ruby/object:Gem::Version
|
|
196
|
-
version: '1.
|
|
123
|
+
version: '1.86'
|
|
197
124
|
- !ruby/object:Gem::Dependency
|
|
198
|
-
name: rubocop-
|
|
125
|
+
name: rubocop-minitest
|
|
199
126
|
requirement: !ruby/object:Gem::Requirement
|
|
200
127
|
requirements:
|
|
201
128
|
- - "~>"
|
|
202
129
|
- !ruby/object:Gem::Version
|
|
203
|
-
version: '
|
|
130
|
+
version: '0.39'
|
|
204
131
|
type: :development
|
|
205
132
|
prerelease: false
|
|
206
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
207
134
|
requirements:
|
|
208
135
|
- - "~>"
|
|
209
136
|
- !ruby/object:Gem::Version
|
|
210
|
-
version: '
|
|
137
|
+
version: '0.39'
|
|
211
138
|
- !ruby/object:Gem::Dependency
|
|
212
139
|
name: rubocop-performance
|
|
213
140
|
requirement: !ruby/object:Gem::Requirement
|
|
214
141
|
requirements:
|
|
215
142
|
- - "~>"
|
|
216
143
|
- !ruby/object:Gem::Version
|
|
217
|
-
version: '1.
|
|
218
|
-
- - ">="
|
|
219
|
-
- !ruby/object:Gem::Version
|
|
220
|
-
version: 1.17.1
|
|
144
|
+
version: '1.26'
|
|
221
145
|
type: :development
|
|
222
146
|
prerelease: false
|
|
223
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
224
148
|
requirements:
|
|
225
149
|
- - "~>"
|
|
226
150
|
- !ruby/object:Gem::Version
|
|
227
|
-
version: '1.
|
|
228
|
-
- - ">="
|
|
229
|
-
- !ruby/object:Gem::Version
|
|
230
|
-
version: 1.17.1
|
|
151
|
+
version: '1.26'
|
|
231
152
|
- !ruby/object:Gem::Dependency
|
|
232
153
|
name: rubocop-rake
|
|
233
154
|
requirement: !ruby/object:Gem::Requirement
|
|
234
155
|
requirements:
|
|
235
156
|
- - "~>"
|
|
236
157
|
- !ruby/object:Gem::Version
|
|
237
|
-
version: 0.
|
|
238
|
-
type: :development
|
|
239
|
-
prerelease: false
|
|
240
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
241
|
-
requirements:
|
|
242
|
-
- - "~>"
|
|
243
|
-
- !ruby/object:Gem::Version
|
|
244
|
-
version: 0.6.0
|
|
245
|
-
- !ruby/object:Gem::Dependency
|
|
246
|
-
name: rubocop-rspec
|
|
247
|
-
requirement: !ruby/object:Gem::Requirement
|
|
248
|
-
requirements:
|
|
249
|
-
- - "~>"
|
|
250
|
-
- !ruby/object:Gem::Version
|
|
251
|
-
version: '2.22'
|
|
158
|
+
version: '0.7'
|
|
252
159
|
type: :development
|
|
253
160
|
prerelease: false
|
|
254
161
|
version_requirements: !ruby/object:Gem::Requirement
|
|
255
162
|
requirements:
|
|
256
163
|
- - "~>"
|
|
257
164
|
- !ruby/object:Gem::Version
|
|
258
|
-
version: '
|
|
165
|
+
version: '0.7'
|
|
259
166
|
description: Simple, composable services
|
|
260
167
|
email:
|
|
261
168
|
- cerberus.ramon@gmail.com
|
|
@@ -263,14 +170,17 @@ executables: []
|
|
|
263
170
|
extensions: []
|
|
264
171
|
extra_rdoc_files: []
|
|
265
172
|
files:
|
|
266
|
-
- ".
|
|
173
|
+
- ".editorconfig"
|
|
267
174
|
- ".fasterer.yml"
|
|
268
175
|
- ".github/dependabot.yml"
|
|
176
|
+
- ".github/workflows/ci.yml"
|
|
177
|
+
- ".github/workflows/release.yml"
|
|
269
178
|
- ".gitignore"
|
|
270
|
-
- ".
|
|
179
|
+
- ".markdownlint.json"
|
|
271
180
|
- ".rubocop.yml"
|
|
272
181
|
- ".rubocop_todo.yml"
|
|
273
182
|
- ".ruby-version"
|
|
183
|
+
- CHANGELOG.md
|
|
274
184
|
- CODE_OF_CONDUCT.md
|
|
275
185
|
- Gemfile
|
|
276
186
|
- Gemfile.lock
|
|
@@ -282,20 +192,23 @@ files:
|
|
|
282
192
|
- bin/setup
|
|
283
193
|
- bin/version
|
|
284
194
|
- lib/assistant.rb
|
|
195
|
+
- lib/assistant/input_builder.rb
|
|
285
196
|
- lib/assistant/log_item.rb
|
|
286
197
|
- lib/assistant/log_list.rb
|
|
198
|
+
- lib/assistant/refinements/string_blankness.rb
|
|
287
199
|
- lib/assistant/service.rb
|
|
200
|
+
- lib/assistant/service.rbs
|
|
288
201
|
- lib/assistant/version.rb
|
|
202
|
+
- mise.toml
|
|
289
203
|
homepage: https://github.com/ramongr/assistant
|
|
290
204
|
licenses:
|
|
291
205
|
- MIT
|
|
292
206
|
metadata:
|
|
293
207
|
allowed_push_host: https://rubygems.org
|
|
294
|
-
changelog_uri: https://github.com/ramongr/assistant/blob/main/
|
|
208
|
+
changelog_uri: https://github.com/ramongr/assistant/blob/main/CHANGELOG.md
|
|
295
209
|
homepage_uri: https://github.com/ramongr/assistant
|
|
296
210
|
rubygems_mfa_required: 'true'
|
|
297
211
|
source_code_uri: https://github.com/ramongr/assistant
|
|
298
|
-
post_install_message:
|
|
299
212
|
rdoc_options: []
|
|
300
213
|
require_paths:
|
|
301
214
|
- lib
|
|
@@ -303,15 +216,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
303
216
|
requirements:
|
|
304
217
|
- - ">="
|
|
305
218
|
- !ruby/object:Gem::Version
|
|
306
|
-
version:
|
|
219
|
+
version: '3.4'
|
|
307
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
308
221
|
requirements:
|
|
309
222
|
- - ">="
|
|
310
223
|
- !ruby/object:Gem::Version
|
|
311
224
|
version: '0'
|
|
312
225
|
requirements: []
|
|
313
|
-
rubygems_version:
|
|
314
|
-
signing_key:
|
|
226
|
+
rubygems_version: 4.0.6
|
|
315
227
|
specification_version: 4
|
|
316
228
|
summary: Simple, soft fail enabled, composable services
|
|
317
229
|
test_files: []
|
data/.circleci/config.yml
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
version: 2.1 # Use 2.1 to enable using orbs and other features.
|
|
3
|
-
|
|
4
|
-
commands:
|
|
5
|
-
install_ruby_deps:
|
|
6
|
-
steps:
|
|
7
|
-
- checkout
|
|
8
|
-
- ruby/install-deps:
|
|
9
|
-
key: gems-v1
|
|
10
|
-
|
|
11
|
-
orbs:
|
|
12
|
-
ruby: circleci/ruby@2.0.0
|
|
13
|
-
executors:
|
|
14
|
-
ruby-executor:
|
|
15
|
-
working_directory: ~/assistant
|
|
16
|
-
docker:
|
|
17
|
-
- image: cimg/ruby:2.7.6
|
|
18
|
-
jobs:
|
|
19
|
-
build-ruby:
|
|
20
|
-
executor: ruby-executor
|
|
21
|
-
steps:
|
|
22
|
-
- install_ruby_deps
|
|
23
|
-
ruby-unit-test:
|
|
24
|
-
executor: ruby-executor
|
|
25
|
-
steps:
|
|
26
|
-
- install_ruby_deps
|
|
27
|
-
- run:
|
|
28
|
-
name: Run Unit Tests
|
|
29
|
-
command: bundle exec rspec
|
|
30
|
-
rubocop-check:
|
|
31
|
-
executor: ruby-executor
|
|
32
|
-
steps:
|
|
33
|
-
- install_ruby_deps
|
|
34
|
-
- ruby/rubocop-check
|
|
35
|
-
|
|
36
|
-
workflows:
|
|
37
|
-
build_check_and_test:
|
|
38
|
-
jobs:
|
|
39
|
-
- build-ruby
|
|
40
|
-
- ruby-unit-test:
|
|
41
|
-
requires:
|
|
42
|
-
- build-ruby
|
|
43
|
-
- rubocop-check:
|
|
44
|
-
requires:
|
|
45
|
-
- build-ruby
|
data/.rspec
DELETED