cocoapods-dev-env 2.0.2 → 2.2.1
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/Gemfile.lock +103 -2
- data/README.md +8 -0
- data/cocoapods-dev-env.code-workspace +21 -0
- data/lib/cocoapods/dev/env/version.rb +1 -1
- data/lib/cocoapods_plugin.rb +3 -485
- data/lib/dev_env_entry.rb +386 -0
- data/lib/dev_env_utils.rb +157 -0
- data/lib/resolver_binary.rb +116 -0
- data/lib/resolver_universal_dependency.rb +127 -0
- metadata +8 -3
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require 'cocoapods'
|
|
2
|
+
require 'dev_env_entry'
|
|
3
|
+
|
|
4
|
+
$parentPodlockDependencyHash = Hash.new
|
|
5
|
+
$processedParentPods = Hash.new # 从父项目里读出来的pod当次已经下载或者加载过了就不需要再做一遍
|
|
6
|
+
|
|
7
|
+
module Pod
|
|
8
|
+
# Dependency扩展,通过setRequirement接口暴露内部变量的set方法
|
|
9
|
+
class Dependency
|
|
10
|
+
def setRequirement(requirement)
|
|
11
|
+
@requirement = requirement
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module Pod
|
|
17
|
+
|
|
18
|
+
# 在这个里将父Podfile的依赖信息同步到子库里
|
|
19
|
+
class Resolver
|
|
20
|
+
|
|
21
|
+
def search_for(dependency)
|
|
22
|
+
UI.message "fake search_for" + dependency.inspect
|
|
23
|
+
if $podFileContentPodNameHash.has_key?(dependency.root_name)
|
|
24
|
+
# 双重保证已经存在在pofile里的不再重复下载覆盖成父项目的配置
|
|
25
|
+
UI.message "parrent extenal source has downloaded"
|
|
26
|
+
else
|
|
27
|
+
parentPodInfo = $parentPodlockDependencyHash[dependency.root_name]
|
|
28
|
+
if parentPodInfo != nil
|
|
29
|
+
dependency.external_source = parentPodInfo.external_source
|
|
30
|
+
dependency.setRequirement(parentPodInfo.requirement)
|
|
31
|
+
#dependency.external_source = Hash[:path => '../../ZYSDK']
|
|
32
|
+
# dependency.external_source = Hash.new
|
|
33
|
+
UI.message "fake create_set_from_sources, changeexternal:" + dependency.inspect
|
|
34
|
+
dep = dependency
|
|
35
|
+
if !$processedParentPods.has_key?(dependency.root_name) && dependency.external_source != nil
|
|
36
|
+
$processedParentPods[dependency.root_name] = true
|
|
37
|
+
# 这里有缺陷: 已经下载过的不需要再下载了,但是不下载又进不到系统里,导致最后没有使用指定的依赖
|
|
38
|
+
# 这个没用 podfile.pod(dependency.root_name, dependency.external_source)
|
|
39
|
+
# if sandbox.specification_path(dep.root_name).nil? ||
|
|
40
|
+
# !dep.external_source[:path].nil? ||
|
|
41
|
+
# !sandbox.pod_dir(dep.root_name).directory? ||
|
|
42
|
+
# checkout_requires_update?(dep)
|
|
43
|
+
# # 已经存在就不再下载
|
|
44
|
+
source = ExternalSources.from_dependency(dependency, podfile.defined_in_file, true)
|
|
45
|
+
source.fetch(sandbox)
|
|
46
|
+
# end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
@search[dependency] ||= begin
|
|
52
|
+
additional_requirements = if locked_requirement = requirement_for_locked_pod_named(dependency.name)
|
|
53
|
+
[locked_requirement]
|
|
54
|
+
else
|
|
55
|
+
Array(@podfile_requirements_by_root_name[dependency.root_name])
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
specifications_for_dependency(dependency, additional_requirements).freeze
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class Podfile
|
|
64
|
+
# 第一次读取在结尾的位置,因为需要先定义函数才能调用
|
|
65
|
+
module DSL
|
|
66
|
+
# 在这里根据用户配置*重新*读取父Podfile里的信息
|
|
67
|
+
def use_parent_lock_info!(option = true)
|
|
68
|
+
case option
|
|
69
|
+
when true, false
|
|
70
|
+
if !option
|
|
71
|
+
$parrentPath = ''
|
|
72
|
+
Podfile.cleanParrentLockFile()
|
|
73
|
+
end
|
|
74
|
+
when Hash
|
|
75
|
+
$parrentPath = option.fetch(:path)
|
|
76
|
+
Podfile.readParrentLockFile()
|
|
77
|
+
else
|
|
78
|
+
raise ArgumentError, "Got `#{option.inspect}`, should be a boolean or hash."
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def self.cleanParrentLockFile()
|
|
84
|
+
$parentPodlockDependencyHash = Hash.new
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# 类方法
|
|
88
|
+
def self.readParrentLockFile()
|
|
89
|
+
# 获取路径(之后外边直接配置)
|
|
90
|
+
localPath = Pathname.new(Dir.pwd + "/" + $parrentPath)
|
|
91
|
+
lockPath ||= localPath + "Podfile.lock"
|
|
92
|
+
# 读取lockfile
|
|
93
|
+
_lockfile = Lockfile.from_file(lockPath)
|
|
94
|
+
if _lockfile == nil
|
|
95
|
+
UI.message "dev_env, 读取父库的lockfile找不到对应路径的lock文件:" + lockPath.inspect
|
|
96
|
+
return
|
|
97
|
+
end
|
|
98
|
+
# 读取lockfile中的依赖信息,用于之后提取使用,其中数据为 Pod::Dependency类型
|
|
99
|
+
localPodsMaps = Hash.new()
|
|
100
|
+
localpods = _lockfile.dependencies
|
|
101
|
+
localpods.each do |dep|
|
|
102
|
+
# 数据为 Pod::Dependency类型
|
|
103
|
+
if (dep.external_source == nil && dep.requirement == nil) || localPodsMaps.has_key?(dep.root_name)
|
|
104
|
+
next
|
|
105
|
+
end
|
|
106
|
+
if dep.external_source == nil && dep.requirement.to_s == '>= 0'
|
|
107
|
+
# dependence里可能没有版本信息(很奇怪,从version里单独取一下,写死版本限制)
|
|
108
|
+
version = _lockfile.version(dep.root_name)
|
|
109
|
+
dep.setRequirement(Requirement.new(version))
|
|
110
|
+
dep.podspec_repo = _lockfile.spec_repo(dep.root_name)
|
|
111
|
+
end
|
|
112
|
+
if dep.local?
|
|
113
|
+
dep.external_source[:path] = $parrentPath + dep.external_source[:path]
|
|
114
|
+
end
|
|
115
|
+
# 测试代码 UI.puts "测试获取父项目podlock里的pod依赖列表: " + dep.inspect
|
|
116
|
+
localPodsMaps[dep.root_name] = dep
|
|
117
|
+
end
|
|
118
|
+
$parentPodlockDependencyHash = localPodsMaps
|
|
119
|
+
# 读取 示例: ydASRInfo = localPodsMaps['YDASR']
|
|
120
|
+
# UI.puts ydASRInfo.inspect
|
|
121
|
+
# UI.puts "YDASR path:\n" + ydASRInfo.external_source[:path]
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# 在这里根据默认路径读取父Podfile里的信息
|
|
125
|
+
Podfile.readParrentLockFile()
|
|
126
|
+
end
|
|
127
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoapods-dev-env
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 吴锡苗
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-04-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: luna-binary-uploader
|
|
@@ -68,11 +68,16 @@ files:
|
|
|
68
68
|
- Rakefile
|
|
69
69
|
- bin/console
|
|
70
70
|
- bin/setup
|
|
71
|
+
- cocoapods-dev-env.code-workspace
|
|
71
72
|
- cocoapods-dev-env.gemspec
|
|
72
73
|
- lib/cocoapods/dev/env.rb
|
|
73
74
|
- lib/cocoapods/dev/env/version.rb
|
|
74
75
|
- lib/cocoapods_plugin.rb
|
|
76
|
+
- lib/dev_env_entry.rb
|
|
77
|
+
- lib/dev_env_utils.rb
|
|
75
78
|
- lib/file_processer.rb
|
|
79
|
+
- lib/resolver_binary.rb
|
|
80
|
+
- lib/resolver_universal_dependency.rb
|
|
76
81
|
homepage: https://github.com/YoudaoMobile/cocoapods-dev-env
|
|
77
82
|
licenses:
|
|
78
83
|
- MIT
|
|
@@ -95,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
95
100
|
- !ruby/object:Gem::Version
|
|
96
101
|
version: '0'
|
|
97
102
|
requirements: []
|
|
98
|
-
rubygems_version: 3.
|
|
103
|
+
rubygems_version: 3.2.5
|
|
99
104
|
signing_key:
|
|
100
105
|
specification_version: 4
|
|
101
106
|
summary: a cocoapod plugin for dev in mutipods
|