pennyworth 12.3.1 → 13.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cae776956dd514ba39f58c667abb64ff02ea6d85db52ec8b9bd016b0b0ca903
4
- data.tar.gz: e626fe84e3bdbcd5ec99601e88d09aaa53675191c34bf7b2bdc999952d78c5ce
3
+ metadata.gz: c24c98e02da39dee6f713ef1b1253734352d176af5ee399ec430ab4b40ee24bb
4
+ data.tar.gz: 816ed741049d3923a606eebb7400c54d706d7a4a8dc77a79ca1681e4025611ba
5
5
  SHA512:
6
- metadata.gz: 4ddbfa3d108320b29e6f79d900ccbe099d86413e8e41e116795e6e59daf4677ab631f69f8fa705e28d0adec5945e29278e760f80841234a3281690b1a7b69aee
7
- data.tar.gz: 3d8039b0587e30e3a57d9a6f3142df55e9aa4f9ce4bcddab6c06c20db28473152b10e53a741616306958a3591380950d510510378c8e44aef58cdf5765764506
6
+ metadata.gz: 9ec4dd5f71c8070a688b9f8cbe6014cd1e5541ab62a0a0238df07387ce09da2f197d028ec567cf17900cfc38b72d23b26898125f82a9c11884f40f053058681a
7
+ data.tar.gz: 1511e46c67c7e757f64bc8618753dd54a1971aa4f7af3d598eea32b74947fb06c9166d78408c426389be355c64980b82dc952e4a4ef0cba85e7820f394a7300d
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -438,7 +438,7 @@ launched.
438
438
 
439
439
  ===== Browsers
440
440
 
441
- image:https://www.alchemists.io/images/projects/pennyworth/screenshots/browsers.png[Browsers workflow screenshot.,width=706,height=470,role=focal_point]
441
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/browsers.png[Browsers workflow screenshot.,width=706,height=308,role=focal_point]
442
442
 
443
443
  Provides browser related utilities.
444
444
 
@@ -456,6 +456,27 @@ Provides quick access to link:https://bundler.io[Bundler] related resources.
456
456
  double click to install.
457
457
  2. Type `bundler` to activate.
458
458
 
459
+ ===== Crystal
460
+
461
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/crystal.png[Crystal workflow screenshot.,width=706,height=362,role=focal_point]
462
+
463
+ A link:https://crystal-lang.org[Crystal] workflow for quick access to Crystal resources.
464
+
465
+ 1. link:https://www.alchemists.io/public/alfred/workflows/crystal.alfredworkflow[Download] and
466
+ double click to install.
467
+ 2. Type `crystal` to view general information, arrow keys to navigate, and `ENTER` to view
468
+ information.
469
+
470
+ ===== CSS
471
+
472
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/css.png[CSS workflow screenshot.,width=706,height=470,role=focal_point]
473
+
474
+ A link:https://www.w3.org/Style/CSS/specs.en.html[CSS] workflow for quick access to CSS resources.
475
+
476
+ 1. link:https://www.alchemists.io/public/alfred/workflows/css.alfredworkflow[Download] and double
477
+ click to install.
478
+ 2. Type `cx` to view general information, arrow keys to navigate, and `ENTER` to view information.
479
+
459
480
  ===== Elm
460
481
 
461
482
  image:https://www.alchemists.io/images/projects/pennyworth/screenshots/elm.png[Elm workflow screenshot.,width=706,height=470,role=focal_point]
@@ -466,6 +487,16 @@ A link:https://elm-lang.org[Elm] workflow for quick access to Elm resources.
466
487
  click to install.
467
488
  2. Type `elm` to view general information, arrow keys to navigate, and `ENTER` to view information.
468
489
 
490
+ ===== GitHub
491
+
492
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/github.png[GitHub workflow screenshot.,width=706,height=632,role=focal_point]
493
+
494
+ Provides link:https://github.com[GitHub] resources.
495
+
496
+ 1. link:https://www.alchemists.io/public/alfred/workflows/github.alfredworkflow[Download] and
497
+ double click to install.
498
+ 2. Type `gh` to activate and then fuzzy type to filter.
499
+
469
500
  ===== Hanami
470
501
 
471
502
  image:https://www.alchemists.io/images/projects/pennyworth/screenshots/hanami.png[Hanami workflow screenshot.,width=706,height=632,role=focal_point]
@@ -488,7 +519,7 @@ Shortens URLs using link:https://chl.li[chl.li].
488
519
 
489
520
  ===== Docker
