class API
Public Class Methods
new(shell, config, networking, options)
click to toggle source
# File lib/api.rb, line 2 def initialize(shell, config, networking, options) @shell = shell @config = config @networking = networking @options = options @unpack_mutex = Mutex.new end
Public Instance Methods
create_and_upload_archive(carthage_dependency, framework_name, platform)
click to toggle source
@return zip archive size in Bytes
# File lib/api.rb, line 50 def create_and_upload_archive(carthage_dependency, framework_name, platform) archive = CarthageArchive.new(framework_name, platform) archive.create_archive(@shell) archive_size = archive.archive_size begin checksum = crc32(archive.archive_path) @networking.upload_framework_archive(archive.archive_path, carthage_dependency, framework_name, platform, checksum) ensure archive.delete_archive end archive_size end
download_and_unpack_archive(carthage_dependency, framework_name, platform)
click to toggle source
@return zip archive size in Bytes @raise AppError
if download or checksum validation fails
# File lib/api.rb, line 65 def download_and_unpack_archive(carthage_dependency, framework_name, platform) result = @networking.download_framework_archive(carthage_dependency, framework_name, platform) if result.nil? raise AppError.new, "Failed to download framework #{carthage_dependency} – #{framework_name} (#{platform}). Please `upload` the framework first." end archive = result[:archive] remote_checksum = result[:checksum] local_checksum = crc32(archive.archive_path) if local_checksum != remote_checksum raise AppError.new, checksum_error_message(archive.archive_path, remote_checksum, local_checksum) end archive_size = archive.archive_size begin $LOG.debug("Downloaded #{archive.archive_path}") # Can't unpack multiple archives concurrently. @unpack_mutex.synchronize do archive.unpack_archive(@shell) end ensure archive.delete_archive end archive_size end
verify_build_dir_matches_cartfile_resolved()
click to toggle source
# File lib/api.rb, line 17 def verify_build_dir_matches_cartfile_resolved errors = [] for carthage_dependency in @config.carthage_resolved_dependencies begin version_file = carthage_dependency.new_version_file carthage_dependency.verify_version_in_version_file(version_file) rescue VersionFileDoesNotExistError => e errors << OutdatedFrameworkBuildError.new( carthage_dependency.guessed_framework_basename, "-", carthage_dependency.version ) rescue OutdatedFrameworkBuildError => e errors << e end end if errors.count > 0 raise FrameworkValidationError.new(errors) end end
verify_server_version()
click to toggle source
# File lib/api.rb, line 10 def verify_server_version server_version = @networking.get_server_version unless server_version == VERSION raise ServerVersionMismatchError.new, version_mismatch_message(server_version) end end
version_file_matches_server?(carthage_dependency, version_file, platforms)
click to toggle source
# File lib/api.rb, line 38 def version_file_matches_server?(carthage_dependency, version_file, platforms) if @options[:force] false else server_version_file = @networking.download_version_file(carthage_dependency, platforms) result = version_file.same_content?(server_version_file) server_version_file.remove unless server_version_file.nil? result end end
Private Instance Methods
checksum_error_message(path, remote, local)
click to toggle source
# File lib/api.rb, line 105 def checksum_error_message(path, remote, local) <<~EOS Checksums for '#{path}' do not match: Remote: #{remote} Local: #{local} EOS end
version_mismatch_message(server_version)
click to toggle source
# File lib/api.rb, line 94 def version_mismatch_message(server_version) <<~EOS Version mismatch: Cache server version: #{server_version} Client version: #{VERSION} Please use the same version as cache server by running: $ gem install carthage_remote_cache -v #{server_version} EOS end