lib/hackmac/oc_validator.rb



module Hackmac
  include Hackmac::AssetTools

  class OCValidator
    def initialize(mdev:, config:)
      @config = config
      mount_path   = Pathname.new('/Volumes').join(mdev)
      @config_plist =
        Pathname.new(mount_path).join(@config.oc.efi_path).join('OC/config.plist')
    end

    def perform
      isolate do |dir|
        oc = OC.new(config: @config)
        name, data = oc.remote.download_asset
        if name
          File.secure_write(name, data)
          decompress(name)
          result = %x(Utilities/ocvalidate/ocvalidate #{@config_plist.to_s.inspect} 2>&1)
          if $?.success?
            STDERR.puts result
            true
          else
            STDERR.puts "Validation has failed!", "", result
            false
          end
          true
        else
          fail "#{oc} could not be downloaded"
        end
      end
    end
  end
end