490
521
 
491
- image:https://www.alchemists.io/images/projects/pennyworth/screenshots/docker.png[Docker workflow screenshot.,width=706,height=524,role=focal_point]
522
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/docker.png[Docker workflow screenshot.,width=706,height=470,role=focal_point]
492
523
 
493
524
  Provides link:https://www.docker.com[Docker] resources.
494
525
 
@@ -504,6 +535,17 @@ Provides macOS utilities.
504
535
  double click to install.
505
536
  2. Open the workflow to see all available keywords.
506
537
 
538
+ ===== RSpec
539
+
540
+ image:https://www.alchemists.io/images/projects/pennyworth/screenshots/rspec.png[RSpec workflow screenshot.,width=706,height=362,role=focal_point]
541
+
542
+ A link:https://rspec.info[RSpec] workflow for quick access to RSpec resources.
543
+
544
+ 1. link:https://www.alchemists.io/public/alfred/workflows/rspec.alfredworkflow[Download] and double
545
+ click to install.
546
+ 2. Type `rspec` to view general information, arrow keys to navigate, and `ENTER` to view
547
+ information.
548
+
507
549
  ===== Terraform
508
550
 
509
551
  image:https://www.alchemists.io/images/projects/pennyworth/screenshots/terraform.png[Terraform workflow screenshot.,width=706,height=632,role=focal_point]
@@ -5,9 +5,11 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the configuration action.
7
7
  class Config
8
- def initialize configuration: Configuration::Loader::CLIENT, container: Container
8
+ include Pennyworth::Import[:kernel, :logger]
9
+
10
+ def initialize configuration: Configuration::Loader::CLIENT, **dependencies
11
+ super(**dependencies)
9
12
  @configuration = configuration
10
- @container = container
11
13
  end
12
14
 
13
15
  def call action
@@ -20,15 +22,11 @@ module Pennyworth
20
22
 
21
23
  private
22
24
 
23
- attr_reader :configuration, :container
25
+ attr_reader :configuration
24
26
 
25
27
  def edit = kernel.system("$EDITOR #{configuration.current}")
26
28
 
27
29
  def view = kernel.system("cat #{configuration.current}")
28
-
29
- def kernel = container[__method__]
30
-
31
- def logger = container[__method__]
32
30
  end
33
31
  end
34
32
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/container"
4
+
5
+ module Pennyworth
6
+ module CLI
7
+ module Actions
8
+ # Provides a single container with application and action specific dependencies.
9
+ module Container
10
+ extend Dry::Container::Mixin
11
+
12
+ config.registry = ->(container, key, value, _options) { container[key.to_s] = value }
13
+
14
+ merge Pennyworth::Container
15
+
16
+ register(:config) { Config.new }
17
+ register(:encodings) { Encodings.new }
18
+ register(:git_hub) { GitHub.new }
19
+ register(:http_statuses) { HTTPStatuses.new }
20
+ register(:ruby_gems) { RubyGems.new }
21
+ register(:system_errors) { System::Errors.new }
22
+ register(:system_signals) { System::Signals.new }
23
+ register(:text) { Text.new }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,18 +5,18 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the encodings action.
7
7
  class Encodings
8
- def initialize processor: Processor.for_encodings, container: Container
8
+ include Pennyworth::Import[:logger]
9
+
10
+ def initialize processor: Processor.for_encodings, **dependencies
11
+ super(**dependencies)
9
12
  @processor = processor
10
- @container = container
11
13
  end
12
14
 
13
15
  def call = processor.call.to_json.then { |json| logger.info { json } }
14
16
 
15
17
  private
16
18
 
17
- attr_reader :processor, :container
18
-
19
- def logger = container[__method__]
19
+ attr_reader :processor
20
20
  end
21
21
  end
22
22
  end
@@ -5,9 +5,11 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the GitHub action.
7
7
  class GitHub
8
- def initialize processor: Processor.for_projects, container: Container
8
+ include Pennyworth::Import[:logger]
9
+
10
+ def initialize processor: Processor.for_projects, **dependencies
11
+ super(**dependencies)
9
12
  @processor = processor
10
- @container = container
11
13
  end
12
14
 
13
15
  def call endpoint
@@ -18,9 +20,7 @@ module Pennyworth
18
20
 
19
21
  private
20
22
 
21
- attr_reader :processor, :container
22
-
23
- def logger = container[__method__]
23
+ attr_reader :processor
24
24
  end
25
25
  end
26
26
  end
