Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
cocoapods
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gengmeiios
cocoapods
Commits
e2380478
Commit
e2380478
authored
Apr 15, 2014
by
Fabio Pelosin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ExternalSources] Refactor
parent
36fefd7b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
118 deletions
+39
-118
CHANGELOG.md
CHANGELOG.md
+4
-0
Gemfile.lock
Gemfile.lock
+2
-2
external_sources.rb
lib/cocoapods/external_sources.rb
+30
-113
external_sources_spec.rb
spec/unit/external_sources_spec.rb
+0
-0
analyzer_spec.rb
spec/unit/installer/analyzer_spec.rb
+3
-3
No files found.
CHANGELOG.md
View file @
e2380478
...
@@ -43,6 +43,10 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
...
@@ -43,6 +43,10 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
[
Andrea Mazzini
](
https://github.com/andreamazz
)
[
Andrea Mazzini
](
https://github.com/andreamazz
)
[
#2008
](
https://github.com/CocoaPods/CocoaPods/issues/2008
)
[
#2008
](
https://github.com/CocoaPods/CocoaPods/issues/2008
)
*
Dependencies declared with external sources now support HTTP downloads and
have improved support for all the options supported by the downloader.
[
Fabio Pelosin
][
irrationalfab
]
##### Bug Fixes
##### Bug Fixes
*
Support HTTP redirects when linting homepage and screenshots.
*
Support HTTP redirects when linting homepage and screenshots.
...
...
Gemfile.lock
View file @
e2380478
...
@@ -7,7 +7,7 @@ GIT
...
@@ -7,7 +7,7 @@ GIT
GIT
GIT
remote: https://github.com/CocoaPods/Core.git
remote: https://github.com/CocoaPods/Core.git
revision:
f8a920b02c19273f689c1f930af580d473c7852f
revision:
46411b865c33a0f7fc172be70559611e2f7fbe21
branch: master
branch: master
specs:
specs:
cocoapods-core (0.31.1)
cocoapods-core (0.31.1)
...
@@ -27,7 +27,7 @@ GIT
...
@@ -27,7 +27,7 @@ GIT
GIT
GIT
remote: https://github.com/CocoaPods/cocoapods-downloader.git
remote: https://github.com/CocoaPods/cocoapods-downloader.git
revision:
d1cca92979882fe7dfef27001705ed4b9bc43faa
revision:
a66c45ed7118540a2ff98ff30e916f9652d9eea3
branch: master
branch: master
specs:
specs:
cocoapods-downloader (0.4.1)
cocoapods-downloader (0.4.1)
...
...
lib/cocoapods/external_sources.rb
View file @
e2380478
...
@@ -13,20 +13,7 @@ module Pod
...
@@ -13,20 +13,7 @@ module Pod
name
=
dependency
.
root_name
name
=
dependency
.
root_name
params
=
dependency
.
external_source
params
=
dependency
.
external_source
klass
=
if
params
.
key?
(
:git
)
then
GitSource
if
klass
=
concrete_class_from_params
(
params
)
elsif
params
.
key?
(
:svn
)
then
SvnSource
elsif
params
.
key?
(
:hg
)
then
MercurialSource
elsif
params
.
key?
(
:bzr
)
then
BazaarSource
elsif
params
.
key?
(
:podspec
)
then
PodspecSource
elsif
params
.
key?
(
:path
)
then
PathSource
end
if
params
.
key?
(
:local
)
klass
=
PathSource
UI
.
warn
"The `:local` option of the Podfile has been renamed to `:path` and is deprecated."
\
end
if
klass
klass
.
new
(
name
,
params
,
podfile_path
)
klass
.
new
(
name
,
params
,
podfile_path
)
else
else
msg
=
"Unknown external source parameters for `
#{
name
}
`: `
#{
params
}
`"
msg
=
"Unknown external source parameters for `
#{
name
}
`: `
#{
params
}
`"
...
@@ -34,6 +21,22 @@ module Pod
...
@@ -34,6 +21,22 @@ module Pod
end
end
end
end
# @return [Class]
#
def
self
.
concrete_class_from_params
(
params
)
if
params
.
key?
(
:podspec
)
PodspecSource
elsif
params
.
key?
(
:path
)
PathSource
elsif
params
.
key?
(
:local
)
UI
.
warn
"The `:local` option of the Podfile has been "
\
"renamed to `:path` and it is deprecated."
PathSource
elsif
Downloader
.
strategy_from_options
(
params
)
DownloaderSource
end
end
#-------------------------------------------------------------------------#
#-------------------------------------------------------------------------#
# Abstract class that defines the common behaviour of external sources.
# Abstract class that defines the common behaviour of external sources.
...
@@ -134,7 +137,8 @@ module Pod
...
@@ -134,7 +137,8 @@ module Pod
# @return [void]
# @return [void]
#
#
def
pre_download
(
sandbox
)
def
pre_download
(
sandbox
)
UI
.
titled_section
(
"Pre-downloading: `
#{
name
}
`
#{
description
}
"
,
{
:verbose_prefix
=>
"-> "
})
do
title
=
"Pre-downloading: `
#{
name
}
`
#{
description
}
"
UI
.
titled_section
(
title
,
{
:verbose_prefix
=>
"-> "
})
do
target
=
sandbox
.
root
+
name
target
=
sandbox
.
root
+
name
target
.
rmtree
if
target
.
exist?
target
.
rmtree
if
target
.
exist?
downloader
=
Config
.
instance
.
downloader
(
target
,
params
)
downloader
=
Config
.
instance
.
downloader
(
target
,
params
)
...
@@ -175,103 +179,13 @@ module Pod
...
@@ -175,103 +179,13 @@ module Pod
#-------------------------------------------------------------------------#
#-------------------------------------------------------------------------#
# Provides support for fetching a specification file from a Git remote.
# Provides support for fetching a specification file from a source handled
#
# by the downloader. Supports all the options of the downloader
# Supports all the options of the downloader (is similar to the git key of
# `source` attribute of a specification).
#
# @note The podspec must be in the root of the repository and should have a
# name matching the one of the dependency.
#
class
GitSource
<
AbstractExternalSource
# @see AbstractExternalSource#fetch
#
def
fetch
(
sandbox
)
pre_download
(
sandbox
)
end
# @see AbstractExternalSource#description
#
def
description
"from `
#{
params
[
:git
]
}
`"
.
tap
do
|
description
|
description
<<
", commit `
#{
params
[
:commit
]
}
`"
if
params
[
:commit
]
description
<<
", branch `
#{
params
[
:branch
]
}
`"
if
params
[
:branch
]
description
<<
", tag `
#{
params
[
:tag
]
}
`"
if
params
[
:tag
]
end
end
end
#-------------------------------------------------------------------------#
# Provides support for fetching a specification file from a SVN source
# remote.
#
# Supports all the options of the downloader (is similar to the git key of
# `source` attribute of a specification).
#
# @note The podspec must be in the root of the repository and should have a
# name matching the one of the dependency.
#
class
SvnSource
<
AbstractExternalSource
# @see AbstractExternalSource#fetch
#
def
fetch
(
sandbox
)
pre_download
(
sandbox
)
end
# @see AbstractExternalSource#description
#
def
description
"from `
#{
params
[
:svn
]
}
`"
.
tap
do
|
description
|
description
<<
", folder `
#{
params
[
:folder
]
}
`"
if
params
[
:folder
]
description
<<
", tag `
#{
params
[
:tag
]
}
`"
if
params
[
:tag
]
description
<<
", revision `
#{
params
[
:revision
]
}
`"
if
params
[
:revision
]
end
end
end
#-------------------------------------------------------------------------#
# Provides support for fetching a specification file from a Mercurial
# source remote.
#
# Supports all the options of the downloader (is similar to the git key of
# `source` attribute of a specification).
#
# @note The podspec must be in the root of the repository and should have a
# name matching the one of the dependency.
#
class
MercurialSource
<
AbstractExternalSource
# @see AbstractExternalSource#fetch
#
def
fetch
(
sandbox
)
pre_download
(
sandbox
)
end
# @see AbstractExternalSource#description
#
def
description
"from `
#{
params
[
:hg
]
}
`"
.
tap
do
|
description
|
description
<<
", revision `
#{
params
[
:revision
]
}
`"
if
params
[
:revision
]
end
end
end
#-------------------------------------------------------------------------#
# Provides support for fetching a specification file from a Bazaar
# source remote.
#
# Supports all the options of the downloader (is similar to the git key of
# `source` attribute of a specification).
#
#
# @note The podspec must be in the root of the repository and should have a
# @note The podspec must be in the root of the repository and should have a
# name matching the one of the dependency.
# name matching the one of the dependency.
#
#
class
Bazaa
rSource
<
AbstractExternalSource
class
Downloade
rSource
<
AbstractExternalSource
# @see AbstractExternalSource#fetch
# @see AbstractExternalSource#fetch
#
#
...
@@ -282,10 +196,14 @@ module Pod
...
@@ -282,10 +196,14 @@ module Pod
# @see AbstractExternalSource#description
# @see AbstractExternalSource#description
#
#
def
description
def
description
"from `
#{
params
[
:bzr
]
}
`"
.
tap
do
|
description
|
strategy
=
Downloader
.
strategy_from_options
(
params
)
description
<<
", tag `
#{
params
[
:tag
]
}
`"
if
params
[
:tag
]
options
=
params
.
dup
description
<<
", revision `
#{
params
[
:revision
]
}
`"
if
params
[
:revision
]
url
=
options
.
delete
(
strategy
)
result
=
"from `
#{
url
}
`"
options
.
each
do
|
key
,
value
|
result
<<
",
#{
key
}
`
#{
value
}
`"
end
end
result
end
end
end
end
...
@@ -300,7 +218,6 @@ module Pod
...
@@ -300,7 +218,6 @@ module Pod
#
#
def
fetch
(
sandbox
)
def
fetch
(
sandbox
)
UI
.
titled_section
(
"Fetching podspec for `
#{
name
}
`
#{
description
}
"
,
{
:verbose_prefix
=>
"-> "
})
do
UI
.
titled_section
(
"Fetching podspec for `
#{
name
}
`
#{
description
}
"
,
{
:verbose_prefix
=>
"-> "
})
do
require
'open-uri'
require
'open-uri'
open
(
podspec_uri
)
{
|
io
|
store_podspec
(
sandbox
,
io
.
read
)
}
open
(
podspec_uri
)
{
|
io
|
store_podspec
(
sandbox
,
io
.
read
)
}
end
end
...
@@ -374,7 +291,7 @@ module Pod
...
@@ -374,7 +291,7 @@ module Pod
def
declared_path
def
declared_path
Pathname
.
new
params
[
:path
]
||
params
[
:local
]
Pathname
.
new
params
[
:path
]
||
params
[
:local
]
end
end
# @return [Pathname] the path of the podspec.
# @return [Pathname] the path of the podspec.
#
#
def
podspec_path
def
podspec_path
...
...
spec/unit/external_sources_spec.rb
View file @
e2380478
This diff is collapsed.
Click to expand it.
spec/unit/installer/analyzer_spec.rb
View file @
e2380478
...
@@ -129,19 +129,19 @@ module Pod
...
@@ -129,19 +129,19 @@ module Pod
podfile_state
.
added
<<
"BananaLib"
podfile_state
.
added
<<
"BananaLib"
@analyzer
.
stubs
(
:result
).
returns
(
stub
(
:podfile_state
=>
podfile_state
))
@analyzer
.
stubs
(
:result
).
returns
(
stub
(
:podfile_state
=>
podfile_state
))
@podfile
.
stubs
(
:dependencies
).
returns
([
Dependency
.
new
(
'BananaLib'
,
:git
=>
"example.com"
)])
@podfile
.
stubs
(
:dependencies
).
returns
([
Dependency
.
new
(
'BananaLib'
,
:git
=>
"example.com"
)])
ExternalSources
::
Git
Source
.
any_instance
.
expects
(
:fetch
)
ExternalSources
::
Downloader
Source
.
any_instance
.
expects
(
:fetch
)
@analyzer
.
send
(
:fetch_external_sources
)
@analyzer
.
send
(
:fetch_external_sources
)
end
end
xit
"it fetches the specification from either the sandbox or from the remote be default"
do
xit
"it fetches the specification from either the sandbox or from the remote be default"
do
dependency
=
Dependency
.
new
(
'Name'
,
:git
=>
'www.example.com'
)
dependency
=
Dependency
.
new
(
'Name'
,
:git
=>
'www.example.com'
)
ExternalSources
::
Git
Source
.
any_instance
.
expects
(
:specification_from_external
).
returns
(
Specification
.
new
).
once
ExternalSources
::
Downloader
Source
.
any_instance
.
expects
(
:specification_from_external
).
returns
(
Specification
.
new
).
once
@resolver
.
send
(
:set_from_external_source
,
dependency
)
@resolver
.
send
(
:set_from_external_source
,
dependency
)
end
end
xit
"it fetches the specification from the remote if in update mode"
do
xit
"it fetches the specification from the remote if in update mode"
do
dependency
=
Dependency
.
new
(
'Name'
,
:git
=>
'www.example.com'
)
dependency
=
Dependency
.
new
(
'Name'
,
:git
=>
'www.example.com'
)
ExternalSources
::
Git
Source
.
any_instance
.
expects
(
:specification
).
returns
(
Specification
.
new
).
once
ExternalSources
::
Downloader
Source
.
any_instance
.
expects
(
:specification
).
returns
(
Specification
.
new
).
once
@resolver
.
update_external_specs
=
false
@resolver
.
update_external_specs
=
false
@resolver
.
send
(
:set_from_external_source
,
dependency
)
@resolver
.
send
(
:set_from_external_source
,
dependency
)
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment