Class: Rake::GemMaintenance::ApiKeyRenewer
- Inherits:
-
Object
- Object
- Rake::GemMaintenance::ApiKeyRenewer
- Defined in:
- lib/rake/gem/maintenance/api_key_renewer.rb
Overview
Renews a rubygems.org API key using credentials from env vars and persists the new key to Woodpecker CI when server details are available.
Instance Method Summary collapse
-
#initialize(otp_provider:, username_env_var: "RUBYGEMS_USERNAME", password_env_var: "RUBYGEMS_PASSWORD") ⇒ ApiKeyRenewer
constructor
A new instance of ApiKeyRenewer.
- #renew(repository) ⇒ Object
Constructor Details
#initialize(otp_provider:, username_env_var: "RUBYGEMS_USERNAME", password_env_var: "RUBYGEMS_PASSWORD") ⇒ ApiKeyRenewer
Returns a new instance of ApiKeyRenewer.
8 9 10 11 12 13 14 |
# File 'lib/rake/gem/maintenance/api_key_renewer.rb', line 8 def initialize(otp_provider:, username_env_var: "RUBYGEMS_USERNAME", password_env_var: "RUBYGEMS_PASSWORD") @otp_provider = otp_provider @username_env_var = username_env_var @password_env_var = password_env_var end |
Instance Method Details
#renew(repository) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rake/gem/maintenance/api_key_renewer.rb', line 16 def renew(repository) username = env_credential(@username_env_var) password = env_credential(@password_env_var) return nil if username.nil? || password.nil? otp = @otp_provider.otp_for(repository[:name], otp_seed_env_var: repository[:otp_seed_env_var]) new_key = RubyGemsApiKeyCreator.new(host: repository.fetch(:url, "https://rubygems.org")) .create(username, password, otp: otp) persist_to_woodpecker(new_key) new_key rescue StandardError nil end |