@@ -5,18 +5,18 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the HTTP statuses action.
7
7
  class HTTPStatuses
8
- def initialize processor: Processor.for_http_statuses, container: Container
8
+ include Pennyworth::Import[:logger]
9
+
10
+ def initialize processor: Processor.for_http_statuses, **dependencies
11
+ super(**dependencies)
9
12
  @processor = processor
10
- @container = container
11
13
  end
12
14
 
13
15
  def call = processor.call.to_json.then { |json| logger.info { json } }
14
16
 
15
17
  private
16
18
 
17
- attr_reader :processor, :container
18
-
19
- def logger = container[__method__]
19
+ attr_reader :processor
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "auto_injector"
4
+
5
+ module Pennyworth
6
+ module CLI
7
+ module Actions
8
+ Import = AutoInjector[Container]
9
+ end
10
+ end
11
+ end
@@ -5,9 +5,11 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the RubyGems action.
7
7
  class RubyGems
8
- def initialize processor: Processor.for_gems, container: Container
8
+ include Pennyworth::Import[:logger]
9
+
10
+ def initialize processor: Processor.for_gems, **dependencies
11
+ super(**dependencies)
9
12
  @processor = processor
10
- @container = container
11
13
  end
12
14
 
13
15
  def call endpoint
@@ -18,9 +20,7 @@ module Pennyworth
18
20
 
19
21
  private
20
22
 
21
- attr_reader :processor, :container
22
-
23
- def logger = container[__method__]
23
+ attr_reader :processor
24
24
  end
25
25
  end
26
26
  end
@@ -6,18 +6,18 @@ module Pennyworth
6
6
  module System
7
7
  # Handles the system errors action.
8
8
  class Errors
9
- def initialize processor: Processor.for_system_errors, container: Container
9
+ include Pennyworth::Import[:logger]
10
+
11
+ def initialize processor: Processor.for_system_errors, **dependencies
12
+ super(**dependencies)
10
13
  @processor = processor
11
- @container = container
12
14
  end
13
15
 
14
16
  def call = processor.call.to_json.then { |json| logger.info { json } }
15
17
 
16
18
  private
17
19
 
18
- attr_reader :processor, :container
19
-
20
- def logger = container[__method__]
20
+ attr_reader :processor
21
21
  end
22
22
  end
23
23
  end
@@ -6,18 +6,18 @@ module Pennyworth
6
6
  module System
7
7
  # Handles the signal action.
8
8
  class Signals
9
- def initialize processor: Processor.for_system_signals, container: Container
9
+ include Pennyworth::Import[:logger]
10
+
11
+ def initialize processor: Processor.for_system_signals, **dependencies
12
+ super(**dependencies)
10
13
  @processor = processor
11
- @container = container
12
14
  end
13
15
 
14
16
  def call = processor.call.to_json.then { |json| logger.info { json } }
15
17
 
16
18
  private
17
19
 
18
- attr_reader :processor, :container
19
-
20
- def logger = container[__method__]
20
+ attr_reader :processor
21
21
  end
22
22
  end
23
23
  end
@@ -5,18 +5,18 @@ module Pennyworth
5
5
  module Actions
6
6
  # Handles the text action.
7
7
  class Text
8
- def initialize processor: Processor.for_text, container: Container
8
+ include Pennyworth::Import[:logger]
9
+
10
+ def initialize processor: Processor.for_text, **dependencies
11
+ super(**dependencies)
9
12
  @processor = processor
10
- @container = container
11
13
  end
12
14
 
13
15
  def call(content) = processor.call(content).to_json.then { |json| logger.info { json } }
14
16
 
15
17
  private
16
18
 
17
- attr_reader :processor, :container
18
-
19
- def logger = container[__method__]
19
+ attr_reader :processor
20
20
  end
21
21
  end
22
22
  end
@@ -9,25 +9,25 @@ module Pennyworth
9
9
  CLIENT = OptionParser.new nil, 40, " "
10
10
  SECTIONS = [Parsers::Core, Parsers::GitHub, Parsers::RubyGems].freeze # Order is important.
11
11
 
12
- def initialize configuration = Configuration::Loader.call,
12
+ def initialize configuration = Container[:configuration],
13
13
  sections: SECTIONS,
14
14
  client: CLIENT
15
- @configuration = configuration.dup
15
+ @configuration_duplicate = configuration.dup
16
16
  @sections = sections
17
17
  @client = client
18
18
  end
19
19
 
20
20
  def call arguments = []
