cocoapods-tag 0.0.4 → 0.0.7

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: ab723fa1e07606d3664af7a1ec85aacd255a2782722be6c733d727f86f1e47d9
4
- data.tar.gz: eefc4e3111d15c9504ca69e894aff85a76ba8531aff01028fdb52f75e1068173
3
+ metadata.gz: a72f4e68daa2d911dd619108de273824072102bcf41474da0744952efb9f481f
4
+ data.tar.gz: 5aaf617407f0136aca11b65d8e9aff5d59c3ee3775f63f7bebff40ebaadbc7ab
5
5
  SHA512:
6
- metadata.gz: 8f7a3e6579264821c391fcd54a23fd5a9fea86ce3344b176a951825578d57a3a52b5b5c9e085b1e879bde0511f4d29c5fdcb82bb9001bf6cc6689fac1e1d1092
7
- data.tar.gz: a282fea1a342b38eea54357ac0967910bf8a428dceae26b77a0616198a066b660baf339ac4d3ca1ef2599f0c81302c568039797e05fcff426fc4ee46be0c991e
6
+ metadata.gz: 578caf1cdb4c0954091e2ae9ed3a1f0974bed2daca2860b2edac05f1c1d887573c7ee1344c9a918fc84b6f30e9527b57fd218c5b31cd1b12b63ea25a8f7fc521
7
+ data.tar.gz: e2229325f9eb5a15b0c6b7a18f838efe7ad9abd7a59451673d6281d0ba7a9f3e008dc191245d2ee3be37a07fdf9f657928a9aa8bd5a0e69e2b715db19c240664
data/README.md CHANGED
@@ -53,7 +53,7 @@ $ gem install cocoapods-tag
53
53
  $ pod tag 0.1.7 "修改podspec版本号为0.1.7" --work-dir=xxx
54
54
  ```
55
55
 
56
- * 为tag添加前后缀**(前后缀与版本号中间会自动用`-`分隔,不需要手动添加)**
56
+ * 为tag添加前后缀 **(前后缀与版本号中间会自动用`-`分隔,不需要手动添加)**
57
57
 
58
58
  以下面这行命令为例,`podspec`中的`version`为`0.1.7`,`source`字段中的`tag`为`mtxx-0.1.7-beta1`,最终推送到远端仓库的`tag`也是`mtxx-0.1.7-beta1`
59
59
 
@@ -41,6 +41,7 @@ DESC
41
41
  def self.options
42
42
  [
43
43
  ['--quick', '跳过一些耗时校验,如:远端仓库是否已经有该tag'],
44
+ ['--skip-push-commit', '跳过推送commit到对应分支'],
44
45
  ['--remote=REMOTE', '指定tag推送到的远端仓库,可以通过`git remote -v`查看'],
45
46
  ['--spec-repo=SPECREPO', 'podspec推送到的repo,可以通过`pod repo list`查看'],
46
47
  ['--work-dir=WORKDIR', '执行命令的工作区'],
@@ -54,6 +55,7 @@ DESC
54
55
  @commit_msg = argv.shift_argument
55
56
  @tag_msg = argv.shift_argument
56
57
  @quick = argv.flag?('quick', false)
58
+ @skip_push_commit = argv.flag?('skip-push-commit', false)
57
59
  @remote = argv.option('remote', false)
58
60
  @spec_repo = argv.option('spec-repo', nil)
59
61
  @work_dir = argv.option('work-dir', nil)
@@ -75,7 +77,7 @@ DESC
75
77
  raise Informative, "不存在工作目录`#{@work_dir}`" unless File.exist?(@work_dir)
76
78
  Dir.chdir(@work_dir)
77
79
  end
78
- tag = Pod::Tag.new(@version, @tag, @commit_msg, @tag_msg, @spec_repo, @quick, @remote)
80
+ tag = Pod::Tag.new(@version, @tag, @commit_msg, @tag_msg, @spec_repo, @quick, @remote, @skip_push_commit)
79
81
  tag.create
80
82
  end
81
83
 
