cocoapods-dev-env 2.1.9 → 2.2.4

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 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