cocoapods-dev-env 2.1.9 → 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1282e851ae9b54c7bd13e7e05fe72de11a5a56662e1ecdc3af66745eb752e1d
4
- data.tar.gz: 30f1d0e013d4d56f9f4ff6ea165f6e60d0b8e2a5385a8df85695872e7935507b
3
+ metadata.gz: 770d9cd062fae59894d853698e72d4b4e88f53e49a6dffc65304d1adb0df38eb
4
+ data.tar.gz: 3bfe86a60e7d68a08b7f0c54693105f95ee844f4e89d222fcf09d5e916aed625
5
5
  SHA512:
6
- metadata.gz: 8f7628345e1abff5bddcd84d006a11e98e13d2b3cf8b03ab6c15f3e90760ea4087ecc12952544c89960ded37ddf76108133516b0f8097b4259325f0712a8889f
7
- data.tar.gz: 7036a12b59e37c374a8377836a5968bf56424ad16b1e9f7d2adb4526b589ebd45c86da355fd8febdceac61f3459eb368425b22429d48c53917f94c412147cb9e
6
+ metadata.gz: 245ade96b80c3aac4bcad5a472af479d9e2f6ddabef802e207baa4adc713c21b647740ec2873b1256d185220e6786041a6d3ddb9f7e2ea9d003616554b115fe0
7
+ data.tar.gz: 573365ba899db746a113472ac26a22e5cc8aedc1058b2d0ce8852575b528c61ffe84fee90926a23454b9329853290dbda04b859b57a610ba63cbb027d9b9bd88
data/README.md CHANGED
@@ -42,7 +42,7 @@ Finally the state clean submodule will be removed automatically.
42
42
  3. When you define "dev_env" to "release", and run ```pod install``` .
43
43
  We want to use the release version in cocoapods repo. And do many check for state, and help you to release the not released pod.
44
44
 
45
- 新增功能: 支持读取宿主工程的Podfile.lock文件,来获取宿主工程中的依赖,无需在单独的库的example工程中引用对应的pod
45
+ 2.2.x 新增功能: 支持读取宿主工程的Podfile.lock文件,来获取宿主工程中的依赖,无需在单独的库的example工程中引用对应的pod
46
46
  此功能默认开启, 等同于在顶部写入如下配置: use_parent_lock_info!
47
47
  关闭方法 use_parent_lock_info! false
48
48
  宿主工程路径默认为"../../../"(因为默认放到developing_pods子文件夹下,对应的库文件夹下的Example文件夹下,故需要回溯三层)
@@ -1,7 +1,7 @@
1
1
  module Cocoapods
2
2
  module Dev
3
3
  module Env
4
- VERSION = '2.1.9'
4
+ VERSION = '2.2.4'
5
5
  end
6
6
  end
7
- end
7
+ end
data/lib/dev_env_entry.rb CHANGED
@@ -89,6 +89,7 @@ module Pod
89
89
 
90
90
  defaultLocalPath = "./developing_pods/#{pod_name}"
91
91
  UI.message "pod #{name.green} dev-env: #{dev_env.green}"
92
+ isFromSubProject = false
92
93
  if dev_env == 'parent'
93
94
  parentPodInfo = $parentPodlockDependencyHash[pod_name]
94
95
  if parentPodInfo != nil
@@ -101,14 +102,15 @@ module Pod
101
102
  if tag != nil
102
103
  options[:tag] = tag
103
104
  end
104
- defaultLocalPath = $parrentPath + defaultLocalPath
105
- else
106
- UI.puts 'XXXXXXXXXXXXXXXX123' + parentPodInfo.requirement.to_s()
105
+ path = parentPodInfo.external_source[:path]
106
+ if path != nil
107
+ options[:path] = path
108
+ end
109
+ elsif (parentPodInfo.podspec_repo.start_with?("http") || parentPodInfo.podspec_repo.start_with?("git"))
110
+ #UI.puts 'XXXXXXXXXXXXXXXX123' + parentPodInfo.inspect
107
111
  requirements.insert(0, parentPodInfo.requirement.to_s)
108
112
  options[:source] = parentPodInfo.podspec_repo
109
113
  end
110
-
111
- # dependency.setRequirement(parentPodInfo.requirement
112
114
  end
113
115
  return
114
116
  elsif options[:git] == nil
