38 lines
		
	
	
		
			991 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			991 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: false
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| # A requirement on a code-signing identity.
 | |
| #
 | |
| # @api private
 | |
| class CodesignRequirement < Requirement
 | |
|   extend T::Sig
 | |
| 
 | |
|   fatal true
 | |
| 
 | |
|   def initialize(tags)
 | |
|     options = tags.shift
 | |
|     raise ArgumentError("CodesignRequirement requires an options Hash!") unless options.is_a?(Hash)
 | |
|     raise ArgumentError("CodesignRequirement requires an identity key!") unless options.key?(:identity)
 | |
| 
 | |
|     @identity = options.fetch(:identity)
 | |
|     @with = options.fetch(:with, "code signing")
 | |
|     @url = options.fetch(:url, nil)
 | |
|     super(tags)
 | |
|   end
 | |
| 
 | |
|   satisfy(build_env: false) do
 | |
|     mktemp do
 | |
|       FileUtils.cp "/usr/bin/false", "codesign_check"
 | |
|       quiet_system "/usr/bin/codesign", "-f", "-s", @identity,
 | |
|                    "--dryrun", "codesign_check"
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   sig { returns(String) }
 | |
|   def message
 | |
|     message = "#{@identity} identity must be available to build with #{@with}"
 | |
|     message += ":\n#{@url}" if @url.present?
 | |
|     message
 | |
|   end
 | |
| end
 | 
