pennyworth 10.0.1 → 11.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.adoc +209 -30
  5. data/bin/pennyworth +1 -3
  6. data/lib/pennyworth.rb +11 -2
  7. data/lib/pennyworth/cli/actions/config.rb +35 -0
  8. data/lib/pennyworth/cli/actions/encodings.rb +23 -0
  9. data/lib/pennyworth/cli/actions/git_hub.rb +27 -0
  10. data/lib/pennyworth/cli/actions/http_statuses.rb +23 -0
  11. data/lib/pennyworth/cli/actions/ruby_gems.rb +27 -0
  12. data/lib/pennyworth/cli/actions/system/errors.rb +25 -0
  13. data/lib/pennyworth/cli/actions/system/signals.rb +25 -0
  14. data/lib/pennyworth/cli/actions/text.rb +23 -0
  15. data/lib/pennyworth/cli/configuration/content.rb +28 -0
  16. data/lib/pennyworth/cli/configuration/defaults.yml +25 -0
  17. data/lib/pennyworth/cli/configuration/loader.rb +37 -0
  18. data/lib/pennyworth/cli/parsers.rb +11 -0
  19. data/lib/pennyworth/cli/parsers/assembler.rb +32 -0
  20. data/lib/pennyworth/cli/parsers/core.rb +100 -0
  21. data/lib/pennyworth/cli/parsers/git_hub.rb +51 -0
  22. data/lib/pennyworth/cli/parsers/ruby_gems.rb +35 -0
  23. data/lib/pennyworth/cli/shell.rb +82 -0
  24. data/lib/pennyworth/container.rb +40 -0
  25. data/lib/pennyworth/identity.rb +2 -1
  26. data/lib/pennyworth/inflector.rb +18 -0
  27. data/lib/pennyworth/integrations/git_hub/client.rb +59 -0
  28. data/lib/pennyworth/integrations/git_hub/response.rb +33 -0
  29. data/lib/pennyworth/integrations/ruby_gems/client.rb +29 -0
  30. data/lib/pennyworth/loaders/encodings.rb +31 -0
  31. data/lib/pennyworth/loaders/http_statuses.rb +28 -0
  32. data/lib/pennyworth/loaders/projects.rb +22 -0
  33. data/lib/pennyworth/loaders/system/errors.rb +33 -0
  34. data/lib/pennyworth/loaders/system/signals.rb +21 -0
  35. data/lib/pennyworth/loaders/text.rb +27 -0
  36. data/lib/pennyworth/models/encoding.rb +8 -0
  37. data/lib/pennyworth/models/http_status.rb +8 -0
  38. data/lib/pennyworth/models/system/error.rb +10 -0
  39. data/lib/pennyworth/models/system/signal.rb +10 -0
  40. data/lib/pennyworth/models/text.rb +8 -0
  41. data/lib/pennyworth/presenters/encoding.rb +22 -0
  42. data/lib/pennyworth/presenters/gem.rb +48 -0
  43. data/lib/pennyworth/presenters/http_status.rb +41 -0
  44. data/lib/pennyworth/presenters/repository.rb +35 -0
  45. data/lib/pennyworth/presenters/system/error.rb +28 -0
  46. data/lib/pennyworth/presenters/system/signal.rb +22 -0
  47. data/lib/pennyworth/presenters/text.rb +25 -0
  48. data/lib/pennyworth/processor.rb +68 -0
  49. data/lib/pennyworth/serializers/encoding.rb +33 -0
  50. data/lib/pennyworth/serializers/http_status.rb +41 -0
  51. data/lib/pennyworth/serializers/project.rb +52 -0
  52. data/lib/pennyworth/serializers/system/error.rb +46 -0
  53. data/lib/pennyworth/serializers/system/signal.rb +40 -0
  54. data/lib/pennyworth/serializers/text.rb +31 -0
  55. metadata +110 -19
  56. metadata.gz.sig +2 -2
  57. data/lib/pennyworth/cli.rb +0 -140
  58. data/lib/pennyworth/templates/workflows/user.workflow.B59B22A2-1880-4765-9358-412791BE9202/icon.png +0 -0
  59. data/lib/pennyworth/templates/workflows/user.workflow.B59B22A2-1880-4765-9358-412791BE9202/info.plist +0 -159
  60. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/icon.png +0 -0
  61. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/info.plist +0 -272
  62. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-camelcase.png +0 -0
  63. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-capitalize.png +0 -0
  64. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-lowercase.png +0 -0
  65. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-size.png +0 -0
  66. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-snakecase.png +0 -0
  67. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-titleize.png +0 -0
  68. data/lib/pennyworth/templates/workflows/user.workflow.C431E56A-0EC2-47EE-94D5-D67D9FE323BE/string-uppercase.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15ea95d43142092bd39219110734448c8195e9c19e44741e20a859574b1176af
