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