assistant 0.0.2 → 1.0.0.rc1
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/PULL_REQUEST_TEMPLATE.md +39 -0
- data/.github/dependabot.yml +4 -0
- data/.github/workflows/ci.yml +140 -0
- data/.github/workflows/docs.yml +64 -0
- data/.github/workflows/release.yml +46 -0
- data/.gitignore +5 -1
- data/.markdownlint.json +6 -0
- data/.opencode/.gitignore +4 -0
- data/.opencode/opencode.json +13 -0
- data/.opencode/skills/create-pr/SKILL.md +138 -0
- data/.opencode/skills/ruby-services/SKILL.md +81 -0
- data/.rubocop.yml +40 -148
- data/.ruby-version +1 -1
- data/.yardopts +17 -0
- data/CHANGELOG.md +434 -0
- data/CONTRIBUTING.md +131 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +264 -94
- data/README.md +125 -16
- data/Rakefile +53 -3
- data/SECURITY.md +50 -0
- data/Steepfile +49 -0
- data/_config.yml +87 -0
- data/assistant.gemspec +33 -20
- data/docs/api-reference.md +264 -0
- data/docs/changelog.md +26 -0
- data/docs/deprecations.md +86 -0
- data/docs/examples/cli-handler.md +17 -0
- data/docs/examples/composing-services.md +17 -0
- data/docs/examples/execute-callbacks.md +17 -0
- data/docs/examples/index.md +29 -0
- data/docs/examples/instrumentation-notifier.md +17 -0
- data/docs/examples/rails-service.md +17 -0
- data/docs/examples/rbs-generator.md +17 -0
- data/docs/examples/sidekiq-worker.md +17 -0
- data/docs/getting-started.md +136 -0
- data/docs/guides/composing-services.md +222 -0
- data/docs/guides/index.md +25 -0
- data/docs/guides/inputs.md +333 -0
- data/docs/guides/logging-and-results.md +202 -0
- data/docs/guides/rbs-and-types.md +16 -0
- data/docs/guides/validation.md +180 -0
- data/docs/index.md +69 -0
- data/docs/roadmap.md +33 -0
- data/exe/assistant-rbs +7 -0
- data/lib/assistant/execute_callbacks.rb +103 -0
- data/lib/assistant/execute_callbacks.rbs +30 -0
- data/lib/assistant/input_builder/accessors.rb +36 -0
- data/lib/assistant/input_builder/accessors.rbs +10 -0
- data/lib/assistant/input_builder/default_option.rb +41 -0
- data/lib/assistant/input_builder/default_option.rbs +11 -0
- data/lib/assistant/input_builder/dsl.rb +37 -0
- data/lib/assistant/input_builder/dsl.rbs +12 -0
- data/lib/assistant/input_builder/optional_option.rb +45 -0
- data/lib/assistant/input_builder/optional_option.rbs +10 -0
- data/lib/assistant/input_builder/registry.rb +27 -0
- data/lib/assistant/input_builder/registry.rbs +13 -0
- data/lib/assistant/input_builder/require_validator.rb +104 -0
- data/lib/assistant/input_builder/require_validator.rbs +24 -0
- data/lib/assistant/input_builder/type_validator.rb +47 -0
- data/lib/assistant/input_builder/type_validator.rbs +18 -0
- data/lib/assistant/input_builder.rb +28 -0
- data/lib/assistant/input_builder.rbs +15 -0
- data/lib/assistant/log_item.rb +75 -17
- data/lib/assistant/log_item.rbs +40 -0
- data/lib/assistant/log_list.rb +44 -12
- data/lib/assistant/log_list.rbs +48 -0
- data/lib/assistant/rbs_generator/cli.rb +109 -0
- data/lib/assistant/rbs_generator/cli.rbs +24 -0
- data/lib/assistant/rbs_generator/renderer.rb +67 -0
- data/lib/assistant/rbs_generator/renderer.rbs +11 -0
- data/lib/assistant/rbs_generator/writer.rb +65 -0
- data/lib/assistant/rbs_generator/writer.rbs +24 -0
- data/lib/assistant/rbs_generator.rb +38 -0
- data/lib/assistant/rbs_generator.rbs +5 -0
- data/lib/assistant/refinements/string_blankness.rb +14 -0
- data/lib/assistant/refinements/string_blankness.rbs +6 -0
- data/lib/assistant/service.rb +328 -8
- data/lib/assistant/service.rbs +86 -0
- data/lib/assistant/version.rb +5 -1
- data/lib/assistant/version.rbs +5 -0
- data/lib/assistant.rb +53 -4
- data/lib/assistant.rbs +25 -0
- data/mise.toml +6 -0
- data/sig/examples/greeter.rbs +14 -0
- metadata +128 -112
- data/.circleci/config.yml +0 -45
- data/.fasterer.yml +0 -19
- data/.rspec +0 -3
- data/.rubocop_todo.yml +0 -0
data/lib/assistant/version.rb
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Assistant
|
|
4
|
-
|
|
4
|
+
# Semantic version of the `assistant` gem. Follows the semver contract
|
|
5
|
+
# documented in `docs/v1/01-api-surface.md` from 1.0.0 onward.
|
|
6
|
+
#
|
|
7
|
+
# @return [String]
|
|
8
|
+
VERSION = '1.0.0.rc1'
|
|
5
9
|
end
|
data/lib/assistant.rb
CHANGED
|
@@ -1,10 +1,59 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Predeclare the namespace shells that multi-segment files
|
|
4
|
+
# (`module Assistant::Refinements::StringBlankness`, etc.) need to exist
|
|
5
|
+
# before they load, and declare the M-S3 instrumentation notifier
|
|
6
|
+
# accessor. Two sibling submodules in one wrapper avoid the
|
|
7
|
+
# `Style/CompactModuleNesting` single-child collapse trigger.
|
|
8
|
+
module Assistant
|
|
9
|
+
# M-S3: frozen no-op default notifier. Identity-compared by
|
|
10
|
+
# `Assistant.notifier=` so callers can detect the unconfigured state
|
|
11
|
+
# if they ever need to. See docs/v1/02-features.md (M-S3) and
|
|
12
|
+
# docs/v1/01-api-surface.md.
|
|
13
|
+
DEFAULT_NOTIFIER = ->(_event, _payload) {}
|
|
14
|
+
DEFAULT_NOTIFIER.freeze
|
|
15
|
+
|
|
16
|
+
# Namespace for the InputBuilder DSL and its submodules. Populated by
|
|
17
|
+
# `lib/assistant/input_builder*.rb`.
|
|
18
|
+
module InputBuilder; end
|
|
19
|
+
|
|
20
|
+
# Namespace for refinements bundled with the gem (`Refinements::*`).
|
|
21
|
+
module Refinements; end
|
|
22
|
+
|
|
23
|
+
@notifier = DEFAULT_NOTIFIER
|
|
24
|
+
|
|
25
|
+
class << self
|
|
26
|
+
# Reader for the configured instrumentation callable. Always returns
|
|
27
|
+
# a callable; returns `DEFAULT_NOTIFIER` when never assigned or when
|
|
28
|
+
# explicitly reset with `Assistant.notifier = nil`.
|
|
29
|
+
attr_reader :notifier
|
|
30
|
+
|
|
31
|
+
# Writer for the instrumentation callable. Accepts any object
|
|
32
|
+
# responding to `#call(event, payload)`, or `nil` to reset to the
|
|
33
|
+
# built-in no-op default. Anything else raises `ArgumentError`
|
|
34
|
+
# immediately so misconfiguration surfaces at boot rather than at
|
|
35
|
+
# the first service run.
|
|
36
|
+
def notifier=(callable)
|
|
37
|
+
@notifier =
|
|
38
|
+
if callable.nil?
|
|
39
|
+
DEFAULT_NOTIFIER
|
|
40
|
+
elsif callable.respond_to?(:call)
|
|
41
|
+
callable
|
|
42
|
+
else
|
|
43
|
+
raise ArgumentError,
|
|
44
|
+
"Assistant.notifier= expected nil or an object responding to #call, got #{callable.inspect}"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Core building blocks for the Assistant gem. Listed alphabetically so the
|
|
51
|
+
# top-level entry point exposes every public constant after a bare
|
|
52
|
+
# `require "assistant"` (M6).
|
|
53
|
+
require 'assistant/execute_callbacks'
|
|
54
|
+
require 'assistant/input_builder'
|
|
3
55
|
require 'assistant/log_item'
|
|
4
56
|
require 'assistant/log_list'
|
|
57
|
+
require 'assistant/refinements/string_blankness'
|
|
5
58
|
require 'assistant/service'
|
|
6
59
|
require 'assistant/version'
|
|
7
|
-
|
|
8
|
-
# Main Assistant lib entry point
|
|
9
|
-
module Assistant
|
|
10
|
-
end
|
data/lib/assistant.rbs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Type signatures for `lib/assistant.rb` — declares the top-level
|
|
2
|
+
# `Assistant` namespace, the empty namespace shells for
|
|
3
|
+
# `Assistant::InputBuilder` and `Assistant::Refinements` that the
|
|
4
|
+
# multi-segment submodule files reopen, and the M-S3 instrumentation
|
|
5
|
+
# notifier accessor. See docs/v1/01-api-surface.md.
|
|
6
|
+
|
|
7
|
+
module Assistant
|
|
8
|
+
# M-S3: instrumentation notifier. The setter accepts any object
|
|
9
|
+
# responding to `#call(event, payload)` or `nil` (reset to default).
|
|
10
|
+
# The contract is documented in docs/v1/01-api-surface.md; we use
|
|
11
|
+
# `untyped` for the setter parameter because the runtime check is
|
|
12
|
+
# `respond_to?(:call)` rather than a structural Proc type.
|
|
13
|
+
DEFAULT_NOTIFIER: ^(Symbol, Hash[Symbol, untyped]) -> void
|
|
14
|
+
|
|
15
|
+
self.@notifier: ^(Symbol, Hash[Symbol, untyped]) -> void
|
|
16
|
+
|
|
17
|
+
def self.notifier: () -> ^(Symbol, Hash[Symbol, untyped]) -> void
|
|
18
|
+
def self.notifier=: (untyped callable) -> ^(Symbol, Hash[Symbol, untyped]) -> void
|
|
19
|
+
|
|
20
|
+
module InputBuilder
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
module Refinements
|
|
24
|
+
end
|
|
25
|
+
end
|
data/mise.toml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated by assistant-rbs; do not edit.
|
|
2
|
+
|
|
3
|
+
module Examples
|
|
4
|
+
class Greeter < Assistant::Service
|
|
5
|
+
|
|
6
|
+
def name: () -> String
|
|
7
|
+
def name?: () -> bool
|
|
8
|
+
def age: () -> (Integer | Float)
|
|
9
|
+
def age?: () -> bool
|
|
10
|
+
def nickname: () -> String?
|
|
11
|
+
def nickname?: () -> bool
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
metadata
CHANGED
|
@@ -1,301 +1,318 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: assistant
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 1.0.0.rc1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ramon Rodrigues
|
|
8
|
-
|
|
9
|
-
bindir: bin
|
|
8
|
+
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: brakeman
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '5.2'
|
|
20
|
-
- - ">="
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: 5.2.3
|
|
23
|
-
type: :development
|
|
24
|
-
prerelease: false
|
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
-
requirements:
|
|
27
|
-
- - "~>"
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '5.2'
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 5.2.3
|
|
33
12
|
- !ruby/object:Gem::Dependency
|
|
34
13
|
name: bundler
|
|
35
14
|
requirement: !ruby/object:Gem::Requirement
|
|
36
15
|
requirements:
|
|
37
16
|
- - "~>"
|
|
38
17
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
40
|
-
- - ">="
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: 2.3.19
|
|
18
|
+
version: '4.0'
|
|
43
19
|
type: :development
|
|
44
20
|
prerelease: false
|
|
45
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
22
|
requirements:
|
|
47
23
|
- - "~>"
|
|
48
24
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
50
|
-
- - ">="
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
52
|
-
version: 2.3.19
|
|
25
|
+
version: '4.0'
|
|
53
26
|
- !ruby/object:Gem::Dependency
|
|
54
27
|
name: byebug
|
|
55
28
|
requirement: !ruby/object:Gem::Requirement
|
|
56
29
|
requirements:
|
|
57
30
|
- - "~>"
|
|
58
31
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: '
|
|
60
|
-
- - ">="
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: 11.1.3
|
|
32
|
+
version: '13.0'
|
|
63
33
|
type: :development
|
|
64
34
|
prerelease: false
|
|
65
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
36
|
requirements:
|
|
67
37
|
- - "~>"
|
|
68
38
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '
|
|
70
|
-
- - ">="
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: 11.1.3
|
|
39
|
+
version: '13.0'
|
|
73
40
|
- !ruby/object:Gem::Dependency
|
|
74
41
|
name: colorize
|
|
75
42
|
requirement: !ruby/object:Gem::Requirement
|
|
76
43
|
requirements:
|
|
77
44
|
- - "~>"
|
|
78
45
|
- !ruby/object:Gem::Version
|
|
79
|
-
version:
|
|
46
|
+
version: '1.1'
|
|
80
47
|
type: :development
|
|
81
48
|
prerelease: false
|
|
82
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
83
50
|
requirements:
|
|
84
51
|
- - "~>"
|
|
85
52
|
- !ruby/object:Gem::Version
|
|
86
|
-
version:
|
|
53
|
+
version: '1.1'
|
|
87
54
|
- !ruby/object:Gem::Dependency
|
|
88
|
-
name:
|
|
55
|
+
name: minitest
|
|
89
56
|
requirement: !ruby/object:Gem::Requirement
|
|
90
57
|
requirements:
|
|
91
58
|
- - "~>"
|
|
92
59
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: '6.
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: 6.2.1
|
|
60
|
+
version: '6.0'
|
|
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: '6.
|
|
104
|
-
- - ">="
|
|
105
|
-
- !ruby/object:Gem::Version
|
|
106
|
-
version: 6.2.1
|
|
67
|
+
version: '6.0'
|
|
107
68
|
- !ruby/object:Gem::Dependency
|
|
108
|
-
name:
|
|
69
|
+
name: rake
|
|
109
70
|
requirement: !ruby/object:Gem::Requirement
|
|
110
71
|
requirements:
|
|
111
72
|
- - "~>"
|
|
112
73
|
- !ruby/object:Gem::Version
|
|
113
|
-
version:
|
|
74
|
+
version: '13.4'
|
|
114
75
|
type: :development
|
|
115
76
|
prerelease: false
|
|
116
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
117
78
|
requirements:
|
|
118
79
|
- - "~>"
|
|
119
80
|
- !ruby/object:Gem::Version
|
|
120
|
-
version:
|
|
81
|
+
version: '13.4'
|
|
121
82
|
- !ruby/object:Gem::Dependency
|
|
122
|
-
name:
|
|
83
|
+
name: rubocop
|
|
123
84
|
requirement: !ruby/object:Gem::Requirement
|
|
124
85
|
requirements:
|
|
125
86
|
- - "~>"
|
|
126
87
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: '
|
|
88
|
+
version: '1.86'
|
|
128
89
|
- - ">="
|
|
129
90
|
- !ruby/object:Gem::Version
|
|
130
|
-
version:
|
|
91
|
+
version: 1.86.2
|
|
131
92
|
type: :development
|
|
132
93
|
prerelease: false
|
|
133
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
95
|
requirements:
|
|
135
96
|
- - "~>"
|
|
136
97
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: '
|
|
98
|
+
version: '1.86'
|
|
138
99
|
- - ">="
|
|
139
100
|
- !ruby/object:Gem::Version
|
|
140
|
-
version:
|
|
101
|
+
version: 1.86.2
|
|
141
102
|
- !ruby/object:Gem::Dependency
|
|
142
|
-
name:
|
|
103
|
+
name: rubocop-minitest
|
|
143
104
|
requirement: !ruby/object:Gem::Requirement
|
|
144
105
|
requirements:
|
|
145
106
|
- - "~>"
|
|
146
107
|
- !ruby/object:Gem::Version
|
|
147
|
-
version: '
|
|
108
|
+
version: '0.39'
|
|
148
109
|
type: :development
|
|
149
110
|
prerelease: false
|
|
150
111
|
version_requirements: !ruby/object:Gem::Requirement
|
|
151
112
|
requirements:
|
|
152
113
|
- - "~>"
|
|
153
114
|
- !ruby/object:Gem::Version
|
|
154
|
-
version: '
|
|
115
|
+
version: '0.39'
|
|
155
116
|
- !ruby/object:Gem::Dependency
|
|
156
|
-
name:
|
|
157
|
-
requirement: !ruby/object:Gem::Requirement
|
|
158
|
-
requirements:
|
|
159
|
-
- - "~>"
|
|
160
|
-
- !ruby/object:Gem::Version
|
|
161
|
-
version: '1.2'
|
|
162
|
-
type: :development
|
|
163
|
-
prerelease: false
|
|
164
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
165
|
-
requirements:
|
|
166
|
-
- - "~>"
|
|
167
|
-
- !ruby/object:Gem::Version
|
|
168
|
-
version: '1.2'
|
|
169
|
-
- !ruby/object:Gem::Dependency
|
|
170
|
-
name: rspec_junit_formatter
|
|
117
|
+
name: rubocop-performance
|
|
171
118
|
requirement: !ruby/object:Gem::Requirement
|
|
172
119
|
requirements:
|
|
173
120
|
- - "~>"
|
|
174
121
|
- !ruby/object:Gem::Version
|
|
175
|
-
version:
|
|
122
|
+
version: '1.26'
|
|
176
123
|
type: :development
|
|
177
124
|
prerelease: false
|
|
178
125
|
version_requirements: !ruby/object:Gem::Requirement
|
|
179
126
|
requirements:
|
|
180
127
|
- - "~>"
|
|
181
128
|
- !ruby/object:Gem::Version
|
|
182
|
-
version:
|
|
129
|
+
version: '1.26'
|
|
183
130
|
- !ruby/object:Gem::Dependency
|
|
184
|
-
name: rubocop
|
|
131
|
+
name: rubocop-rake
|
|
185
132
|
requirement: !ruby/object:Gem::Requirement
|
|
186
133
|
requirements:
|
|
187
134
|
- - "~>"
|
|
188
135
|
- !ruby/object:Gem::Version
|
|
189
|
-
version: '
|
|
136
|
+
version: '0.7'
|
|
190
137
|
type: :development
|
|
191
138
|
prerelease: false
|
|
192
139
|
version_requirements: !ruby/object:Gem::Requirement
|
|
193
140
|
requirements:
|
|
194
141
|
- - "~>"
|
|
195
142
|
- !ruby/object:Gem::Version
|
|
196
|
-
version: '
|
|
143
|
+
version: '0.7'
|
|
197
144
|
- !ruby/object:Gem::Dependency
|
|
198
|
-
name: rubocop-
|
|
145
|
+
name: rubocop-style-compact_nesting
|
|
199
146
|
requirement: !ruby/object:Gem::Requirement
|
|
200
147
|
requirements:
|
|
201
148
|
- - "~>"
|
|
202
149
|
- !ruby/object:Gem::Version
|
|
203
|
-
version: '
|
|
150
|
+
version: '0.1'
|
|
204
151
|
type: :development
|
|
205
152
|
prerelease: false
|
|
206
153
|
version_requirements: !ruby/object:Gem::Requirement
|
|
207
154
|
requirements:
|
|
208
155
|
- - "~>"
|
|
209
156
|
- !ruby/object:Gem::Version
|
|
210
|
-
version: '
|
|
157
|
+
version: '0.1'
|
|
211
158
|
- !ruby/object:Gem::Dependency
|
|
212
|
-
name:
|
|
159
|
+
name: simplecov
|
|
213
160
|
requirement: !ruby/object:Gem::Requirement
|
|
214
161
|
requirements:
|
|
215
162
|
- - "~>"
|
|
216
163
|
- !ruby/object:Gem::Version
|
|
217
|
-
version: '
|
|
218
|
-
- - ">="
|
|
219
|
-
- !ruby/object:Gem::Version
|
|
220
|
-
version: 1.17.1
|
|
164
|
+
version: '0.22'
|
|
221
165
|
type: :development
|
|
222
166
|
prerelease: false
|
|
223
167
|
version_requirements: !ruby/object:Gem::Requirement
|
|
224
168
|
requirements:
|
|
225
169
|
- - "~>"
|
|
226
170
|
- !ruby/object:Gem::Version
|
|
227
|
-
version: '
|
|
228
|
-
- - ">="
|
|
229
|
-
- !ruby/object:Gem::Version
|
|
230
|
-
version: 1.17.1
|
|
171
|
+
version: '0.22'
|
|
231
172
|
- !ruby/object:Gem::Dependency
|
|
232
|
-
name:
|
|
173
|
+
name: steep
|
|
233
174
|
requirement: !ruby/object:Gem::Requirement
|
|
234
175
|
requirements:
|
|
235
176
|
- - "~>"
|
|
236
177
|
- !ruby/object:Gem::Version
|
|
237
|
-
version:
|
|
178
|
+
version: '2.0'
|
|
238
179
|
type: :development
|
|
239
180
|
prerelease: false
|
|
240
181
|
version_requirements: !ruby/object:Gem::Requirement
|
|
241
182
|
requirements:
|
|
242
183
|
- - "~>"
|
|
243
184
|
- !ruby/object:Gem::Version
|
|
244
|
-
version:
|
|
185
|
+
version: '2.0'
|
|
245
186
|
- !ruby/object:Gem::Dependency
|
|
246
|
-
name:
|
|
187
|
+
name: yard
|
|
247
188
|
requirement: !ruby/object:Gem::Requirement
|
|
248
189
|
requirements:
|
|
249
190
|
- - "~>"
|
|
250
191
|
- !ruby/object:Gem::Version
|
|
251
|
-
version: '
|
|
192
|
+
version: '0.9'
|
|
252
193
|
type: :development
|
|
253
194
|
prerelease: false
|
|
254
195
|
version_requirements: !ruby/object:Gem::Requirement
|
|
255
196
|
requirements:
|
|
256
197
|
- - "~>"
|
|
257
198
|
- !ruby/object:Gem::Version
|
|
258
|
-
version: '
|
|
259
|
-
description:
|
|
199
|
+
version: '0.9'
|
|
200
|
+
description: |
|
|
201
|
+
Assistant is a tiny, dependency-free Ruby library for writing soft-fail,
|
|
202
|
+
composable service objects. A service declares its inputs, validates
|
|
203
|
+
them, runs its body, and returns a uniform result that always carries
|
|
204
|
+
either a value plus warnings or a list of errors — never raising for
|
|
205
|
+
expected failures. Ships with RBS signatures, a 1.0-frozen public API,
|
|
206
|
+
and zero runtime gem dependencies.
|
|
260
207
|
email:
|
|
261
208
|
- cerberus.ramon@gmail.com
|
|
262
|
-
executables:
|
|
209
|
+
executables:
|
|
210
|
+
- assistant-rbs
|
|
263
211
|
extensions: []
|
|
264
212
|
extra_rdoc_files: []
|
|
265
213
|
files:
|
|
266
|
-
- ".
|
|
267
|
-
- ".
|
|
214
|
+
- ".editorconfig"
|
|
215
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
268
216
|
- ".github/dependabot.yml"
|
|
217
|
+
- ".github/workflows/ci.yml"
|
|
218
|
+
- ".github/workflows/docs.yml"
|
|
219
|
+
- ".github/workflows/release.yml"
|
|
269
220
|
- ".gitignore"
|
|
270
|
-
- ".
|
|
221
|
+
- ".markdownlint.json"
|
|
222
|
+
- ".opencode/.gitignore"
|
|
223
|
+
- ".opencode/opencode.json"
|
|
224
|
+
- ".opencode/skills/create-pr/SKILL.md"
|
|
225
|
+
- ".opencode/skills/ruby-services/SKILL.md"
|
|
271
226
|
- ".rubocop.yml"
|
|
272
|
-
- ".rubocop_todo.yml"
|
|
273
227
|
- ".ruby-version"
|
|
228
|
+
- ".yardopts"
|
|
229
|
+
- CHANGELOG.md
|
|
274
230
|
- CODE_OF_CONDUCT.md
|
|
231
|
+
- CONTRIBUTING.md
|
|
275
232
|
- Gemfile
|
|
276
233
|
- Gemfile.lock
|
|
277
234
|
- LICENSE.txt
|
|
278
235
|
- README.md
|
|
279
236
|
- Rakefile
|
|
237
|
+
- SECURITY.md
|
|
238
|
+
- Steepfile
|
|
239
|
+
- _config.yml
|
|
280
240
|
- assistant.gemspec
|
|
281
241
|
- bin/console
|
|
282
242
|
- bin/setup
|
|
283
243
|
- bin/version
|
|
244
|
+
- docs/api-reference.md
|
|
245
|
+
- docs/changelog.md
|
|
246
|
+
- docs/deprecations.md
|
|
247
|
+
- docs/examples/cli-handler.md
|
|
248
|
+
- docs/examples/composing-services.md
|
|
249
|
+
- docs/examples/execute-callbacks.md
|
|
250
|
+
- docs/examples/index.md
|
|
251
|
+
- docs/examples/instrumentation-notifier.md
|
|
252
|
+
- docs/examples/rails-service.md
|
|
253
|
+
- docs/examples/rbs-generator.md
|
|
254
|
+
- docs/examples/sidekiq-worker.md
|
|
255
|
+
- docs/getting-started.md
|
|
256
|
+
- docs/guides/composing-services.md
|
|
257
|
+
- docs/guides/index.md
|
|
258
|
+
- docs/guides/inputs.md
|
|
259
|
+
- docs/guides/logging-and-results.md
|
|
260
|
+
- docs/guides/rbs-and-types.md
|
|
261
|
+
- docs/guides/validation.md
|
|
262
|
+
- docs/index.md
|
|
263
|
+
- docs/roadmap.md
|
|
264
|
+
- exe/assistant-rbs
|
|
284
265
|
- lib/assistant.rb
|
|
266
|
+
- lib/assistant.rbs
|
|
267
|
+
- lib/assistant/execute_callbacks.rb
|
|
268
|
+
- lib/assistant/execute_callbacks.rbs
|
|
269
|
+
- lib/assistant/input_builder.rb
|
|
270
|
+
- lib/assistant/input_builder.rbs
|
|
271
|
+
- lib/assistant/input_builder/accessors.rb
|
|
272
|
+
- lib/assistant/input_builder/accessors.rbs
|
|
273
|
+
- lib/assistant/input_builder/default_option.rb
|
|
274
|
+
- lib/assistant/input_builder/default_option.rbs
|
|
275
|
+
- lib/assistant/input_builder/dsl.rb
|
|
276
|
+
- lib/assistant/input_builder/dsl.rbs
|
|
277
|
+
- lib/assistant/input_builder/optional_option.rb
|
|
278
|
+
- lib/assistant/input_builder/optional_option.rbs
|
|
279
|
+
- lib/assistant/input_builder/registry.rb
|
|
280
|
+
- lib/assistant/input_builder/registry.rbs
|
|
281
|
+
- lib/assistant/input_builder/require_validator.rb
|
|
282
|
+
- lib/assistant/input_builder/require_validator.rbs
|
|
283
|
+
- lib/assistant/input_builder/type_validator.rb
|
|
284
|
+
- lib/assistant/input_builder/type_validator.rbs
|
|
285
285
|
- lib/assistant/log_item.rb
|
|
286
|
+
- lib/assistant/log_item.rbs
|
|
286
287
|
- lib/assistant/log_list.rb
|
|
288
|
+
- lib/assistant/log_list.rbs
|
|
289
|
+
- lib/assistant/rbs_generator.rb
|
|
290
|
+
- lib/assistant/rbs_generator.rbs
|
|
291
|
+
- lib/assistant/rbs_generator/cli.rb
|
|
292
|
+
- lib/assistant/rbs_generator/cli.rbs
|
|
293
|
+
- lib/assistant/rbs_generator/renderer.rb
|
|
294
|
+
- lib/assistant/rbs_generator/renderer.rbs
|
|
295
|
+
- lib/assistant/rbs_generator/writer.rb
|
|
296
|
+
- lib/assistant/rbs_generator/writer.rbs
|
|
297
|
+
- lib/assistant/refinements/string_blankness.rb
|
|
298
|
+
- lib/assistant/refinements/string_blankness.rbs
|
|
287
299
|
- lib/assistant/service.rb
|
|
300
|
+
- lib/assistant/service.rbs
|
|
288
301
|
- lib/assistant/version.rb
|
|
302
|
+
- lib/assistant/version.rbs
|
|
303
|
+
- mise.toml
|
|
304
|
+
- sig/examples/greeter.rbs
|
|
289
305
|
homepage: https://github.com/ramongr/assistant
|
|
290
306
|
licenses:
|
|
291
307
|
- MIT
|
|
292
308
|
metadata:
|
|
293
309
|
allowed_push_host: https://rubygems.org
|
|
294
|
-
|
|
310
|
+
bug_tracker_uri: https://github.com/ramongr/assistant/issues
|
|
311
|
+
changelog_uri: https://github.com/ramongr/assistant/blob/main/CHANGELOG.md
|
|
312
|
+
documentation_uri: https://rubydoc.info/gems/assistant
|
|
295
313
|
homepage_uri: https://github.com/ramongr/assistant
|
|
296
314
|
rubygems_mfa_required: 'true'
|
|
297
315
|
source_code_uri: https://github.com/ramongr/assistant
|
|
298
|
-
post_install_message:
|
|
299
316
|
rdoc_options: []
|
|
300
317
|
require_paths:
|
|
301
318
|
- lib
|
|
@@ -303,15 +320,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
303
320
|
requirements:
|
|
304
321
|
- - ">="
|
|
305
322
|
- !ruby/object:Gem::Version
|
|
306
|
-
version:
|
|
323
|
+
version: '3.4'
|
|
307
324
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
308
325
|
requirements:
|
|
309
326
|
- - ">="
|
|
310
327
|
- !ruby/object:Gem::Version
|
|
311
328
|
version: '0'
|
|
312
329
|
requirements: []
|
|
313
|
-
rubygems_version:
|
|
314
|
-
signing_key:
|
|
330
|
+
rubygems_version: 4.0.10
|
|
315
331
|
specification_version: 4
|
|
316
|
-
summary:
|
|
332
|
+
summary: Tiny, dependency-free soft-fail service objects for Ruby
|
|
317
333
|
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/.fasterer.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
speedups:
|
|
2
|
-
rescue_vs_respond_to: true
|
|
3
|
-
module_eval: true
|
|
4
|
-
shuffle_first_vs_sample: true
|
|
5
|
-
for_loop_vs_each: true
|
|
6
|
-
each_with_index_vs_while: false
|
|
7
|
-
map_flatten_vs_flat_map: true
|
|
8
|
-
reverse_each_vs_reverse_each: true
|
|
9
|
-
select_first_vs_detect: true
|
|
10
|
-
select_last_vs_reverse_detect: true
|
|
11
|
-
sort_vs_sort_by: true
|
|
12
|
-
fetch_with_argument_vs_block: true
|
|
13
|
-
keys_each_vs_each_key: true
|
|
14
|
-
hash_merge_bang_vs_hash_brackets: true
|
|
15
|
-
block_vs_symbol_to_proc: true
|
|
16
|
-
proc_call_vs_yield: true
|
|
17
|
-
gsub_vs_tr: true
|
|
18
|
-
getter_vs_attr_reader: true
|
|
19
|
-
setter_vs_attr_writer: true
|
data/.rspec
DELETED
data/.rubocop_todo.yml
DELETED
|
File without changes
|