4
- data.tar.gz: 31128461200bdf505cfa3233c33c9dc8c5f2db9628668fb3beae1d882173f155
3
+ metadata.gz: c5fc1a6cb19af609e74dced40b61f98d7a26477ecf50702a791dcea8a050e13d
4
+ data.tar.gz: e1e72f140d6cc607ec607ce8169bab8c2f6f479bedf499ab9915ae03c439e499
5
5
  SHA512:
6
- metadata.gz: 05554404a9de561023d12d93dae5c61a6b9b305766f25e3a091130e0a6171ef96a5ead3cfe7a9935b826bb992cf6755eaa5ece2eb55bf07f13896224b5783338
7
- data.tar.gz: 7b701ad8c5f34f7c0203b79ae889567bb80b38c1809023f5a8311d55db0631705162570e7e9c5110af0fb4703893fab526f720117e25af422961c095b8eb4ab7
6
+ metadata.gz: a492fede34dfcee4cdf2477d42d7618985cf6c6747b13eed6bd3af91d79e26ce438babaa1ae97e8e093c8ff3842920aad4e9e31374afff2a4c286a1329dbeb80
7
+ data.tar.gz: 97678ce94c0d140b61cee8601e2a1e399e46e8f3d6265dd73f44c6684df4ff22f302d29b4b7a0ac9eb42e6b01c6aa93903b631c3a132439851b4113e73115c33
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -17,19 +17,20 @@ toc::[]
17
17
 
18
18
  == Features
19
19
 
20
- * Adds Ruby support to Alfred.
21
- * Adds Alfred Workflow:
20
+ * Adds Ruby support to link:https://www.alfredapp.com/help/workflows/inputs/script-filter/json[Alfred].
22
21
 
23
- image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred_workflow.png[Alfred
24
- Workflow]
22
+ == Screencast
23
+
24
+ video::https://www.alchemists.io/videos/projects/pennyworth/demo.mp4[width=1062,height=1194,role=focal_point]
25
25
 
26
26
  == Requirements
27
27
 
28
- . https://www.apple.com/macos[macOS]
29
- . https://www.alfredapp.com[Alfred]
30
- . https://www.alfredapp.com/purchase[Alfred Powerpack]
31
- . https://github.com/postmodern/chruby[chruby]
32
- . https://www.ruby-lang.org[Ruby]
28
+ . link:https://www.apple.com/macos[macOS]
29
+ . link:https://www.alfredapp.com[Alfred]
30
+ . link:https://www.alfredapp.com/purchase[Alfred Powerpack]
31
+ . link:https://www.gnu.org/software/bash[Bash]
32
+ . link:https://github.com/postmodern/chruby[chruby]
33
+ . link:https://www.ruby-lang.org[Ruby]
33
34
 
34
35
  == Setup
35
36
 
@@ -40,36 +41,71 @@ To install, run:
40
41
  gem install pennyworth
41
42
  ----
42
43
 
44
+ When using the `-\-git_hub` CLI option, you'll want to supply your login and personal access token
45
+ with at least _read_ access via the following environment variables:
46
+
47
+ [source,bash]
48
+ ----
49
+ GITHUB_API_LOGIN=
50
+ GITHUB_API_TOKEN=
51
+ ----
52
+
53
+ You can configure these environment variables via link:https://direnv.net[direnv] if using the CLI
54
+ or through the link:https://www.alfredapp.com/help/workflows/advanced/variables/#environment[Alfred
55
+ Workflow Environment].
56
+
43
57
  == Usage
44
58
 
45
59
  === Command Line Interface (CLI)
46
60
 
47
- From the command line, type: pennyworth
61
+ From the command line, type `pennyworth` to render usage:
48
62
 
49
63
  ....
50
- pennyworth -c, [--config] # Manage gem configuration.
51
- pennyworth -h, [--help=COMMAND] # Show this message or get help for a command.
52
- pennyworth -i, [--install] # Install Alfred Workflows.
53
- pennyworth -s, [--string=VALUE] # Manipulate strings.
54
- pennyworth -v, [--version] # Show gem version.
64
+ USAGE:
65
+ -c, --config ACTION Manage gem configuration. Actions: edit || view.
66
+ --encodings Render Alfred encodings script filter.
67
+ --git_hub Render Alfred GitHub repositories script filter.
68
+ -h, --help Show this message.
69
+ --http_statuses Render Alfred HTTP statuses script filter.
70
+ --ruby_gems Render Alfred RubyGems script filter.
71
+ --system_errors Render Alfred system errors script filter.
72
+ --system_signals Render Alfred system signals script filter.
73
+ --text CONTENT Render Alfred text script filter.
74
+ -v, --version Show gem version.
75
+
76
+ GITHUB OPTIONS:
77
+ --organization [HANDLE] Set organization. Default: "".
78
+ --user [HANDLE] Set user. Default: "".
79
+
80
+ RUBYGEMS OPTIONS:
81
+ --owner [HANDLE] Set owner. Default: "".
55
82
  ....