@@ -0,0 +1,77 @@
1
+
2
+ module Pod
3
+ class Command
4
+ class Tag < Command
5
+ class RepoList < Tag
6
+ include Pod
7
+
8
+ self.summary = '打印本地的 podspec 仓库'
9
+
10
+ self.description = <<-DESC
11
+ #{self.summary}
12
+ DESC
13
+
14
+ def self.options
15
+ [
16
+ ['--format=FORMAT', '输出结果格式化,可选项为`json/yml(yaml)/plain`'],
17
+ ].concat(super)
18
+ end
19
+
20
+ def initialize(argv)
21
+ @format = argv.option('format', 'plain')
22
+ super
23
+ end
24
+
25
+ def run
26
+ @sources = config.sources_manager.all
27
+ if @format == 'json'
28
+ print_json
29
+ elsif @format == 'yml' || @format == 'yaml'
30
+ print_yml
31
+ else
32
+ print_plain
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def print_json
39
+ require 'json'
40
+ UI.puts JSON.pretty_generate(sources)
41
+ end
42
+
43
+ def print_yml
44
+ require 'yaml'
45
+ UI.puts sources.to_yaml
46
+ end
47
+
48
+ def print_plain
49
+ list = Pod::Command::Repo::List.new(CLAide::ARGV.new([]))
50
+ list.validate!
51
+ list.run
52
+ end
53
+
54
+ def sources
55
+ result = []
56
+ @sources.each do |source|
57
+ type = source.type
58
+ if source.is_a?(Pod::CDNSource)
59
+ type = 'CDN'
60
+ elsif source.git?
61
+ type = 'git'
62
+ end
63
+ source_hash = {
64
+ 'name' => source.name,
65
+ 'url' => source.url,
66
+ 'path' => source.repo.to_s,
67
+ 'type' => type
68
+ }
69
+ result << source_hash
70
+ end
71
+ result
72
+ end
73
+
74
+ end
75
+ end
76
+ end
77
+ end
@@ -1,6 +1,7 @@
1
1
  require 'cocoapods-tag/command/tag/auto'
2
2
  # require 'cocoapods-tag/command/tag/create'
3
3
  require 'cocoapods-tag/command/tag/spec_push'
4
+ require 'cocoapods-tag/command/tag/repo_list'
4
5
 
5
6
  module Pod
6
7
  class Command
@@ -1,3 +1,3 @@
1
1
  module CocoapodsTag
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -8,7 +8,7 @@ module Pod
8
8
  GIT_REPO = ".git".freeze
9
9
  PODSPEC_EXT = %w[podspec podspec.json].freeze
10
10
 
11
- def initialize(version, tag, commit_msg, tag_msg, spec_repo = nil, quick = false, remote_name = nil)
11
+ def initialize(version, tag, commit_msg, tag_msg, spec_repo = nil, quick = false, remote_name = nil, skip_push_commit = false )
12
12
  @version = version || raise(Informative, "缺少必填参数`version`")
13
13
  @tag = tag || raise(Informative, "缺少必填参数`tag`")
14
14
  @commit_msg = commit_msg || raise(Informative, "缺少必填参数`commit_msg`")
@@ -16,6 +16,7 @@ module Pod
16
16
  @spec_repo = spec_repo
17
17
  @quick = quick
18
18
  @remote = remote_name
19
+ @skip_push_commit = skip_push_commit
19
20
  end
20
21
 
21
22
  public
@@ -28,7 +29,7 @@ module Pod
28
29
  # 正则校验版本号
29
30
  check_version
30
31
  # 检查本地是否有 spec_repo
31
- check_spec_repo if @spec_repo
32
+ # check_spec_repo if @spec_repo
32
33
  # 检查 git repo
33
34
  check_git_repo
34
35
  # 加载 podspec
@@ -97,28 +98,44 @@ module Pod
97
98
  # 是否与远端仓库关联
98
99
  raise Informative, "本地git仓库没有与远端仓库关联,请先使用`git remote add`关联远端仓库" if remote.nil?
99
100
 
100
- unless @quick
101
- # 校验本地 git 是否与远端仓库同步
102
- print "\n检查本地git仓库是否与远端仓库同步\n".yellow
103
- local_commit = `git rev-parse #{remote}/HEAD`.chomp
104
- remote_commit = `git ls-remote --head #{remote} #{current_branch}`.split("\t")[0]
105
- unless local_commit == remote_commit
106
- msg = <<-MSG
107
- 本地git仓库没有与远端仓库同步,请先执行以下操作:
108
- 1.`git pull`或`git fetch + git rebase`拉取最新代码
109
- 2.`git push`推送本地仓库commit
110
- MSG
111
- raise Informative, msg
112
- end
101
+ # 是否处于 detached 状态
102
+ raise Informative, "当前处于detached状态,请先切到分支再进行操作" if current_branch == "HEAD"
113
103
 
104
+ # # 是否有未提交的改动
105
+ # raise Informative, "本地有未提交的改动,请先提交或暂存" unless `git status --porcelain`.split("\n").empty?
106
+
107
+ unless @quick
114
108
  # 检查本地是否已经有该 tag
115
109
  print "\n检查本地仓库是否有tag:`#{@tag}`\n".yellow
116
- raise Informative, "本地已经存在tag:#{@tag}" if `git tag`.split("\n").include?(@tag)
110
+ raise Informative, "本地仓库已经存在tag:#{@tag}" if `git tag`.split("\n").include?(@tag)
117
111
 
118
112
  # 判断远端是否已经有该 tag
119
113
  print "\n检查远端仓库是否有tag:`#{@tag}`\n".yellow
