cocoapods-downloader 1.2.1 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of cocoapods-downloader might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.markdown +4 -3
- data/lib/cocoapods-downloader/base.rb +12 -0
- data/lib/cocoapods-downloader/gem_version.rb +1 -1
- data/lib/cocoapods-downloader/git.rb +24 -2
- data/lib/cocoapods-downloader/http.rb +20 -1
- data/lib/cocoapods-downloader/remote_file.rb +20 -25
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc4fe940ffcfe1f304e30cf50212217dc821e13e3a3431e73c01af91f54139b7
|
4
|
+
data.tar.gz: e71b8009f6c2f939cac92ef1ecbff51f824e2d1ea394d5b1d9936c14d41d2c61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a3666c592eaedbd7e87a550520d6184548e9cb9d71c0b16eef51ea961a5a5b12a5803d563cb16fc1c12e07bba5892cca44520d0b9ffc38909ededee9696c86a
|
7
|
+
data.tar.gz: c7059215e47fc5bc22026ea3b5b4a502b39b24f377280e9242a61a11e317bfa73cbee6f1d6737885c5e4da6d6ca95bf62971e283241b7878b2cb943d09a7d380
|
data/README.markdown
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
A small library for downloading files from remotes in a folder.
|
4
4
|
|
5
|
-
[![Build Status](https://img.shields.io/
|
6
|
-
[![
|
7
|
-
[![
|
5
|
+
[![Build Status](https://img.shields.io/github/workflow/status/CocoaPods/CocoaPods-Downloader/Spec)](https://github.com/CocoaPods/cocoapods-downloader/actions)
|
6
|
+
[![Gem Version](https://img.shields.io/gem/v/cocoapods-downloader)](https://rubygems.org/gems/cocoapods-downloader)
|
7
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/maintainability)](https://codeclimate.com/github/CocoaPods/cocoapods-downloader/maintainability)
|
8
|
+
[![Test Coverage](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/test_coverage)](https://codeclimate.com/github/CocoaPods/cocoapods-downloader/test_coverage)
|
8
9
|
|
9
10
|
## Install
|
10
11
|
|
@@ -121,6 +121,18 @@ module Pod
|
|
121
121
|
raise 'Abstract method'
|
122
122
|
end
|
123
123
|
|
124
|
+
# Returns a User-Agent string that itentifies http network requests as
|
125
|
+
# originating from CocoaPods.
|
126
|
+
# Contains version numbers from the CocoaPods Gem and the cocoapods-downloader Gem.
|
127
|
+
#
|
128
|
+
# @param [module] base_module The Base CocoaPods Module to retrieve the version number from.
|
129
|
+
# @return [String] the User-Agent string.
|
130
|
+
#
|
131
|
+
def self.user_agent_string(base_module = Pod)
|
132
|
+
pods_version = base_module.const_defined?('VERSION') ? "CocoaPods/#{base_module::VERSION} " : ''
|
133
|
+
"#{pods_version}cocoapods-downloader/#{Pod::Downloader::VERSION}"
|
134
|
+
end
|
135
|
+
|
124
136
|
#-----------------------------------------------------------------------#
|
125
137
|
|
126
138
|
# Defines two methods for an executable, based on its name. The bang
|
@@ -27,16 +27,38 @@ module Pod
|
|
27
27
|
options[:git],
|
28
28
|
options[:branch]]
|
29
29
|
output = Git.execute_command('git', command)
|
30
|
-
match =
|
30
|
+
match = commit_from_ls_remote output, options[:branch]
|
31
31
|
|
32
32
|
return options if match.nil?
|
33
33
|
|
34
|
-
options[:commit] = match
|
34
|
+
options[:commit] = match
|
35
35
|
options.delete(:branch)
|
36
36
|
|
37
37
|
options
|
38
38
|
end
|
39
39
|
|
40
|
+
# Matches a commit from the branches reported by git ls-remote.
|
41
|
+
#
|
42
|
+
# @note When there is a branch and tag with the same name, it will match
|
43
|
+
# the branch, since `refs/heads` is sorted before `refs/tags`.
|
44
|
+
#
|
45
|
+
# @param [String] output
|
46
|
+
# The output from git ls-remote.
|
47
|
+
#
|
48
|
+
# @param [String] branch_name
|
49
|
+
# The desired branch to match a commit to.
|
50
|
+
#
|
51
|
+
# @return [String] commit hash string, or nil if no match found
|
52
|
+
#
|
53
|
+
def self.commit_from_ls_remote(output, branch_name)
|
54
|
+
return nil if branch_name.nil?
|
55
|
+
encoded_branch_name = branch_name.force_encoding(Encoding::ASCII_8BIT)
|
56
|
+
match = %r{([a-z0-9]*)\trefs\/(heads|tags)\/#{Regexp.quote(encoded_branch_name)}}.match(output)
|
57
|
+
match[1] unless match.nil?
|
58
|
+
end
|
59
|
+
|
60
|
+
private_class_method :commit_from_ls_remote
|
61
|
+
|
40
62
|
private
|
41
63
|
|
42
64
|
# @!group Base class hooks
|
@@ -3,12 +3,31 @@ require 'cocoapods-downloader/remote_file'
|
|
3
3
|
module Pod
|
4
4
|
module Downloader
|
5
5
|
class Http < RemoteFile
|
6
|
+
USER_AGENT_HEADER = 'User-Agent'.freeze
|
7
|
+
|
6
8
|
private
|
7
9
|
|
8
10
|
executable :curl
|
9
11
|
|
10
12
|
def download_file(full_filename)
|
11
|
-
|
13
|
+
parameters = ['-f', '-L', '-o', full_filename, url, '--create-dirs', '--netrc-optional', '--retry', '2']
|
14
|
+
parameters << user_agent_argument if headers.nil? ||
|
15
|
+
headers.none? { |header| header.casecmp(USER_AGENT_HEADER).zero? }
|
16
|
+
|
17
|
+
headers.each do |h|
|
18
|
+
parameters << '-H'
|
19
|
+
parameters << h
|
20
|
+
end unless headers.nil?
|
21
|
+
|
22
|
+
curl! parameters
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns a cURL command flag to add the CocoaPods User-Agent.
|
26
|
+
#
|
27
|
+
# @return [String] cURL command -A flag and User-Agent.
|
28
|
+
#
|
29
|
+
def user_agent_argument
|
30
|
+
"-A '#{Http.user_agent_string}'"
|
12
31
|
end
|
13
32
|
end
|
14
33
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require 'zlib'
|
2
1
|
require 'fileutils'
|
3
2
|
require 'uri'
|
3
|
+
require 'zlib'
|
4
4
|
|
5
5
|
module Pod
|
6
6
|
module Downloader
|
7
7
|
class RemoteFile < Base
|
8
8
|
def self.options
|
9
|
-
[:type, :flatten, :sha1, :sha256]
|
9
|
+
[:type, :flatten, :sha1, :sha256, :headers]
|
10
10
|
end
|
11
11
|
|
12
12
|
class UnsupportedFileTypeError < StandardError; end
|
@@ -21,7 +21,7 @@ module Pod
|
|
21
21
|
|
22
22
|
def download!
|
23
23
|
@filename = filename_with_type(type)
|
24
|
-
@download_path =
|
24
|
+
@download_path = target_path + @filename
|
25
25
|
download_file(@download_path)
|
26
26
|
verify_checksum(@download_path)
|
27
27
|
extract_with_type(@download_path, type)
|
@@ -35,6 +35,10 @@ module Pod
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
def headers
|
39
|
+
options[:headers]
|
40
|
+
end
|
41
|
+
|
38
42
|
# @note The archive is flattened if it contains only one folder and its
|
39
43
|
# extension is either `tgz`, `tar`, `tbz` or the options specify
|
40
44
|
# it.
|
@@ -44,7 +48,7 @@ module Pod
|
|
44
48
|
#
|
45
49
|
def should_flatten?
|
46
50
|
if options.key?(:flatten)
|
47
|
-
|
51
|
+
options[:flatten]
|
48
52
|
elsif [:tgz, :tar, :tbz, :txz].include?(type)
|
49
53
|
true # those archives flatten by default
|
50
54
|
else
|
@@ -71,18 +75,8 @@ module Pod
|
|
71
75
|
|
72
76
|
def filename_with_type(type = :zip)
|
73
77
|
case type
|
74
|
-
when :zip
|
75
|
-
|
76
|
-
when :tgz
|
77
|
-
'file.tgz'
|
78
|
-
when :tar
|
79
|
-
'file.tar'
|
80
|
-
when :tbz
|
81
|
-
'file.tbz'
|
82
|
-
when :txz
|
83
|
-
'file.txz'
|
84
|
-
when :dmg
|
85
|
-
'file.dmg'
|
78
|
+
when :zip, :tgz, :tar, :tbz, :txz, :dmg
|
79
|
+
"file.#{type}"
|
86
80
|
else
|
87
81
|
raise UnsupportedFileTypeError, "Unsupported file type: #{type}"
|
88
82
|
end
|
@@ -95,16 +89,11 @@ module Pod
|
|
95
89
|
def extract_with_type(full_filename, type = :zip)
|
96
90
|
unpack_from = full_filename
|
97
91
|
unpack_to = @target_path
|
92
|
+
|
98
93
|
case type
|
99
94
|
when :zip
|
100
95
|
unzip! unpack_from, '-d', unpack_to
|
101
|
-
when :tgz
|
102
|
-
tar! 'xfz', unpack_from, '-C', unpack_to
|
103
|
-
when :tar
|
104
|
-
tar! 'xf', unpack_from, '-C', unpack_to
|
105
|
-
when :tbz
|
106
|
-
tar! 'xfj', unpack_from, '-C', unpack_to
|
107
|
-
when :txz
|
96
|
+
when :tar, :tgz, :tbz, :txz
|
108
97
|
tar! 'xf', unpack_from, '-C', unpack_to
|
109
98
|
when :dmg
|
110
99
|
extract_dmg(unpack_from, unpack_to)
|
@@ -116,11 +105,17 @@ module Pod
|
|
116
105
|
# contents to the target (#727)
|
117
106
|
#
|
118
107
|
if should_flatten?
|
119
|
-
contents =
|
108
|
+
contents = target_path.children
|
120
109
|
contents.delete(target_path + @filename)
|
121
110
|
entry = contents.first
|
122
111
|
if contents.count == 1 && entry.directory?
|
123
|
-
|
112
|
+
tmp_entry = entry.sub_ext("#{entry.extname}.tmp")
|
113
|
+
begin
|
114
|
+
FileUtils.move(entry, tmp_entry)
|
115
|
+
FileUtils.move(tmp_entry.children, target_path)
|
116
|
+
ensure
|
117
|
+
FileUtils.remove_entry(tmp_entry)
|
118
|
+
end
|
124
119
|
end
|
125
120
|
end
|
126
121
|
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-downloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
8
8
|
- Fabio Pelosin
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-08-31 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
14
|
+
description:
|
15
15
|
email:
|
16
16
|
- eloy.de.enige@gmail.com
|
17
17
|
- fabiopelosin@gmail.com
|
@@ -33,11 +33,11 @@ files:
|
|
33
33
|
- lib/cocoapods-downloader/remote_file.rb
|
34
34
|
- lib/cocoapods-downloader/scp.rb
|
35
35
|
- lib/cocoapods-downloader/subversion.rb
|
36
|
-
homepage: https://github.com/CocoaPods/
|
36
|
+
homepage: https://github.com/CocoaPods/cocoapods-downloader
|
37
37
|
licenses:
|
38
38
|
- MIT
|
39
39
|
metadata: {}
|
40
|
-
post_install_message:
|
40
|
+
post_install_message:
|
41
41
|
rdoc_options: []
|
42
42
|
require_paths:
|
43
43
|
- lib
|
@@ -45,16 +45,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 2.
|
48
|
+
version: 2.3.3
|
49
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
requirements: []
|
55
|
-
|
56
|
-
|
57
|
-
signing_key:
|
55
|
+
rubygems_version: 3.2.3
|
56
|
+
signing_key:
|
58
57
|
specification_version: 3
|
59
58
|
summary: A small library for downloading files from remotes in a folder.
|
60
59
|
test_files: []
|