21
- sections.each { |parser| parser.call configuration, client: }
21
+ sections.each { |parser| parser.call configuration_duplicate, client: }
22
22
  client.parse arguments
23
- configuration.freeze
23
+ configuration_duplicate.freeze
24
24
  end
25
25
 
26
26
  def to_s = client.to_s
27
27
 
28
28
  private
29
29
 
30
- attr_reader :configuration, :client, :sections
30
+ attr_reader :configuration_duplicate, :client, :sections
31
31
  end
32
32
  end
33
33
  end
@@ -10,14 +10,16 @@ module Pennyworth
10
10
 
11
11
  # Handles parsing of Command Line Interface (CLI) core options.
12
12
  class Core
13
+ include Import[:specification]
14
+
13
15
  def self.call(...) = new(...).call
14
16
 
15
- def initialize configuration = Configuration::Loader.call,
17
+ def initialize configuration = Container[:configuration],
16
18
  client: Parser::CLIENT,
17
- container: Container
19
+ **dependencies
20
+ super(**dependencies)
18
21
  @configuration = configuration
19
22
  @client = client
20
- @container = container
21
23
  end
22
24
 
23
25
  def call arguments = []
@@ -30,7 +32,7 @@ module Pennyworth
30
32
 
31
33
  private
32
34
 
33
- attr_reader :configuration, :client, :container
35
+ attr_reader :configuration, :client
34
36
 
35
37
  def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
36
38
 
@@ -98,8 +100,6 @@ module Pennyworth
98
100
  configuration.action_help = true
99
101
  end
100
102
  end
101
-
102
- def specification = container[__method__]
103
103
  end
104
104
  end
105
105
  end
@@ -11,7 +11,7 @@ module Pennyworth
11
11
 
12
12
  def self.call(...) = new(...).call
13
13
 
14
- def initialize configuration = Configuration::Loader.call, client: Parser::CLIENT
14
+ def initialize configuration = Container[:configuration], client: Parser::CLIENT
15
15
  @configuration = configuration
16
16
  @client = client
17
17
  end
@@ -7,7 +7,7 @@ module Pennyworth
7
7
  class RubyGems
8
8
  def self.call(...) = new(...).call
9
9
 
10
- def initialize configuration = Configuration::Loader.call, client: Parser::CLIENT
10
+ def initialize configuration = Container[:configuration], client: Parser::CLIENT
11
11
  @configuration = configuration
12
12
  @client = client
13
13
  end
@@ -4,21 +4,22 @@ module Pennyworth
4
4
  module CLI
5
5
  # The main Command Line Interface (CLI) object.
6
6
  class Shell
7
- ACTIONS = {
8
- config: Actions::Config.new,
9
- encodings: Actions::Encodings.new,
10
- git_hub: Actions::GitHub.new,
11
- http_statuses: Actions::HTTPStatuses.new,
12
- ruby_gems: Actions::RubyGems.new,
13
- system_errors: Actions::System::Errors.new,
14
- system_signals: Actions::System::Signals.new,
15
- text: Actions::Text.new
16
- }.freeze
17
-
18
- def initialize parser: Parser.new, actions: ACTIONS, container: Container
7
+ include Actions::Import[
8
+ :config,
9
+ :encodings,
10
+ :git_hub,
11
+ :http_statuses,
12
+ :ruby_gems,
13
+ :system_errors,
14
+ :system_signals,
15
+ :text,
16
+ :specification,
17
+ :logger
18
+ ]
19
+
20
+ def initialize parser: Parser.new, **dependencies
21
+ super(**dependencies)
19
22
  @parser = parser
20
- @actions = actions
21
- @container = container
22
23
  end
23
24
 
24
25
  def call arguments = []
@@ -29,55 +30,25 @@ module Pennyworth
29
30
 
30
31
  private
31
32
 
32
- attr_reader :parser, :actions, :container
33
+ attr_reader :parser
33
34
 
34
- # rubocop:disable Metrics/MethodLength
35
35
  def perform configuration
36
36
  case configuration