56
83
 
57
- For string options, type: pennyworth help string
84
+ The following demonstrates how to use Pennyworth from the CLI or within an Alfred script filter:
58
85
 
59
- ....
60
- -d, [--downcase], [--no-downcase] # Downcase string.
61
- -u, [--upcase], [--no-upcase] # Upcase string.
62
- -t, [--titleize], [--no-titleize] # Capitalize each word and delimit with space or forward slash.
63
- -c, [--camelcase], [--no-camelcase] # Capitalize each word and delimit with nothing or double colon.
64
- -s, [--snakecase], [--no-snakecase] # Downcase each word and delimit with underscore or forward slash.
65
- -s, [--size], [--no-size] # Calculate string size.
66
- ....
86
+ [source,bash]
87
+ ----
88
+ pennyworth --config edit
89
+ pennyworth --config view
90
+
91
+ pennyworth --encodings
92
+
93
+ pennyworth --git_hub --organization alchemists
94
+ pennyworth --git_hub --user bkuhlmann
95
+
96
+ pennyworth --http_statuses
97
+ pennyworth --ruby_gems --owner bkuhlmann
98
+ pennyworth --system_errors
99
+ pennyworth --system_signals
100
+
101
+ pennyworth --text demo
102
+ pennyworth --text "An Example"
103
+ ----
67
104
 
68
- While the command line options are nice, the real power comes from running the following command:
69
- `pennyworth -i`. This command installs the Alfred Workflows to support this gem. You can use the
70
- Alfred commands provided by each workflow instead of the CLI. Check each workflows documentation for
71
- details by opening Alfred preferences and clicking on the _Workflows_ tab. Each workflow associated
72
- with this gem is prefixed with _Pennyworth_.
105
+ While the command line options are nice, the real power comes from using Pennyworth in conjunction
106
+ with link:https://www.alfredapp.com/help/workflows/inputs/script-filter/json[Alfred Script Filters].
107
+ Without having Alfred wired up to consume the CLI output, you'll only get a JSON in your console. To
108
+ explain better, continue reading or skip ahead to the _Workflows_ section.
73
109
 
74
110
  === Customization
75
111
 
@@ -86,12 +122,155 @@ The default configuration is as follows:
86
122
 
87
123
  [source,yaml]
88
124
  ----
89
- :alfred_settings_root: "/Users/bkuhlmann/Dropbox/Cache/Alfred/Alfred.alfredpreferences"
125
+ :alfred:
126
+ :preferences:
127
+ :inflections:
128
+ - "Bkuhlmann": "bkuhlmann"
129
+ - "Dry Auto Inject": "Dry AutoInject"
130
+ - "Dry Cli": "Dry CLI"
131
+ - "Flacsmith": "FLACsmith"
132
+ - "Git Plus": "Git+"
133
+ - "Mac Os Config": "macOS Configuration"
134
+ - "Mac Os": "MacOS"
135
+ - "Prawn Plus": "Prawn+"
136
+ - "Rubocop Ast": "Rubocop AST"
137
+ - "Rubocop Md": "Rubocop Markdown"
138
+ - "Rubocop Rspec": "Rubocop RSpec"
139
+ - "Xdg": "XDG"
140
+ :git_hub:
141
+ :api_url: "https://api.github.com"
142
+ :organization:
143
+ :user:
144
+ :http:
145
+ :statuses:
146
+ :url: "https://httpstatuses.com"
147
+ :ruby_gems:
148
+ :api_url: "https://rubygems.org/api/v1"
149
+ :owner:
90
150
  ----
91
151
 
92
152
  Feel free to take this default configuration, modify, and save as your own custom
93
153
  `configuration.yml`.
94
154
 
