cocoapods-nexus 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 +4 -4
- data/README.md +4 -4
- data/cocoapods-nexus.gemspec +1 -1
- data/lib/cocoapods-nexus/api/components.rb +34 -7
- data/lib/cocoapods-nexus/command/nexus/push.rb +10 -5
- data/lib/cocoapods-nexus/downloader.rb +1 -1
- data/lib/cocoapods-nexus/hook/specification.rb +19 -0
- data/lib/cocoapods-nexus/nexus_source.rb +21 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f26e201f54fc7fa7527ced7f39be79211ea312640a2080b1cf9dad3f27d32b8e
|
4
|
+
data.tar.gz: eea1a06b6eb1eb14f80b63961c37d2ed1abfcdc1e83e126a8659cf0e19b76095
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 472e4c8da17a58c0f3dc9067a968308727b24f97da71f31da0bd276a1bdc86574bf5a6dcc659cc5122e5125ccd0d0efc2ee665f85f3a1f4f9d691b752964d159
|
7
|
+
data.tar.gz: 525daa7f70e4fe069c0d83ffa6ac68bf20ebaa8bea43c7dd9762d0245a59f0e79d2fff83b29bf950eb07cfdc0e3670520050a7ce97c19751485883e3efe5c0d5
|
data/README.md
CHANGED
@@ -26,7 +26,7 @@ $ gem install cocoapods-nexus
|
|
26
26
|
```shell
|
27
27
|
$ pod nexus add RepoName NexusHostUrl
|
28
28
|
# 例如:
|
29
|
-
# pod nexus add ios_release http://ip:
|
29
|
+
# pod nexus add ios_release http://ip:port
|
30
30
|
```
|
31
31
|
|
32
32
|
#### List
|
@@ -45,7 +45,7 @@ $ pod nexus list
|
|
45
45
|
$ pod nexus push path/to/podspec --url=NexusHostUrl --repo=RepoName --artifact=path/to/预编译文件
|
46
46
|
|
47
47
|
# 例如:
|
48
|
-
# pod nexus push ~/demo.podspec --url=http://ip:
|
48
|
+
# pod nexus push ~/demo.podspec --url=http://ip:port --repo=ios_release --artifact=~/demo.zip
|
49
49
|
```
|
50
50
|
|
51
51
|
### Podfile配置
|
@@ -55,7 +55,7 @@ $ pod nexus push path/to/podspec --url=NexusHostUrl --repo=RepoName --artifact=p
|
|
55
55
|
plugin 'cocoapods-nexus', :sources => [
|
56
56
|
{
|
57
57
|
:name => "ios",
|
58
|
-
:url => "http://ip:
|
58
|
+
:url => "http://ip:port",
|
59
59
|
}
|
60
60
|
]
|
61
61
|
|
@@ -77,7 +77,7 @@ password nexus_password
|
|
77
77
|
|
78
78
|
### 2.服务器地址
|
79
79
|
|
80
|
-
插件关于nexus的相关操作只需要配置ip和
|
80
|
+
插件关于nexus的相关操作只需要配置ip和port,后续的mount地址默认为nexus,暂时不支持修改。
|
81
81
|
|
82
82
|
## 致谢
|
83
83
|
|
data/cocoapods-nexus.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'cocoapods-nexus'
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.6"
|
8
8
|
spec.authors = ['mrdaios']
|
9
9
|
spec.email = ['mrdaios@gmail.com']
|
10
10
|
spec.description = 'a cocoapods plugin for nexus.'
|
@@ -6,22 +6,49 @@ module CocoapodsNexus
|
|
6
6
|
end
|
7
7
|
|
8
8
|
# 上传组件
|
9
|
-
def upload_maven_component(artifact_id:, version:, group_id:, podspec:, artifact:, files:)
|
9
|
+
def upload_maven_component(artifact_id:, version:, group_id:, podspec:, artifact:, podspec_hook:, files:)
|
10
10
|
parameters = {
|
11
11
|
'maven2.artifactId' => artifact_id,
|
12
12
|
'maven2.version' => version,
|
13
13
|
'maven2.groupId' => group_id,
|
14
14
|
'maven2.generate-pom' => true,
|
15
|
-
'maven2.packaging' => artifact.nil? ? 'podspec' : File.extname(artifact).delete(
|
15
|
+
'maven2.packaging' => artifact.nil? ? 'podspec' : File.extname(artifact).delete('.')
|
16
16
|
}
|
17
17
|
upload_files = []
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
unless podspec.nil?
|
19
|
+
upload_files << {
|
20
|
+
'file' => podspec,
|
21
|
+
'extension' => 'podspec',
|
22
|
+
# 'classifier' => 'podspec'
|
23
|
+
}
|
24
|
+
end
|
25
|
+
unless artifact.nil?
|
26
|
+
upload_files << {
|
27
|
+
'file' => artifact,
|
28
|
+
'extension' => File.extname(artifact).delete('.')
|
29
|
+
}
|
30
|
+
end
|
31
|
+
unless podspec_hook.nil?
|
32
|
+
upload_files << {
|
33
|
+
'file' => podspec_hook,
|
34
|
+
'extension' => 'rb',
|
35
|
+
'classifier' => 'podspec_hook'
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
unless files.nil?
|
40
|
+
upload_files |= files.map do |file|
|
41
|
+
{
|
42
|
+
'file' => file,
|
43
|
+
'extension' => File.extname(file).delete('.'),
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
21
47
|
|
22
48
|
upload_files.each_index do |index|
|
23
|
-
parameters["maven2.asset#{index + 1}"] = File.open(upload_files[index], 'r:utf-8')
|
24
|
-
parameters["maven2.asset#{index + 1}.extension"] =
|
49
|
+
parameters["maven2.asset#{index + 1}"] = File.open(upload_files[index]['file'], 'r:utf-8')
|
50
|
+
parameters["maven2.asset#{index + 1}.extension"] = upload_files[index]['extension'] unless upload_files[index]['extension'].nil?
|
51
|
+
parameters["maven2.asset#{index + 1}.classifier"] = upload_files[index]['classifier'] unless upload_files[index]['classifier'].nil?
|
25
52
|
end
|
26
53
|
@connection.post(endpoint: "components?repository=#{@repo}", parameters: parameters, headers: {})
|
27
54
|
end
|
@@ -16,9 +16,10 @@ module Pod
|
|
16
16
|
|
17
17
|
def self.options
|
18
18
|
[
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
19
|
+
%w[--url=url nexus服务器地址(http://ip:port)],
|
20
|
+
%w[--repo=repo nexus的仓库名称],
|
21
|
+
%w[--artifact=artifact 制品文件],
|
22
|
+
%w[--podspec_hook=podspec_hook. podspec动态修改脚本文件]
|
22
23
|
].concat(super)
|
23
24
|
end
|
24
25
|
|
@@ -27,6 +28,7 @@ module Pod
|
|
27
28
|
@url = argv.option('url')
|
28
29
|
@repo = argv.option('repo')
|
29
30
|
@artifact = argv.option('artifact')
|
31
|
+
@podspec_hook = argv.option('podspec_hook')
|
30
32
|
super
|
31
33
|
end
|
32
34
|
|
@@ -40,8 +42,10 @@ module Pod
|
|
40
42
|
def run
|
41
43
|
podspec_path = File.expand_path(@podspec)
|
42
44
|
artifact_path = File.expand_path(@artifact) unless @artifact.nil?
|
45
|
+
podspec_hook_path = File.expand_path(@podspec_hook) unless @podspec_hook.nil?
|
43
46
|
|
44
|
-
|
47
|
+
|
48
|
+
UI.section("开始发布 #{File.basename(@podspec)} -> #{File.join(@url,"/nexus/#browse/browse:",@repo)}") do
|
45
49
|
spec = Specification.from_file(podspec_path)
|
46
50
|
artifact_id = spec.attributes_hash['name']
|
47
51
|
version = spec.attributes_hash['version']
|
@@ -52,7 +56,8 @@ module Pod
|
|
52
56
|
group_id: group_id,
|
53
57
|
podspec: podspec_path,
|
54
58
|
artifact: artifact_path,
|
55
|
-
|
59
|
+
podspec_hook: podspec_hook_path,
|
60
|
+
files: nil)
|
56
61
|
UI.puts "成功发布 #{artifact_id}(#{version})"
|
57
62
|
else
|
58
63
|
raise Informative, "发布失败 #{artifact_id}(#{version}),请检查~/.netrc文件或#{@repo}类型"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cocoapods-core'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Specification
|
5
|
+
class << Specification
|
6
|
+
def _eval_nexus_podspec(nexus_podspec, parent_podspec)
|
7
|
+
podspec_string = nexus_podspec.gsub('Pod::Spec.new', 'Pod::Spec.nexus(parent_podspec)')
|
8
|
+
.gsub('Pod::Specification.new', 'Pod::Spec.nexus(parent_podspec)')
|
9
|
+
# rubocop:disable Eval
|
10
|
+
eval(podspec_string, binding)
|
11
|
+
# rubocop:enable Eval
|
12
|
+
end
|
13
|
+
|
14
|
+
def nexus(parent_podspec)
|
15
|
+
yield parent_podspec if block_given?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'cocoapods-nexus/api'
|
2
2
|
require 'cocoapods-nexus/downloader'
|
3
3
|
require 'versionomy'
|
4
|
+
require 'cocoapods-nexus/hook/specification'
|
4
5
|
|
5
6
|
module Pod
|
6
7
|
class NexusSource < Source
|
@@ -39,7 +40,7 @@ module Pod
|
|
39
40
|
# 暂时这样处理
|
40
41
|
spec_version = query.requirement.requirements.last.last.to_s
|
41
42
|
artifacte = nexus_find_artifacte(spec_name: query.root_name, spec_version: spec_version)
|
42
|
-
|
43
|
+
if artifacte
|
43
44
|
download_url = parse_artifacte_asset_url(artifacte, 'podspec')
|
44
45
|
if download_url
|
45
46
|
target_path = "#{@repo}/#{query.root_name}/#{spec_version}"
|
@@ -66,7 +67,24 @@ module Pod
|
|
66
67
|
specification.attributes_hash['source'] = {
|
67
68
|
'http' => download_url
|
68
69
|
}
|
69
|
-
|
70
|
+
|
71
|
+
# 执行自定义脚本
|
72
|
+
podspec_rb_url = parse_artifacte_asset_url(artifacte, 'podspec_hook.rb')
|
73
|
+
if podspec_rb_url
|
74
|
+
tmpdir = Dir.tmpdir
|
75
|
+
downloader = Pod::Downloader::NexusHttp.new(tmpdir, podspec_rb_url, {:type => 'rb', :name => name})
|
76
|
+
downloader.download
|
77
|
+
|
78
|
+
path = File.join(tmpdir, "#{name}.rb")
|
79
|
+
if File.exist?(path)
|
80
|
+
string = File.open(path, 'r:utf-8', &:read)
|
81
|
+
if string
|
82
|
+
Pod::Specification._eval_nexus_podspec(string, specification)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
else
|
86
|
+
specification.attributes_hash['vendored_frameworks'] = "#{name}.framework"
|
87
|
+
end
|
70
88
|
end
|
71
89
|
specification
|
72
90
|
end
|
@@ -88,7 +106,7 @@ module Pod
|
|
88
106
|
def parse_artifacte_asset_url(artifacte, asset_type)
|
89
107
|
asset = artifacte['assets'].select { |asset| asset['path'].end_with?(asset_type) }.first
|
90
108
|
asset['downloadUrl'] if asset && asset['downloadUrl']
|
91
|
-
end
|
109
|
+
end
|
92
110
|
|
93
111
|
def nexus_find_artifacte(spec_name:, spec_version:)
|
94
112
|
artifactes = nexus_api.search_maven_component(artifact_id: spec_name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-nexus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mrdaios
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- lib/cocoapods-nexus/hook/analyzer.rb
|
109
109
|
- lib/cocoapods-nexus/hook/installer.rb
|
110
110
|
- lib/cocoapods-nexus/hook/manager.rb
|
111
|
+
- lib/cocoapods-nexus/hook/specification.rb
|
111
112
|
- lib/cocoapods-nexus/nexus_source.rb
|
112
113
|
- lib/cocoapods_plugin.rb
|
113
114
|
- spec/command/nexus_spec.rb
|