carthage_remote_cache 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 76eb34fe905eb5fce02802b6b3d7a764b144cc4ab20b6f67d2068215c6605811
4
- data.tar.gz: ce2786ceae18cdc95d4c21360044b21838f839879d5a69f883d7b8c8d2040f15
2
+ SHA1:
3
+ metadata.gz: c9bbfa634ee9bb3c1bfadcd969e0cee161b05b31
4
+ data.tar.gz: 41a3a1a435a0db2570ca4165cc2056c44ecdaf44
5
5
  SHA512:
6
- metadata.gz: a128b2d782cee56f2ddfc018a8f4e4e3275dd87b1337d6420861ee376edd0ea468655739951667768855721d0f91a7176a4102a4f20a2cc92e363e617bebe2d8
7
- data.tar.gz: ffead6c5c29416ed7d12e2fdbd26f465127deedb80fb3af261904de35b2a22245a9302427081ff5e86585e2426db4a4444bbac57680e0726b7b3d2d9809f2e8d
6
+ metadata.gz: d192c10e5ac5e87bd66deadb3808b688e7f471e7fbb9d30761edbe439c5ad29418e001edcc051d80e83935862cd625ba08edaee3c8deb3c5708eca1090be0b90
7
+ data.tar.gz: f714d62a8a03134efa062bc061adeb121f8c9f4960ec22ca8b77b8d6a79e0c96332d5ada2dcb4864856007dffd24fb3d20177d1508211eb1ac3e407c52d5acff
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- carthage_remote_cache (0.0.5)
4
+ carthage_remote_cache (0.0.6)
5
5
  concurrent-ruby (~> 1.0.5)
6
6
  rack (~> 2.0.4)
7
7
  rest-client (~> 2.0.2)
data/README.md CHANGED
@@ -122,6 +122,19 @@ Server is bound to port 9292 by default. If you need to use different port, spec
122
122
 
123
123
  Don't forget to change port number in your version controlled `Cartrcfile`.
124
124
 