37
- in action_config: Symbol => action then config action
38
- in action_encodings: true then encodings
39
- in action_git_hub: :organization then git_hub_organization configuration
40
- in action_git_hub: :user then git_hub_user configuration
41
- in action_http_statuses: true then http_statuses
42
- in action_ruby_gems: true then ruby_gems configuration
43
- in action_system_signals: true then system_signals
44
- in action_system_errors: true then system_errors
45
- in action_text: String => content then text content
37
+ in action_config: Symbol => action then config.call action
38
+ in action_encodings: true then encodings.call
39
+ in action_git_hub: :organization
40
+ git_hub.call "orgs/#{configuration.git_hub_organization}/repos"
41
+ in action_git_hub: :user then git_hub.call "users/#{configuration.git_hub_user}/repos"
42
+ in action_http_statuses: true then http_statuses.call
43
+ in action_ruby_gems: true
44
+ ruby_gems.call "owners/#{configuration.ruby_gems_owner}/gems.json"
45
+ in action_system_signals: true then system_signals.call
46
+ in action_system_errors: true then system_errors.call
47
+ in action_text: String => content then text.call content
46
48
  in action_version: true then logger.info { specification.labeled_version }
47
- else usage
49
+ else logger.any { parser.to_s }
48
50
  end
49
51
  end
50
- # rubocop:enable Metrics/MethodLength
51
-
52
- def config(action) = actions.fetch(__method__).call(action)
53
-
54
- def encodings = actions.fetch(__method__).call
55
-
56
- def git_hub_organization configuration
57
- actions.fetch(:git_hub).call("orgs/#{configuration.git_hub_organization}/repos")
58
- end
59
-
60
- def git_hub_user configuration
61
- actions.fetch(:git_hub).call("users/#{configuration.git_hub_user}/repos")
62
- end
63
-
64
- def http_statuses = actions.fetch(__method__).call
65
-
66
- def ruby_gems configuration
67
- actions.fetch(__method__).call("owners/#{configuration.ruby_gems_owner}/gems.json")
68
- end
69
-
70
- def system_errors = actions.fetch(__method__).call
71
-
72
- def system_signals = actions.fetch(__method__).call
73
-
74
- def text(content) = actions.fetch(__method__).call(content)
75
-
76
- def usage = logger.unknown { parser.to_s }
77
-
78
- def specification = container[__method__]
79
-
80
- def logger = container[__method__]
81
52
  end
82
53
  end
83
54
  end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "dry-container"
4
- require "logger"
3
+ require "cogger"
4
+ require "dry/container"
5
5
  require "http"
6
- require "pastel"
7
6
  require "spek"
8
7
 
9
8
  module Pennyworth
@@ -16,27 +15,6 @@ module Pennyworth
16
15
  register(:environment) { ENV }
17
16
  register(:kernel) { Kernel }
18
17
  register(:http) { HTTP }
19
- register(:colorizer) { Pastel.new enabled: $stdout.tty? }
20
-
21
- register :log_colors do
22
- {
23
- "DEBUG" => self[:colorizer].white.detach,
24
- "INFO" => self[:colorizer].green.detach,
25
- "WARN" => self[:colorizer].yellow.detach,
26
- "ERROR" => self[:colorizer].red.detach,
27
- "FATAL" => self[:colorizer].white.bold.on_red.detach,
28
- "ANY" => self[:colorizer].white.bold.detach
29
- }
30
- end
31
-
32
- register :logger do
33
- Logger.new $stdout,
34
- level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
35
- formatter: (
36
- lambda do |severity, _at, _name, message|
37
- self[:log_colors][severity].call "#{message}\n"
38
- end
39
- )
40
- end
18
+ register(:logger) { Cogger::Client.new }
41
19
  end
42
20
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "auto_injector"
4
+
5
+ module Pennyworth
6
+ Import = AutoInjector[Container]
7
+ end
@@ -7,6 +7,8 @@ module Pennyworth
7
7
  module GitHub
8
8
  # Provides low-level API access to the GitHub API.
9
9
  class Client
10
+ include Import[:configuration, :http, :environment]
11
+
10
12
  using Refinements::Arrays
11
13
 
12
14
  HEADERS = {
@@ -14,9 +16,9 @@ module Pennyworth
14
16
  content_type: "Content-Type: application/json; charset=utf-8"
15
17
  }.freeze
16
18
 
17
- def initialize headers: HEADERS, container: Container
19
+ def initialize headers: HEADERS, **dependencies
20
+ super(**dependencies)
18
21
  @headers = headers
19
- @container = container
20
22
  end
21
23
 
22
24
  def get endpoint, parameters: {}
@@ -25,7 +27,7 @@ module Pennyworth
25
27
 
26
28
  private
27
29
 
28
- attr_reader :headers, :container
30
+ attr_reader :headers
29
31
 
30
32
  # :reek:FeatureEnvy
31
33
  def paginate request, records: [], page: 1