@@ -131,11 +133,12 @@ module Pod
131
133
  options[:branch] = branch
132
134
  options[:tag] = tag
133
135
  if path != nil
134
- options[:path] = $parrentPath + path
136
+ options[:path] = path
135
137
  else
136
- options[:path] = $parrentPath + defaultLocalPath
138
+ options[:path] = defaultLocalPath
137
139
  end
138
140
  UI.puts "#{pod_name.green}采用了父组件的配置,并修改开发状态为#{dev_env.green}"
141
+ isFromSubProject = true
139
142
  end
140
143
  end
141
144
 
@@ -144,10 +147,15 @@ module Pod
144
147
  git = options.delete(:git)
145
148
  branch = options.delete(:branch)
146
149
  tag = options.delete(:tag)
147
- path = options.delete(:path)
150
+ path = options.delete(:path) # 执行命令用的path
148
151
  if path == nil
149
152
  path = defaultLocalPath
150
153
  end
154
+ realpath = path
155
+ if isFromSubProject
156
+ realpath = $parrentPath + path
157
+ end
158
+
151
159
  if git == nil || git.length == 0
152
160
  raise "💔 #{pod_name.yellow} 未定义:git => 'xxx'库地址"
153
161
  end
@@ -159,6 +167,9 @@ module Pod
159
167
  end
160
168
 
161
169
  if dev_env == 'subtree'
170
+ if isFromSubProject
171
+ raise "💔 子项目不支持subtree"
172
+ end
162
173
  if !File.directory?(path)
163
174
  _toplevelDir = `git rev-parse --show-toplevel`
164
175
  _currentDir = `pwd`
@@ -178,19 +189,26 @@ module Pod
178
189
  system(_cmd)
179
190
  Dir.chdir(_currentDir)
180
191
  end
181
- options[:path] = path
192
+ options[:path] = realpath
182
193
  if requirements.length >= 2
183
194
  requirements.delete_at(0)
184
195
  end
185
196
  UI.message "pod #{pod_name.green} enabled #{"subtree".green}-mode 🍺"
186
197
  elsif dev_env == 'dev'
187
198
  # 开发模式,使用path方式引用本地的submodule git库
188
- if !File.directory?(path)
199
+ if !File.directory?(realpath)
189
200
  UI.puts "add submodule for #{pod_name.green}".yellow
201
+ curProjectDir = `pwd`
202
+ if isFromSubProject
203
+ # 进入父目录,避免当前工程目录是个submodule,当在submudle中执行addsubmodule时路径会不正确
204
+ Dir.chdir($parrentPath)
205
+ end
190
206
  _cmd = "git submodule add --force -b #{branch} #{git} #{path}"
191
207
  UI.puts _cmd
192
208
  system(_cmd)
193
-
209
+ if isFromSubProject
210
+ Dir.chdir(curProjectDir)
211
+ end
194
212
  _currentDir = Dir.pwd
195
213
  Dir.chdir(path)
196
214
 
@@ -216,7 +234,7 @@ module Pod
216
234
  # DevEnvUtils.searchAndOpenLocalExample(path)
217
235
  # end
218
236
  end
219
- options[:path] = path
237
+ options[:path] = realpath
220
238
  if requirements.length >= 2
221
239
  requirements.delete_at(0)
222
240
  end
@@ -232,8 +250,8 @@ module Pod
232
250
  Dir.chdir(path)
233
251
  # 已经进入到podspec的文件夹中了
234
252
  DevEnvUtils.checkGitStatusAndPush(pod_name) # push一下
235
- ret = DevEnvUtils.checkRemoteTagExist(tag)
236
- if ret == true
253
+ isRemoteTagExist = DevEnvUtils.checkRemoteTagExist(tag)
254
+ if isRemoteTagExist == true
237
255
  # tag已经存在,要么没改动,要么已经手动打过tag,要么是需要引用老版本tag的代码
238
256
  if DevEnvUtils.checkTagOrBranchIsEqalToHead(tag, "./")
239
257
  UI.puts "#{pod_name.green} 检测到未做任何调整,或已手动打过Tag,直接引用远端库"
@@ -244,13 +262,16 @@ module Pod
244
262
  end
245
263
  else
246
264
  # tag不存在,
265
+ DevEnvUtils.checkIsOnTrankBrach()
247
266
  DevEnvUtils.changeVersionInCocoapods(pod_name, originTag)