155
+ === Themes
156
+
157
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/alchemists-theme.png[Alchemists Theme,width=634,height=121,role=focal_point]
158
+
159
+ To use the
160
+ link:https://www.alchemists.io/public/aflred/themes/alchemists.alfredappearance[Alchemists Theme],
161
+ used for all screenshots, follow these steps:
162
+
163
+ 1. link:https://www.alchemists.io/public/aflred/themes/alchemists.alfredappearance[Download] (right
164
+ click) theme.
165
+ 1. Double click to install.
166
+
167
+ === Workflows
168
+
169
+ Not all workflows require Pennyworth to run properly. For the workflows that _do_ require Pennyworth
170
+ support, the following assumptions are made:
171
+
172
+ 1. Your link:https://www.alchemists.io/projects/dotfiles[Dotfiles] are configured to use Bash and
173
+ load your environment appropriately.
174
+ 1. You have the latest version of Ruby and Pennyworth installed.
175
+
176
+ With the above requirements in mind, you should only need to build an Alfred Script Filter that
177
+ looks something like this:
178
+
179
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/script_filter.png[Script Filter,width=776,height=635,role=focal_point]
180
+
181
+ That's all it takes to use Pennyworth as an Alfred script filter. 🎉 You don't have to do any of this
182
+ work yourself. I've already built the corresponding workflows. The following sections will allow you
183
+ to download and use the corresponding Alfred Workflows that are powered by Pennyworth.
184
+
185
+ Before diving into each workflow, the following capabilties are mostly available to all workflows
186
+ depending on what kind of item is selected in the script filter:
187
+
188
+ * `SHIFT` or `COMMAND + y` will launch quick look for any URL based workflow.
189
+ * `ENTER` or `COMMAND + c` will copy non-URL selections to clipboard.
190
+ * `COMMAND + l` will launch large type of current selection.
191
+ * `ENTER` Will either copy selection to clipboard or launch URL in default web browser.
192
+
193
+ ==== Alchemists
194
+
195
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/alchemists-projects.png[Alchemists Projects,width=706,height=622,role=focal_point]
196
+
197
+ 1. link:https://www.alchemists.io/public/aflred/workflows/alchemists.alfredworkflow[Download] (right
198
+ click).
199
+ 1. Type `ax` to activate.
200
+
201
+ 💡 Use `ENTER` to view site, `CONTROL` to view changes, `OPTION` to view source, and `COMMAND` to
202
+ view issues.
203
+
204
+ ==== Dry RB
205
+
206
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/dry-gems.png[Dry Gems,width=706,height=622,role=focal_point]
207
+
208
+ 1. link:https://www.alchemists.io/public/aflred/workflows/dry.alfredworkflow[Download] (right click).
209
+ 1. Type `dry` to activate.
210
+
211
+ 💡 Use `ENTER` to visit site, `CONTROL` to view changes, `OPTION` to view source, and `COMMAND` to
212
+ view issues.
213
+
214
+ ==== Encodings
215
+
216
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/encodings.png[Encodings,width=706,height=622,role=focal_point]
217
+
218
+ 1. link:https://www.alchemists.io/public/aflred/workflows/ruby.alfredworkflow[Download] (right click).
219
+ 1. Type `encodings` to activate.
220
+
221
+ 💡 Use `ENTER` to copy label and `OPTION` to copy aliases to clipboard.
222
+
223
+ ==== HTTP Statuses
224
+
225
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/http_statuses.png[HTTP Statuses,width=706,height=622,role=focal_point]
226
+
227
+ 1. link:https://www.alchemists.io/public/aflred/workflows/ruby.alfredworkflow[Download] (right click).
228
+ 1. Type `https` to activate.
229
+
230
+ 💡 Use `ENTER` to copy symbol, `CONTROL` to copy code, `OPTION` to copy label, and `COMMAND` to view
231
+ documentation.
232
+
233
+ ==== Rubocop
234
+
235
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/rubocop-projects.png[Rubocop Projects,width=706,height=622,role=focal_point]
236
+
237
+ 1. link:https://www.alchemists.io/public/aflred/workflows/rubocop.alfredworkflow[Download] (right
238
+ click).
239
+ 1. Type `cop` to activate.
240
+
241
+ 💡 Use `ENTER` to view site, `CONTROL` to view changes, `OPTION` to view source, and `COMMAND` to
242
+ view issues.
243
+
244
+ ==== System Errors
245
+
246
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/system_errors.png[System Errors,width=706,height=622,role=focal_point]
247
+
248
+ 1. link:https://www.alchemists.io/public/aflred/workflows/ruby.alfredworkflow[Download] (right click).
249
+ 1. Type `syserr` to activate.
250
+
251
+ 💡 Use `ENTER` to copy constant/class, `CONTROL` to copy ID, `OPTION` to copy description, and
252
+ `COMMAND` to copy ID, name, and description.
253
+
254
+ ==== System Signals
255
+
256
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/system_signals.png[System Signals,width=706,height=622,role=focal_point]
257
+
258
+ 1. link:https://www.alchemists.io/public/aflred/workflows/ruby.alfredworkflow[Download] (right
259
+ click).
260
+ 1. Type `signals` to activate.
261
+
262
+ 💡 Use `ENTER` to copy name, `OPTION` to copy ID, and `COMMAND` to copy ID and name.
263
+
264
+ ==== Text
265
+
266
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/alfred/text.png[Text,width=706,height=622,role=focal_point]
267
+
268
+ 1. link:https://www.alchemists.io/public/aflred/workflows/ruby.alfredworkflow[Download] (right
269
+ click).
270
+ 1. Type `text` plus your text to transform to activate.
271
+
272
+ 💡 Use `ENTER` to copy text to clipboard.
273
+
95
274
  == Development
