class GoogleSslCert::CLI::Prune

Public Instance Methods

base_options() click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 75
def base_options
  options = { project: ENV['GOOGLE_PROJECT'] }
  options[:region] = ENV['GOOGLE_REGION'] unless global?
  options
end
cert_base_name() click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 63
def cert_base_name
  @cert_base_name = GoogleSslCert::Name.new(@options).base_name
end
delete(cert) click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 41
def delete(cert)
  options = base_options.merge(ssl_certificate: cert.name)
  ssl_service.delete(options)
  logger.info "Deleted #{type} cert: #{cert.name}"
end
match?(name) click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 59
def match?(name)
  !!(name =~ Regexp.new("^#{cert_base_name}-\\d{14}$"))
end
perform_delete(certs) click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 35
def perform_delete(certs)
  certs.each do |cert|
    delete(cert)
  end
end
preview_delete(certs) click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 28
def preview_delete(certs)
  logger.info "Will delete the following #{type} certs:"
  certs.each do |cert|
    logger.info "  #{cert.name}"
  end
end
run() click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 5
def run
  keep = @options[:keep] || 1
  right = -1 - keep
  certs = ssl_certs[0..right] || [] # delete all except the last cert

  if certs.empty?
    unless ssl_certs.empty?
      logger.info "Found certs:"
      ssl_certs.each do |cert|
        logger.info "  #{cert.name}"
      end
    end
    cert_word = keep == 1 ? "cert" : "certs"
    logger.info "Keeping #{keep} #{cert_word}."
    logger.info "No certs to prune with base cert name: #{cert_base_name}"
    return
  end

  preview_delete(certs) unless @options[:yes]
  sure?
  perform_delete(certs)
end
ssl_certs() click to toggle source

sadly the filter option doesnt support globs or regexp so will have to filter with ruby

# File lib/google_ssl_cert/cli/prune.rb, line 52
def ssl_certs
  resp = ssl_service.list(base_options)
  resp.select do |ssl|
    match?(ssl.name)
  end.sort_by(&:name)
end
ssl_service() click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 67
def ssl_service
  if global?
    ssl_certificates
  else
    region_ssl_certificates
  end
end
type() click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 47
def type
  global? ? "global" : "region"
end

Private Instance Methods

sure?(message="Are you sure?") click to toggle source
# File lib/google_ssl_cert/cli/prune.rb, line 82
def sure?(message="Are you sure?")
  if @options[:yes]
    sure = 'y'
  else
    print "#{message} (y/N) "
    sure = $stdin.gets
  end

  unless sure =~ /^y/
    puts "Whew! Exiting."
    exit 0
  end
end