class XCJobs::Certificate

Attributes

keychain_name[RW]

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/xcjobs/certificate.rb, line 9
def initialize()
  @certificates = {}
  @profiles = []
  yield self if block_given?
  define
end

Public Instance Methods

add_certificate(certificate, passphrase='') click to toggle source
# File lib/xcjobs/certificate.rb, line 24
def add_certificate(certificate, passphrase='')
  @certificates[certificate] = passphrase
end
add_profile(profile) click to toggle source
# File lib/xcjobs/certificate.rb, line 28
def add_profile(profile)
  @profiles << profile
end
profile_dir() click to toggle source
# File lib/xcjobs/certificate.rb, line 20
def profile_dir
  @profile_dir || '$HOME/Library/MobileDevice/Provisioning Profiles'
end

Private Instance Methods

define() click to toggle source
# File lib/xcjobs/certificate.rb, line 34
def define
  namespace :certificates do
    desc 'install certificates'
    task :install do
      sh %[security create-keychain -p "" "#{keychain_name}"]

      @certificates.each do |certificate, passphrase|
        puts %[security import "#{certificate}" -k #{keychain_name} -P "********" -T /usr/bin/codesign]
        out, status = Open3.capture2(*(['security', 'import', "#{certificate}", '-k', "#{keychain_name}", '-P', "#{passphrase}", '-T', '/usr/bin/codesign']))
        if !status.success?
          fail'failed to import keychain'
        end
      end

      sh %[security default-keychain -s "#{keychain_name}"]
    end

    desc 'remove certificates'
    task :remove do
      sh %[security delete-keychain #{keychain_name}]
    end
  end

  namespace :profiles do
    desc 'install provisioning profiles'
    task :install do
      sh %[mkdir -p "#{profile_dir}"]

      @profiles.each do |profile|
        sh %[cp "#{profile}" "#{profile_dir}"]
      end
    end
  end
end