120
114
  tags = `git ls-remote --tags #{remote}`.split("\n").select { |tag| tag.include?("refs/tags/#{@tag}") }
121
- raise Informative, "远端仓库已经有该tag:#{@tag}" unless tags.empty?
115
+ raise Informative, "远端仓库已经有tag:#{@tag}" unless tags.empty?
116
+
117
+ # 校验本地 git 是否与远端仓库同步
118
+ print "\n检查本地git仓库是否与远端仓库同步\n".yellow
119
+ `git fetch #{remote}`
120
+ remote_br = `git rev-parse --abbrev-ref #{current_branch}@{u}`
121
+ unless remote_br == ''
122
+ remote_commit_count = `git rev-list --right-only --count #{current_branch}...#{remote_br}`.chomp.to_i
123
+ local_commit_count = `git rev-list --left-only --count #{current_branch}...#{remote_br}`.chomp.to_i
124
+ # 本地落后远端
125
+ unless remote_commit_count == 0
126
+ msg = <<-MSG
127
+ 本地git仓库落后于远端仓库`#{remote_commit_count}`个提交
128
+ 请先执行`git pull`或`git fetch #{remote} + git rebase #{remote_br}`拉取最新代码
129
+ MSG
130
+ raise Informative, msg
131
+ end
132
+
133
+ # 本地有未 push 的 commit
134
+ unless local_commit_count == 0
135
+ msg = "本地git仓库有`#{local_commit_count}`个commit未提交,请先执行`git push`提交"
136
+ raise Informative, msg
137
+ end
138
+ end
122
139
  end
123
140
 
124
141
  end
@@ -140,6 +157,10 @@ module Pod
140
157
  if source['git'] && source['git'].strip == ''
141
158
  raise Informative, "source中git字段不能为空"
142
159
  end
160
+ # git字段只能是ssh
161
+ if source['git'] && source['git'] =~ /^(http|https)/
162
+ raise Informative, "source中git字段不能是http或https,只能是ssh"
163
+ end
143
164
  end
144
165
 
145
166
  # 修改podspec
@@ -161,8 +182,8 @@ module Pod
161
182
  def modify_podspec_ruby(file)
162
183
  org_source = @spec_hash['source']
163
184
  des_source = "{ :git => '#{org_source['git']}', :tag => '#{@tag}' }"
164
- File.open(file, 'r') do |f|
165
- lines = []
185
+ lines = []
186
+ File.open(file, 'r:utf-8') do |f|
166
187
  f.each_line do |line|
167
188
  if line =~ /(^\s*.+\.version\s*=\s*).*/
168
189
  line = line.sub(/(^\s*.+\.version\s*=\s*).*/, "#{$1}'#{@version}'")
@@ -172,9 +193,9 @@ module Pod
172
193
  end
173
194
  lines << line
174
195
  end
175
- File.open(file, 'w') do |f|
176
- f.write(lines.join(""))
177
- end
196
+ end
197
+ File.open(file, 'w:utf-8') do |f|
198
+ f.write(lines.join(""))
178
199
  end
179
200
  end
180
201
 
@@ -185,7 +206,7 @@ module Pod
185
206
  'git'=> @spec_hash['source']['git'],
186
207
  'tag'=> "#{@tag}"
187
208
  }
188
- File.open(file, 'w') do |f|
209
+ File.open(file, 'w:utf-8') do |f|
189
210
  f.write(@spec_hash)
190
211
  end
191
212
  end
@@ -196,7 +217,7 @@ module Pod
196
217
  begin
197
218
  `git add #{podspec}`
198
219
  `git commit -m "#{@commit_msg}"`
199
- `git push #{remote} #{current_branch}`
220
+ `git push #{remote} #{current_branch}` unless @skip_push_commit
200
221
  rescue Pod::StandardError => e
201
222
  @error = e
202
223
  print "推送commit到远端git仓库`#{remote}/#{current_branch}`失败:#{e}".red
@@ -249,7 +270,7 @@ module Pod
249
270
  # 获取当前分支
250
271
  def current_branch
251
272
  @current_branch ||= begin
252
- `git branch`.split(' ')[1]
273
+ `git rev-parse --abbrev-ref HEAD`.chomp
253
274
  end
254
275
  end
255
276
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-12 00:00:00.000000000 Z
11
+ date: 2022-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -66,6 +66,7 @@ files:
66
66
  - lib/cocoapods-tag/command/tag.rb
67
67
  - lib/cocoapods-tag/command/tag/auto.rb
68
68
  - lib/cocoapods-tag/command/tag/create.rb
69
+ - lib/cocoapods-tag/command/tag/repo_list.rb
69
70
  - lib/cocoapods-tag/command/tag/spec_push.rb
70
71
  - lib/cocoapods-tag/gem_version.rb
71
72
  - lib/cocoapods-tag/helper/asker.rb