@@ -42,17 +44,13 @@ module Pennyworth
42
44
  def sole_get endpoint, parameters: {}
43
45
  http.headers(headers)
44
46
  .basic_auth(user: api_login, pass: api_token)
45
- .get("#{api_url}/#{endpoint}", params: parameters)
47
+ .get("#{configuration.git_hub_api_url}/#{endpoint}", params: parameters)
46
48
  .then { |response| Response.new response }
47
49
  end
48
50
 
49
- def http = container[__method__]
50
-
51
- def api_url = container[:configuration].git_hub_api_url
52
-
53
- def api_login = container[:environment].fetch("GITHUB_API_LOGIN")
51
+ def api_login = environment.fetch "GITHUB_API_LOGIN"
54
52
 
55
- def api_token = container[:environment].fetch("GITHUB_API_TOKEN")
53
+ def api_token = environment.fetch "GITHUB_API_TOKEN"
56
54
  end
57
55
  end
58
56
  end
@@ -5,24 +5,14 @@ module Pennyworth
5
5
  module RubyGems
6
6
  # Provides low-level API access to the RubyGems API.
7
7
  class Client
8
- def initialize container: Container
9
- @container = container
10
- end
8
+ include Import[:configuration, :http]
11
9
 
12
10
  def get endpoint
13
- http.get("#{api_url}/#{endpoint}")
11
+ http.get("#{configuration.ruby_gems_api_url}/#{endpoint}")
14
12
  .then do |response|
15
13
  response.status.success? ? JSON(response.body.to_s, symbolize_names: true) : {}
16
14
  end
17
15
  end
18
-
19
- private
20
-
21
- attr_reader :container
22
-
23
- def http = container[__method__]
24
-
25
- def api_url = container[:configuration].ruby_gems_api_url
26
16
  end
27
17
  end
28
18
  end
@@ -6,12 +6,14 @@ module Pennyworth
6
6
  module Loaders
7
7
  # Loads an array of HTTP status records.
8
8
  class HTTPStatuses
9
+ include Import[:configuration]
10
+
9
11
  def initialize codes: Rack::Utils::HTTP_STATUS_CODES,
10
12
  model: Models::HTTPStatus,
11
- configuration: Configuration::Loader.call
13
+ **dependencies
14
+ super(**dependencies)
12
15
  @codes = codes
13
16
  @model = model
14
- @configuration = configuration
15
17
  end
16
18
 
17
19
  def call _omit = nil
@@ -20,7 +22,7 @@ module Pennyworth
20
22
 
21
23
  private
22
24
 
23
- attr_reader :codes, :model, :configuration
25
+ attr_reader :codes, :model
24
26
 
25
27
  def url = configuration.http_statuses_url
26
28
  end
data/pennyworth.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "pennyworth"
5
- spec.version = "12.3.1"
5
+ spec.version = "13.1.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://www.alchemists.io/projects/pennyworth"
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  "bug_tracker_uri" => "https://github.com/bkuhlmann/pennyworth/issues",
14
14
  "changelog_uri" => "https://www.alchemists.io/projects/pennyworth/versions",
15
15
  "documentation_uri" => "https://www.alchemists.io/projects/pennyworth",
16
+ "funding_uri" => "https://github.com/sponsors/bkuhlmann",
16
17
  "label" => "Pennyworth",
17
18
  "rubygems_mfa_required" => "true",
18
19
  "source_code_uri" => "https://github.com/bkuhlmann/pennyworth"
@@ -22,13 +23,14 @@ Gem::Specification.new do |spec|
22
23
  spec.cert_chain = [Gem.default_cert_path]
23
24
 
24
25
  spec.required_ruby_version = "~> 3.1"
25
- spec.add_dependency "dry-container", "~> 0.8"
26
+ spec.add_dependency "auto_injector", "~> 0.5"
27
+ spec.add_dependency "cogger", "~> 0.1"
28
+ spec.add_dependency "dry-container", "~> 0.9"
26
29
  spec.add_dependency "http", "~> 5.0"
27
- spec.add_dependency "pastel", "~> 0.8"
28
30
  spec.add_dependency "rack", "~> 2.2"
29
- spec.add_dependency "refinements", "~> 9.2"
30
- spec.add_dependency "runcom", "~> 8.2"
31
- spec.add_dependency "spek", "~> 0.2"
31
+ spec.add_dependency "refinements", "~> 9.4"
32
+ spec.add_dependency "runcom", "~> 8.4"
33
+ spec.add_dependency "spek", "~> 0.3"
32
34
  spec.add_dependency "zeitwerk", "~> 2.5"