125
+ #### Version Compatibility
126
+
127
+ Before each `carthagerc [upload|download]`, the script compares its version number against cache server. If the version doesn't match, `carthagerc` aborts with:
128
+
129
+ Version mismatch:
130
+ Cache server version: 0.0.7
131
+ Client version: 0.0.6
132
+
133
+ Please use the same version as cache server is using by running:
134
+ $ gem install carthage_remote_cache -v 0.0.7
135
+
136
+ Please note, that this functionality only works with clients starting with version [0.0.6](https://github.com/kayak/carthage_remote_cache/releases/tag/0.0.6).
137
+
125
138
  #### Directory Structure
126
139
 
127
140
  Cache server stores version files and framework archives in following directory structure:
data/lib/api.rb CHANGED
@@ -5,6 +5,13 @@ class API
5
5
  @options = options
6
6
  end
7
7
 
8
+ def verify_server_version
9
+ server_version = @networking.get_server_version
10
+ unless server_version == VERSION
11
+ raise VersionMismatchError.new, version_mismatch_message(server_version)
12
+ end
13
+ end
14
+
8
15
  def version_file_matches_server?(carthage_dependency, version_file)
9
16
  if @options[:force]
10
17
  false
@@ -58,6 +65,17 @@ class API
58
65
 
59
66
  private
60
67
 
68
+ def version_mismatch_message(server_version)
69
+ <<~EOS
70
+ Version mismatch:
71
+ Cache server version: #{server_version}
72
+ Client version: #{VERSION}
73
+
74
+ Please use the same version as cache server by running:
75
+ $ gem install carthage_remote_cache -v #{server_version}
76
+ EOS
77
+ end
78
+
61
79
  def checksum_error_message(path, remote, local)
62
80
  <<~EOS
63
81
  Checksums for '#{path}' do not match:
@@ -21,8 +21,11 @@ class DownloadCommand
21
21
  end
22
22
 
23
23
  def run
24
+ @api.verify_server_version
25
+
24
26
  pool = Concurrent::FixedThreadPool.new(THREAD_POOL_SIZE)
25
27
 
28
+ @mutex = Mutex.new
26
29
  @number_of_downloaded_archives = 0
27
30
  @number_of_skipped_archives = 0
28
31
  @total_archive_size = 0
@@ -62,7 +65,9 @@ class DownloadCommand
62
65
 
63
66
  if !local_version_file.nil? && @api.version_file_matches_server?(carthage_dependency, local_version_file)
64
67
  $LOG.debug("Version file #{local_version_file.path} matches server version, skipping download")
65
- @number_of_skipped_archives += local_version_file.number_of_frameworks
68
+ @mutex.synchronize do
69
+ @number_of_skipped_archives += local_version_file.number_of_frameworks
70
+ end
66
71
  return
67
72
  end
68
73
 
@@ -72,8 +77,10 @@ class DownloadCommand
72
77
  version_file.frameworks_by_platform.each do |platform, framework_names|
73
78
  for framework_name in framework_names
74
79
  archive_size = @api.download_and_unpack_archive(carthage_dependency, framework_name, platform)
75
- @number_of_downloaded_archives += 1
76
- @total_archive_size += archive_size
80
+ @mutex.synchronize do
81
+ @number_of_downloaded_archives += 1
82
+ @total_archive_size += archive_size
83
+ end
77
84
  end
78
85
  end
79
86
  version_file.move_to_build_dir
@@ -21,10 +21,13 @@ class UploadCommand
21
21
  end
22
22
 
23
23
  def run
24
+ @api.verify_server_version
25
+
24
26
  pool = Concurrent::FixedThreadPool.new(THREAD_POOL_SIZE)
25
27
 
26
28
  $LOG.debug("Will upload frameworks: #{@config.all_framework_names}")
27
29
 
30
+ @mutex = Mutex.new
28
31
  @number_of_uploaded_archives = 0
29
32
  @number_of_skipped_archives = 0
30
33
  @total_archive_size = 0
@@ -61,7 +64,9 @@ class UploadCommand
61
64
 
62
65
  if @api.version_file_matches_server?(carthage_dependency, version_file)
63
66
  $LOG.debug("Version file #{version_file.path} matches server version, skipping upload")
64
- @number_of_skipped_archives += version_file.number_of_frameworks
67
+ @mutex.synchronize do
68
+ @number_of_skipped_archives += version_file.number_of_frameworks
69
+ end
65
70
  return
66
71
  end
67
72
 
@@ -70,8 +75,10 @@ class UploadCommand
70
75
  version_file.frameworks_by_platform.each do |platform, framework_names|
71
76
  for framework_name in framework_names
72
77
  archive_size = @api.create_and_upload_archive(carthage_dependency, framework_name, platform)
73
- @number_of_uploaded_archives += 1
74
- @total_archive_size += archive_size
78
+ @mutex.synchronize do
79
+ @number_of_uploaded_archives += 1
80
+ @total_archive_size += archive_size
81
+ end
75
82
  end
76
83
  end
77
84
  end
@@ -22,3 +22,5 @@ end
22
22
  class OutdatedFrameworkBuildError < AppError; end
23
23
 
24
24
  class MissingFrameworkDirectoryError < AppError; end
25
+
26
+ class VersionMismatchError < AppError; end
@@ -6,6 +6,21 @@ class Networking
6
6
  @config = config
7
7
  end
8
8
 
9
+ # Version
10
+
11
+ def get_server_version
12
+ url = new_version_url
13
+ $LOG.debug("Fetching server version from #{url}")
14
+ server_version = RestClient.get(url) do |response, request, result|
15
+ if response.code == 200
16
+ response.strip
17
+ else
18
+ raise AppError.new, "Failed to read server version from #{url}, response:\n #{response[0...300]}"
19
+ end
20
+ end
21
+ server_version
22
+ end
23
+
9
24
  # Version Files
10
25
 
11
26
  # @return VersionFile or nil
@@ -67,6 +82,10 @@ class Networking
67
82
 
68
83
  private
69
84
 
85
+ def new_version_url
86
+ new_server_url(['version'])
87
+ end
88
+
70
89
  def new_version_file_url(carthage_dependency)
71
90
  new_server_url([
72
91
  'versions',
@@ -6,9 +6,15 @@ get '/' do
6
6
  "Welcome to carthage_remote_cache"
7
7
  end
8
8
 
9
+ version_path = '/version'
9
10
  versions_path = '/versions/:xcodebuild_version/:swift_version/:dependency_name/:version/:version_filename'
10
11
  frameworks_path = '/frameworks/:xcodebuild_version/:swift_version/:dependency_name/:version/:framework_name/:platform'
11
12
 
13
+ get version_path do
14
+ status(200)
15
+ VERSION
16
+ end
17
+
12
18
  get versions_path do
13
19
  dirname = params_to_framework_dir(params)
14
20
  filename = params[:version_filename]
@@ -1 +1 @@
1
- VERSION = '0.0.5'
1
+ VERSION = '0.0.6'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carthage_remote_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juraj Blahunka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-09 00:00:00.000000000 Z
11
+ date: 2018-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -242,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
242
  version: '0'
243
243
  requirements: []
244
244
  rubyforge_project:
245
- rubygems_version: 2.7.4
245
+ rubygems_version: 2.6.14
246
246
  signing_key:
247
247
  specification_version: 4
248
248
  summary: Centralized cache to serve carthage frameworks. Useful for distributed CI