class CocoaPodsKeys::KeyringLiberator

Public Class Methods

ci?() click to toggle source
# File lib/keyring_liberator.rb, line 71
def self.ci?
  %w([JENKINS_HOME TRAVIS CIRCLECI CI TEAMCITY_VERSION GO_PIPELINE_NAME bamboo_buildKey GITLAB_CI XCS]).each do |current|
    return true if ENV.key?(current)
  end
  false
end
get_all_keyrings() click to toggle source
# File lib/keyring_liberator.rb, line 56
def self.get_all_keyrings
  return [] unless keys_dir.directory?
  rings = []
  Pathname.glob(keys_dir + '*.yml').each do |path|
    rings << get_keyring_at_path(path)
  end
  rings
end
get_all_keyrings_named(name) click to toggle source
# File lib/keyring_liberator.rb, line 32
def self.get_all_keyrings_named(name)
  get_all_keyrings.find_all { |k| k.name == name }
end
get_current_keyring(name, cwd) click to toggle source
# File lib/keyring_liberator.rb, line 27
def self.get_current_keyring(name, cwd)
  found_by_name = name && get_all_keyrings.find { |k| k.name == name && k.path == cwd.to_s }
  found_by_name || KeyringLiberator.get_keyring(cwd)
end
get_keyring(path) click to toggle source
# File lib/keyring_liberator.rb, line 19
def self.get_keyring(path)
  get_keyring_at_path(yaml_path_for_path(path))
end
get_keyring_named(name) click to toggle source
# File lib/keyring_liberator.rb, line 23
def self.get_keyring_named(name)
  get_all_keyrings.find { |k| k.name == name }
end
keys_dir() click to toggle source

Gets given a gives back a Keyring for the project by basically parsing it out of ~/.cocoapods/keys/“pathMD5”.yml

# File lib/keyring_liberator.rb, line 10
def self.keys_dir
  Pathname('~/.cocoapods/keys/').expand_path
end
prompt_if_already_existing(keyring) click to toggle source
# File lib/keyring_liberator.rb, line 36
def self.prompt_if_already_existing(keyring)
  keyrings = get_all_keyrings_named(keyring.name)
  already_exists = File.exist?(yaml_path_for_path(keyring.path))
  if !already_exists && keyrings.any? { |existing_keyring| File.exist?(yaml_path_for_path(existing_keyring.path)) }
    ui = Pod::UserInterface
    ui.puts "About to create a duplicate keyring file for project #{keyring.name.green}"
    ui.puts 'Entries in your Apple Keychain will be shared between both projects.'
    ui.puts "\nPress enter to continue, or `ctrl + c` to cancel"
    ui.gets
  end
end
save_keyring(keyring) click to toggle source
# File lib/keyring_liberator.rb, line 48
def self.save_keyring(keyring)
  keys_dir.mkpath
  unless ci?
    prompt_if_already_existing(keyring)
  end
  yaml_path_for_path(keyring.path).open('w') { |f| f.write(YAML.dump(keyring.to_hash)) }
end
yaml_path_for_path(path) click to toggle source
# File lib/keyring_liberator.rb, line 14
def self.yaml_path_for_path(path)
  sha = Digest::MD5.hexdigest(path.to_s)
  keys_dir + (sha + '.yml')
end

Private Class Methods

get_keyring_at_path(path) click to toggle source
# File lib/keyring_liberator.rb, line 65
def self.get_keyring_at_path(path)
  Keyring.from_hash(YAML.load(path.read)) if path.file?
end