248
267
  DevEnvUtils.checkGitStatusAndPush(pod_name) # 再push一下
249
268
  DevEnvUtils.addGitTagAndPush(tag, pod_name)
250
269
  end
251
270
  Dir.chdir(_currentDir)
252
271
  DevEnvUtils.checkAndRemoveSubmodule(path)
253
- UI.puts "🍺🍺 #{pod_name.green} #{tag.green} release successfully!!"
272
+ if !isRemoteTagExist
273
+ UI.puts "🍺🍺 #{pod_name.green} #{tag.green} release successfully!!"
274
+ end
254
275
  end
255
276
  options[:git] = git
256
277
  options[:tag] = tag
data/lib/dev_env_utils.rb CHANGED
@@ -1,169 +1,169 @@
1
1
  require 'cocoapods'
2
2
 
3
3
  class DevEnvUtils
4
-
5
- def self.searchAndOpenLocalExample(path)
6
- _currentDir = Dir.pwd
7
- Dir.chdir(path)
8
- Dir.chdir("Example")
9
- `pod install`
10
- projPaths = Dir::glob("*.xcworkspace")
11
- if projPaths.count > 0
12
- `open -a Terminal ./`
13
- `open #{projPaths[0]}`
14
- end
15
- Dir.chdir(_currentDir)
4
+ def self.searchAndOpenLocalExample(path)
5
+ _currentDir = Dir.pwd
6
+ Dir.chdir(path)
7
+ Dir.chdir('Example')
8
+ `pod install`
9
+ projPaths = Dir.glob('*.xcworkspace')
10
+ if projPaths.count > 0
11
+ `open -a Terminal ./`
12
+ `open #{projPaths[0]}`
16
13
  end
17
-
18
- def self.checkAndRemoveSubmodule(path)
19
- _currentDir = Dir.pwd
20
- Dir.chdir(path)
21
- output = `git status -s`
22
- puts output
23
- if output.length == 0
24
- output = `git status`
25
- if output.include?("push")
26
- raise "submodule #{path} 移除失败,有推送的修改"
27
- end
28
- else
29
- raise "submodule #{path} 移除失败,有未提交的修改"
30
- end
31
- Dir.chdir(_currentDir)
32
- `
14
+ Dir.chdir(_currentDir)
15
+ end
16
+
17
+ def self.checkAndRemoveSubmodule(path)
18
+ _currentDir = Dir.pwd
19
+ Dir.chdir(path)
20
+ output = `git status -s`
21
+ puts output
22
+ if output.length == 0
23
+ output = `git status`
24
+ raise "submodule #{path} 移除失败,有推送的修改" if output.include?('push')
25
+ else
26
+ raise "submodule #{path} 移除失败,有未提交的修改"
27
+ end
28
+ Dir.chdir(_currentDir)
29
+ `
33
30
  git submodule deinit #{path}
34
31
  rm -rf #{path}
35
32
  git rm #{path}
36
33
  `
34
+ end
35
+
36
+ def self.checkTagIsEqualToHead(tag, path)
37
+ _currentDir = Dir.pwd
38
+ Dir.chdir(path)
39
+ result = `git describe --abbrev=4 HEAD`
40
+ Dir.chdir(_currentDir)
41
+ if result.include?(tag)
42
+ true
43
+ else
44
+ checkTagOrBranchIsEqalToHead(tag, path)
37
45
  end
38
-
39
- def self.checkTagIsEqualToHead(tag, path)
40
- _currentDir = Dir.pwd
41
- Dir.chdir(path)
42
- result = `git describe --abbrev=4 HEAD`
43
- Dir.chdir(_currentDir)
44
- if result.include?(tag)
45
- return true
46
- else
47
- return checkTagOrBranchIsEqalToHead(tag, path)
48
- end
49
- end
50
-
51
- # 这个函数有问题有时候拿不到相同的commit id
52
- def self.checkTagOrBranchIsEqalToHead(branchOrTag, path)
53
- _currentDir = Dir.pwd
54
- Dir.chdir(path)
55
- headCommitID = `git rev-parse HEAD`
56
- tagCommitID = `git rev-parse #{branchOrTag}`
57
- Pod::UI.puts "#{`pwd`} headCommitID:#{headCommitID} \n #{branchOrTag}ComitID:#{tagCommitID}"
58
- Dir.chdir(_currentDir)
59
- return (headCommitID.length > 0 && headCommitID == tagCommitID)
46
+ end
47
+
48
+ # 这个函数有问题有时候拿不到相同的commit id
49
+ def self.checkTagOrBranchIsEqalToHead(branchOrTag, path)
50
+ _currentDir = Dir.pwd
51
+ Dir.chdir(path)
52
+ headCommitID = `git rev-parse HEAD`
53
+ tagCommitID = `git rev-parse #{branchOrTag}`
54
+ Pod::UI.puts "#{`pwd`} headCommitID:#{headCommitID} \n #{branchOrTag}ComitID:#{tagCommitID}"
55
+ Dir.chdir(_currentDir)
56
+ (headCommitID.length > 0 && headCommitID == tagCommitID)
57
+ end
58
+
59
+ def self.checkGitStatusAndPush(pod_name)
60
+ output = `git status -s`
61
+ puts output
62
+ if output.length == 0
63
+ output = `git status`
64
+ if output.include?('push')
65
+ ret = system('git push')
66
+ raise "💔 #{pod_name.yellow} push 失败" if ret != true
67
+ end
68
+ else
69
+ raise "💔 #{pod_name.yellow} 有未提交的数据"
60
70
  end
