Sha256: aa7fd8003d793903ac95295ea40b6c93f73bcc827dca4eb55b36de163b2d46b3

Contents?: true

Size: 1.46 KB

Versions: 6

Compression:

Stored size: 1.46 KB

Contents

require 'rake/tasklib'

module XCJobs
  class Certificate < Rake::TaskLib
    include Rake::DSL if defined?(Rake::DSL)

    attr_accessor :keychain_name

    def initialize()
      @certificates = {}
      @profiles = []
      yield self if block_given?
      define
    end

    def keychain_name
      @keychain_name || 'build.keychain'
    end

    def profile_dir
      @profile_dir || '$HOME/Library/MobileDevice/Provisioning Profiles'
    end

    def add_certificate(certificate, passphrase='')
      @certificates[certificate] = passphrase
    end

    def add_profile(profile)
      @profiles << profile
    end

    private

    def define
      namespace :certificates do
        desc 'install certificates'
        task :install do
          sh %[security create-keychain -p "" "#{keychain_name}"]

          @certificates.each do |certificate, passphrase|
            sh %[security import "#{certificate}" -k "#{keychain_name}" -P "#{passphrase}" -T /usr/bin/codesign]
          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
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xcjobs-0.0.6 lib/xcjobs/certificate.rb
xcjobs-0.0.5 lib/xcjobs/certificate.rb
xcjobs-0.0.4 lib/xcjobs/certificate.rb
xcjobs-0.0.3 lib/xcjobs/certificate.rb
xcjobs-0.0.2 lib/xcjobs/certificate.rb
xcjobs-0.0.1 lib/xcjobs/certificate.rb