Class: Rake::GemMaintenance::ApiKeyRenewer

Inherits:
Object
  • Object
show all
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

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