61
-
62
- def self.checkGitStatusAndPush(pod_name)
63
- output = `git status -s`
64
- puts output
65
- if output.length == 0
66
- output = `git status`
67
- if output.include?("push")
68
- ret = system("git push")
69
- if ret != true
70
- raise "💔 #{pod_name.yellow} push 失败"
71
- end
72
- end
73
- else
74
- raise "💔 #{pod_name.yellow} 有未提交的数据"
75
- end
71
+ end
72
+
73
+ def self.checkRemoteTagExist(tag)
74
+ `git push --tags`
75
+ system("git ls-remote --exit-code origin refs/tags/#{tag}")
76
+ end
77
+
78
+ def self.addGitTagAndPush(tag, pod_name)
79
+ ret = system("git tag #{tag}")
80
+ if ret == true
81
+ ret = system("git push origin #{tag}")
82
+ raise "💔 #{pod_name.yellow} push tag 失败" if ret != true
76
83
  end
77
-
78
- def self.checkRemoteTagExist(tag)
79
- `git push --tags`
80
- ret = system("git ls-remote --exit-code origin refs/tags/#{tag}")
81
- return ret
84
+ ret
85
+ end
86
+
87
+ def self.inputNeedJumpForReson(str)
88
+ return false if ARGV.include? '--silent'
89
+
90
+ puts str.green
91
+ puts '是(Y), 任意其他输入或直接回车跳过'.green
92
+ input = STDIN.gets
93
+ input[0, 1] == 'Y'
94
+ end
95
+
96
+ # 检查是否在主分支上(main / master)
97
+ def self.checkIsOnTrankBrach()
98
+ branch = `git branch --show-current`.chomp
99
+ isOK = (branch == 'main' || branch == 'master')
100
+ if !isOK
101
+ puts ('💔 当前分支是: '.red + branch.green + ' 没在主分支,不符合规范,是否继续发布?'.red)
102
+ if !inputNeedJumpForReson("")
103
+ raise "已取消发布, 请切换子库分支到 master / main 后重新 pod install"
104
+ end
82
105
  end
106
+ end
83
107
 
84
- def self.addGitTagAndPush(tag, pod_name)
85
- ret = system("git tag #{tag}")
86
- if ret == true
87
- ret = system("git push origin #{tag}")
88
- if ret != true
89
- raise "💔 #{pod_name.yellow} push tag 失败"
90
- end
91
- end
92
- return ret
108
+ def self.changeVersionInCocoapods(name, newVersion)
109
+ if newVersion.nil?
110
+ Pod::UI.puts '💔 传入的修改目标版本号为空,无法设置版本号'.yellow
111
+ return
93
112
  end