96
275
 
97
276
  To contribute, run:
data/bin/pennyworth CHANGED
@@ -2,8 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "pennyworth"
5
- require "pennyworth/cli"
6
- require "pennyworth/identity"
7
5
 
8
6
  Process.setproctitle Pennyworth::Identity::VERSION_LABEL
9
- Pennyworth::CLI.start
7
+ Pennyworth::CLI::Shell.new.call ARGV
data/lib/pennyworth.rb CHANGED
@@ -1,4 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pennyworth/identity"
4
- require "pennyworth/cli"
3
+ require "zeitwerk"
4
+
5
+ loader = Zeitwerk::Loader.for_gem
6
+ loader.inflector.inflect "cli" => "CLI",
7
+ "http_status" => "HTTPStatus",
8
+ "http_statuses" => "HTTPStatuses"
9
+ loader.setup
10
+
11
+ # Main namespace.
12
+ module Pennyworth
13
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pennyworth
4
+ module CLI
5
+ module Actions
6
+ # Handles the configuration action.
7
+ class Config
8
+ def initialize configuration: Configuration::Loader::HANDLER, container: Container
9
+ @configuration = configuration
10
+ @container = container
11
+ end
12
+
13
+ def call action
14
+ case action
15
+ when :edit then edit
16
+ when :view then view
17
+ else logger.error { "Invalid configuration action: #{action}." }
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :configuration, :container
24
+
25
+ def edit = kernel.system("$EDITOR #{configuration.current}")
26
+
27
+ def view = kernel.system("cat #{configuration.current}")
28
+
29
+ def kernel = container[__method__]
30
+
31
+ def logger = container[__method__]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pennyworth
4
+ module CLI
5
+ module Actions
6
+ # Handles the encodings action.
7
+ class Encodings
8
+ def initialize processor: Processor.for_encodings, container: Container
9
+ @processor = processor
10
+ @container = container
11
+ end
12
+
13
+ def call = processor.call.to_json.then { |json| logger.info json }
14
+
15
+ private
16
+
17
+ attr_reader :processor, :container
18
+
19
+ def logger = container[__method__]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pennyworth
4
+ module CLI
5
+ module Actions
6
+ # Handles the GitHub action.
7
+ class GitHub
8
+ def initialize processor: Processor.for_projects, container: Container
9
+ @processor = processor
10
+ @container = container
11
+ end
12
+
13
+ def call endpoint
14
+ processor.call(endpoint)
15
+ .to_json
16
+ .then { |json| logger.info json }
17
+ end
18
+
19
+ private
20
+
21
+ attr_reader :processor, :container
22
+
23
+ def logger = container[__method__]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pennyworth
4
+ module CLI
5
+ module Actions
6
+ # Handles the HTTP statuses action.
7
+ class HTTPStatuses
8
+ def initialize processor: Processor.for_http_statuses, container: Container
9
+ @processor = processor
10
+ @container = container
11
+ end
12
+
13
+ def call = processor.call.to_json.then { |json| logger.info json }
14
+
15
+ private
16
+
17
+ attr_reader :processor, :container
18
+
19
+ def logger = container[__method__]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pennyworth
4
+ module CLI
5
+ module Actions
6
+ # Handles the RubyGems action.
7
+ class RubyGems
8
+ def initialize processor: Processor.for_gems, container: Container
9
+ @processor = processor
10
+ @container = container
11
+ end
12
+
13
+ def call endpoint
14
+ processor.call(endpoint)
15
+ .to_json
16
+ .then { |json| logger.info json }
17
+ end
18
+
19
+ private
20
+
21
+ attr_reader :processor, :container
22
+
23
+ def logger = container[__method__]
24
+ end
25
+ end
26
+ end
27
+ end