33
35
 
34
36
  spec.bindir = "exe"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pennyworth
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.3.1
4
+ version: 13.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -10,9 +10,9 @@ bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIC/jCCAeagAwIBAgIBBDANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpicm9v
14
- a2UvREM9YWxjaGVtaXN0cy9EQz1pbzAeFw0yMTAzMTkxMjQ4MDZaFw0yMjAzMTkx
15
- MjQ4MDZaMCUxIzAhBgNVBAMMGmJyb29rZS9EQz1hbGNoZW1pc3RzL0RDPWlvMIIB
13
+ MIIC/jCCAeagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpicm9v
14
+ a2UvREM9YWxjaGVtaXN0cy9EQz1pbzAeFw0yMjAzMTkxNzI0MzJaFw0yMzAzMTkx
15
+ NzI0MzJaMCUxIzAhBgNVBAMMGmJyb29rZS9EQz1hbGNoZW1pc3RzL0RDPWlvMIIB
16
16
  IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6l1qpXTiomH1RfMRloyw7MiE
17
17
  xyVx/x8Yc3EupdH7uhNaTXQGyORN6aOY//1QXXMHIZ9tW74nZLhesWMSUMYy0XhB
18
18
  brs+KkurHnc9FnEJAbG7ebGvl/ncqZt72nQvaxpDxvuCBHgJAz+8i5wl6FhLw+oT
@@ -20,58 +20,72 @@ cert_chain:
20
20
  D5vkU0YlAm1r98BymuJlcQ1qdkVEI1d48ph4kcS0S0nv1RiuyVb6TCAR3Nu3VaVq
21
21
  3fPzZKJLZBx67UvXdbdicWPiUR75elI4PXpLIic3xytaF52ZJYyKZCNZJhNwfQID
22
22
  AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU0nzow9vc
23
- 2CdikiiE3fJhP/gY4ggwDQYJKoZIhvcNAQELBQADggEBAEjpaOXHHp8s/7GL2qCb
24
- YAs7urOLv9VHSPfQWAwaTMVnSsIf3Sw4xzISOP/mmfEPBPXtz61K5esrE/uTFtgb
25
- FyjxQk2H0sEWgrRXGGNHBWQRhhEs7LP/TByoC15A0br++xLxRz4r7HBLGAWQQDpg
26
- 66BJ2TBVjxS6K64tKbq7+ACyrOZGgTfNHACh4M076y0x0oRf/rwBrU39/KRfuhbb
27
- cm+nNCEtO35gTmZ2bVDHLGvWazi3gJt6+huQjfXTCUUG2YYBxwhu+GPdAGQPxpf9
28
- lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
29
- W2A=
23
+ 2CdikiiE3fJhP/gY4ggwDQYJKoZIhvcNAQELBQADggEBAJbbNyWzFjqUNVPPCUCo
24
+ IMrhDa9xf1xkORXNYYbmXgoxRy/KyNbUr+jgEEoWJAm9GXlcqxxWAUI6pK/i4/Qi
25
+ X6rPFEFmeObDOHNvuqy8Hd6AYsu+kP94U/KJhe9wnWGMmGoNKJNU3EkW3jM/osSl
26
+ +JRxiH5t4WtnDiVyoYl5nYC02rYdjJkG6VMxDymXTqn7u6HhYgZkGujq1UPar8x2
27
+ hNIWJblDKKSu7hA2d6+kUthuYo13o1sg1Da/AEDg0hoZSUvhqDEF5Hy232qb3pDt
28
+ CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
+ RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-03-04 00:00:00.000000000 Z
31
+ date: 2022-05-07 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
- name: dry-container
34
+ name: auto_injector
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.8'
39
+ version: '0.5'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.8'
46
+ version: '0.5'
47
47
  - !ruby/object:Gem::Dependency
48
- name: http
48
+ name: cogger
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '5.0'
53
+ version: '0.1'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '5.0'
60
+ version: '0.1'
61
61
  - !ruby/object:Gem::Dependency
62
- name: pastel
62
+ name: dry-container
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.8'
67
+ version: '0.9'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.8'
74
+ version: '0.9'
75
+ - !ruby/object:Gem::Dependency
76
+ name: http
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '5.0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '5.0'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: rack
77
91
  requirement: !ruby/object:Gem::Requirement
@@ -92,42 +106,42 @@ dependencies:
92
106
  requirements:
93
107
  - - "~>"
94
108
  - !ruby/object:Gem::Version
95
- version: '9.2'
109
+ version: '9.4'
96
110
  type: :runtime
97
111
  prerelease: false
98
112
  version_requirements: !ruby/object:Gem::Requirement
99
113
  requirements:
100
114
  - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: '9.2'
116
+ version: '9.4'
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: runcom
105
119
  requirement: !ruby/object:Gem::Requirement
106
120
  requirements:
107
121
  - - "~>"
108
122
  - !ruby/object:Gem::Version
109
- version: '8.2'
123
+ version: '8.4'
110
124
  type: :runtime
111
125
  prerelease: false
112
126
  version_requirements: !ruby/object:Gem::Requirement
113
127
  requirements:
114
128
  - - "~>"
115
129
  - !ruby/object:Gem::Version
116
- version: '8.2'
130
+ version: '8.4'
117
131
  - !ruby/object:Gem::Dependency
118
132
  name: spek
119
133
  requirement: !ruby/object:Gem::Requirement
120
134
  requirements:
121
135
  - - "~>"
122
136
  - !ruby/object:Gem::Version
123
- version: '0.2'
137
+ version: '0.3'
124
138
  type: :runtime
125
139
  prerelease: false
126
140
  version_requirements: !ruby/object:Gem::Requirement
127
141
  requirements:
128
142
  - - "~>"
129
143
  - !ruby/object:Gem::Version
130
- version: '0.2'
144
+ version: '0.3'
131
145
  - !ruby/object:Gem::Dependency
132
146
  name: zeitwerk
133
147
  requirement: !ruby/object:Gem::Requirement
@@ -157,9 +171,11 @@ files:
157
171
  - exe/pennyworth
158
172
  - lib/pennyworth.rb
159
173
  - lib/pennyworth/cli/actions/config.rb
174
+ - lib/pennyworth/cli/actions/container.rb
160
175
  - lib/pennyworth/cli/actions/encodings.rb
161
176
  - lib/pennyworth/cli/actions/git_hub.rb
162
177
  - lib/pennyworth/cli/actions/http_statuses.rb
178
+ - lib/pennyworth/cli/actions/import.rb
163
179
  - lib/pennyworth/cli/actions/ruby_gems.rb
164
180
  - lib/pennyworth/cli/actions/system/errors.rb
165
181
  - lib/pennyworth/cli/actions/system/signals.rb
@@ -173,6 +189,7 @@ files:
173
189
  - lib/pennyworth/configuration/defaults.yml
174
190
  - lib/pennyworth/configuration/loader.rb
175
191
  - lib/pennyworth/container.rb
192
+ - lib/pennyworth/import.rb
176
193
  - lib/pennyworth/inflector.rb
177
194
  - lib/pennyworth/integrations/git_hub/client.rb
178
195
  - lib/pennyworth/integrations/git_hub/response.rb
@@ -210,6 +227,7 @@ metadata:
210
227
  bug_tracker_uri: https://github.com/bkuhlmann/pennyworth/issues
211
228
  changelog_uri: https://www.alchemists.io/projects/pennyworth/versions
212
229
  documentation_uri: https://www.alchemists.io/projects/pennyworth
230
+ funding_uri: https://github.com/sponsors/bkuhlmann
213
231
  label: Pennyworth
214
232
  rubygems_mfa_required: 'true'
215
233
  source_code_uri: https://github.com/bkuhlmann/pennyworth
@@ -228,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
246
  - !ruby/object:Gem::Version
229
247
  version: '0'
230
248
  requirements: []
231
- rubygems_version: 3.3.8
249
+ rubygems_version: 3.3.13
232
250
  signing_key:
233
251
  specification_version: 4
234
252
  summary: A command line interface that augments Alfred workflows.
metadata.gz.sig CHANGED
@@ -1,3 +1 @@
1
- ��sQ.\h����C|f
2
- (�%M`
3
- ��FX0e2`�����jp����9�S�=�Ǟ���8�]\u��c�t]0V l;B�v��@8U
1
+ >����-Ԛ��[!�{�)Ά���v�L����_5��U�S}@�KY�W(���dy�E�5QVK��������٨���+M,ɉ���խ��;�q2� iP������$�-��ER��^*��1�X|�6�@�F����\�o�j�����#RR���Z�Gj�0Q����^�yN��ܓ��蝤����9s���IڌZ�\��*5�X/���|h?� K i�ܒx����Dsb��~/�&j׍��-��