94
-
95
- def self.inputNeedJumpForReson(str)
96
- if ARGV.include? '--silent'
97
- return false
98
- end
99
-
100
- puts str.green
101
- puts '是(Y), 任意其他输入或直接回车跳过'.green
102
- input = STDIN.gets
103
- if input[0,1] == "Y"
104
- return true
105
- else
106
- return false
107
- end
108
- end
109
-
110
- def self.changeVersionInCocoapods(name, newVersion)
111
- if (newVersion == nil)
112
- Pod::UI.puts "💔 传入的修改目标版本号为空,无法设置版本号".yellow
113
- return
114
- end
115
- newVersion = get_pure_version(newVersion)
116
- specName = name + ".podspec"
117
- FileProcesserManager.new(specName,
118
- [
119
- FileProcesser.new(-> (fileContent) {
120
- return fileContent.gsub(/(\.version *= *')(.*')/, "\\1" + newVersion + "'")
121
- })
122
- ]).process()
123
- `git add #{specName}
113
+ newVersion = get_pure_version(newVersion)
114
+ specName = name + '.podspec'
115
+ FileProcesserManager.new(specName,
116
+ [
117
+ FileProcesser.new(lambda { |fileContent|
118
+ return fileContent.gsub(/(\.version *= *')(.*')/,
119
+ '\\1' + newVersion + "'")
120
+ }),
121
+ FileProcesser.new(lambda { |fileContent|
122
+ return fileContent.gsub(/(\.version *= *")(.*")/,
123
+ '\\1' + newVersion + '"')
124
+ })
125
+ ]).process
126
+ `git add #{specName}
124
127
  git commit -m "Mod: 修改版本号为:#{newVersion} by cocoapods_dev_env plugin"`
125
- end
128
+ end
126
129
 
127
- def self.get_pure_version(version)
128
- return version.split.last.scan(/\d+/).join('.')
129
- end
130
+ def self.get_pure_version(version)
131
+ version.split.last.scan(/\d+/).join('.')
132
+ end
130
133
  end
131
134
 
132
-
133
- class Podfile
134
-
135
+ module Pod
136
+ class Podfile
135
137
  class TargetDefinition
138
+ def getReposStrForLint
139
+ return '' if podfile.sources.size == 0
136
140
 
137
- def getReposStrForLint()
138
- if podfile.sources.size == 0
139
- return ""
140
- end
141
- str = " --sources="
142
- podfile.sources.each do |source|
143
- str += source
144
- str += ","
145
- end
146
- Pod::UI.puts str
147
- return str
148
- end
149
-
150
- def getUserRepoAddress()
151
- if podfile.sources.size == 0
152
- raise "💔 发布release必须配置仓库的地址, e.g.: source 'https://github.com/CocoaPods/Specs.git'"
153
- end
154
- index = nil
155
- begin
156
- Pod::UI.puts "\n\n⌨️ 请输入要发布到的cocoapods仓库序号, 按回车确认: ".yellow
157
- num = 1
158
- podfile.sources.each do |source|
159
- Pod::UI.puts "#{num.to_s.yellow}. #{source.green}"
160
- num += 1
161
- end
162
- index = STDIN.gets.to_i - 1
163
- end until (index >= 0 && index < podfile.sources.size)
164
- source = podfile.sources[index]
165
- Pod::UI.puts "#{"选择了发布到: ".yellow}. #{source.green}(#{index + 1})"
166
- return source
141
+ str = ' --sources='
142
+ podfile.sources.each do |source|
143
+ str += source
144
+ str += ','
167
145
  end
146
+ Pod::UI.puts str
147
+ str
148
+ end
149
+
150
+ def getUserRepoAddress
151
+ raise "💔 发布release必须配置仓库的地址, e.g.: source 'https://github.com/CocoaPods/Specs.git'" if podfile.sources.size == 0
152
+
153
+ index = nil
154
+ begin
155
+ Pod::UI.puts "\n\n⌨️ 请输入要发布到的cocoapods仓库序号, 按回车确认: ".yellow
156
+ num = 1
157
+ podfile.sources.each do |source|
158
+ Pod::UI.puts "#{num.to_s.yellow}. #{source.green}"
159
+ num += 1
160
+ end
161
+ index = STDIN.gets.to_i - 1
162
+ end until (index >= 0 && index < podfile.sources.size)
163
+ source = podfile.sources[index]
164
+ Pod::UI.puts "#{'选择了发布到: '.yellow}. #{source.green}(#{index + 1})"
165
+ source
166
+ end
168
167
  end
168
+ end
169
169
  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.1.9
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - 吴锡苗
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2022-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: luna-binary-uploader