- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "core"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "refinements/array"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "refinements/pathname"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "refinements/string"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "versionaire"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module Spek
           
        
      
        
          
- 
            
            
              
            
            
  # Enhances the default Ruby Gems specification.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class Presenter
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    using Refinements::Array
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    using Refinements::String
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    using Refinements::Pathname
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    using Versionaire::Cast
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    delegate %i[
           
        
      
        
          
- 
            
            
              
            
            
      bindir
           
        
      
        
          
- 
            
            
              
            
            
      executables
           
        
      
        
          
- 
            
            
              
            
            
      extra_rdoc_files
           
        
      
        
          
- 
            
            
              
            
            
      files
           
        
      
        
          
- 
            
            
              
            
            
      license
           
        
      
        
          
- 
            
            
              
            
            
      metadata
           
        
      
        
          
- 
            
            
              
            
            
      name
           
        
      
        
          
- 
            
            
              
            
            
      platform
           
        
      
        
          
- 
            
            
              
            
            
      require_paths
           
        
      
        
          
- 
            
            
              
            
            
      required_ruby_version
           
        
      
        
          
- 
            
            
              
            
            
      runtime_dependencies
           
        
      
        
          
- 
            
            
              
            
            
      summary
           
        
      
        
          
- 
            
            
              
            
            
    ] => :record
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def self.with_default record = nil, model: Gem::Specification
           
        
      
        
          
- 
            
              16
            
            
              
                
                  then: 14
                
              
                
                  else: 2
                
              
            
            
      record && record.is_a?(model) ? new(record) : new(model.new)
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize record
           
        
      
        
          
- 
            
              87
            
            
              
            
            
      @record = record
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def allowed_push_host = metadata.fetch "allowed_push_host", ::Gem::DEFAULT_HOST
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def allowed_push_key = metadata.fetch "allowed_push_key", "rubygems_api_key"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def authors = Array record.author
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def banner(delimiter: ": ") = [labeled_version, summary].tap(&:compress!).join delimiter
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              2
            
            
              
            
            
    def certificate_chain = Array(record.cert_chain).map { |path| Pathname path.to_s }
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def documentation_url = metadata.fetch "documentation_uri", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def emails = Array record.email
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def funding_url = metadata.fetch "funding_uri", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def homepage_url = String record.homepage
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def issues_url = metadata.fetch "bug_tracker_uri", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def label = metadata.fetch "label", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def labeled_summary(delimiter: ": ") = [label, summary].tap(&:compress!).join delimiter
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def labeled_version = [label, version].tap(&:compress!).join " "
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def named_version = [name, version].tap(&:compress!).join " "
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def package_name = %(#{[name, version].tap(&:compress!).join "-"}.gem)
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def package_path = Pathname("tmp").join package_name
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def rubygems_mfa? = metadata.fetch("rubygems_mfa_required", "false").truthy?
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def signing_key = Pathname record.signing_key.to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def source_path = Pathname record.full_gem_path
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def source_url = metadata.fetch "source_code_uri", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def version = Version record.version.to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def versions_url = metadata.fetch "changelog_uri", Core::EMPTY_STRING
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :record
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end