bigkeeper 0.9.9 → 0.9.10

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
- SHA256:
3
- metadata.gz: 212d55ed7b40a20cb064b7e44aec4d64f626f544cf58317a5e7282fdc6997c21
4
- data.tar.gz: a70529b65ad54fab0c0095e72cfc4b99cfae34523ccf47dce639a704d5c12046
2
+ SHA1:
3
+ metadata.gz: cf22bc9b9d70faf0f43bd27e47961d18dad8355a
4
+ data.tar.gz: 173dbc4a58a0a68bb6acd7347356e7c3ecac30a1
5
5
  SHA512:
6
- metadata.gz: e3e6bd0cfe8f8addaa70d46481ee4e29ebae75f39e4fc7986d18ee566f2f7a1db5f1fd3d1599d6df9a3ed6512e9ba54cc8fb84ea5245fbf4ad5e5c7e68b8237b
7
- data.tar.gz: 981001593e44d3bbf4e1e787c389c85f54816b9ae6e88ffaa433a84a37a73612a8234d64fcf0cf0ccad9d9a37b010827f666fb02f7ebc7bb0493463af25cfb67
6
+ metadata.gz: 1190f2647d435bd6e079d0b7b24ff9a97136f2f96dd93e690d513b6de7273c8602c2331a9370c9d11585a1ca8bd831414541ca52c78cc7962aea1fe5df732f94
7
+ data.tar.gz: 4ec0c705ac99fe65082ca443eda32beb12d7d704c1d272323e0af8b4a45a691f61d52ac6ad22e26778cb253fefd89f0fd433c6beb89d29b565d113b9d063dc43
data/bin/big CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
3
+ # require "bundler/setup"
4
4
  require "big_keeper"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
@@ -1,12 +1,37 @@
1
1
  require 'big_keeper/command/release/home'
2
2
  require 'big_keeper/command/release/module'
3
3
  require 'big_keeper/util/leancloud_logger'
4
+ require 'big_keeper/command/release/start'
5
+ require 'big_keeper/command/release/finish'
6
+ require 'big_keeper/util/command_line_util'
4
7
 
5
8
  module BigKeeper
6
9
  def self.release_command
7
10
  desc 'Gitflow release operations'
8
11
  command :release do |c|
9
12
 
13
+ c.desc 'release project start'
14
+ c.command :start do |start|
15
+ start.action do |global_options, options, args|
16
+ path = File.expand_path(global_options[:path])
17
+ version = global_options[:ver]
18
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
19
+ modules = args[(0...args.length)] if args.length > 0
20
+ release_start(path, version, user, modules)
21
+ end
22
+ end
23
+
24
+ c.desc 'release project finish'
25
+ c.command :finish do |finish|
26
+ finish.action do |global_options, options, args|
27
+ path = File.expand_path(global_options[:path])
28
+ version = global_options[:ver]
29
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
30
+ modules = args[(0...args.length)] if args.length > 0
31
+ release_finish(path, version, user, modules)
32
+ end
33
+ end
34
+
10
35
  c.desc 'Release home project operations'
11
36
  c.command :home do |home|
12
37
  home.desc 'Start release home project'
@@ -0,0 +1,36 @@
1
+ module BigKeeper
2
+ def self.release_finish(path, version, user, modules)
3
+ BigkeeperParser.parse("#{path}/Bigkeeper")
4
+ version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
5
+ modules = release_check_changed_modules(path, user) if (modules.nil? || modules.empty?)
6
+
7
+ if modules.nil? || modules.empty?
8
+ Logger.error('no module need to release')
9
+ end
10
+ if !CommandLineUtil.double_check("module #{modules} will changed version to #{version}, are you sure?")
11
+ Logger.error('release finish interrupt')
12
+ end
13
+ #stash home
14
+ StashService.new.stash(path, GitOperator.new.current_branch(path), 'home')
15
+ # delete cache
16
+ CacheOperator.new(path).clean()
17
+ # checkout develop
18
+ GitService.new.verify_checkout_pull(path, 'develop')
19
+
20
+ modules.each do |module_name|
21
+ Logger.highlight("release start module #{module_name}")
22
+ ModuleService.new.release_finish(path, user, modules, module_name, version)
23
+ end
24
+
25
+ #release home
26
+ DepService.dep_operator(path, user).release_home_finish(modules, version)
27
+
28
+ # Push home changes to remote
29
+ Logger.highlight("Push branch 'develop' for 'Home'...")
30
+ GitService.new.verify_push(
31
+ path,
32
+ "release finish for #{version}",
33
+ 'develop',
34
+ 'Home')
35
+ end
36
+ end
@@ -0,0 +1,4 @@
1
+ module BigKeeper
2
+ def self.publish(path, version, user)
3
+ end
4
+ end
@@ -0,0 +1,78 @@
1
+ module BigKeeper
2
+ def self.release_start(path, version, user, modules)
3
+ BigkeeperParser.parse("#{path}/Bigkeeper")
4
+ version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
5
+ modules = release_check_changed_modules(path, user) if (modules.nil? || modules.empty?)
6
+
7
+ if modules.nil? || modules.empty?
8
+ Logger.error('no module need to release')
9
+ end
10
+
11
+ if !CommandLineUtil.double_check("module #{modules} will changed version to #{version}-SNAPSHOT, are you sure?")
12
+ Logger.error('release start interrupt')
13
+ end
14
+
15
+ #stash home
16
+ StashService.new.stash(path, GitOperator.new.current_branch(path), 'home')
17
+ # delete cache
18
+ CacheOperator.new(path).clean()
19
+ # checkout develop
20
+ GitService.new.verify_checkout_pull(path, 'develop')
21
+
22
+ modules.each do |module_name|
23
+ Logger.highlight("release start module #{module_name}")
24
+ ModuleService.new.release_start(path, user, modules, module_name, version)
25
+ end
26
+
27
+ #release home
28
+ DepService.dep_operator(path, user).release_home_start(modules, version)
29
+
30
+ # Push home changes to remote
31
+ Logger.highlight("Push branch 'develop' for 'Home'...")
32
+ GitService.new.verify_push(
33
+ path,
34
+ "release start for #{version}",
35
+ 'develop',
36
+ 'Home')
37
+ end
38
+
39
+ def self.release_finish(path, version, user, modules)
40
+ BigkeeperParser.parse("#{path}/Bigkeeper")
41
+ version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
42
+
43
+ #stash home
44
+ StashService.new.stash(path, GitOperator.new.current_branch(path), 'home')
45
+ # delete cache
46
+ CacheOperator.new(path).clean()
47
+ # checkout develop
48
+ GitService.new.verify_checkout_pull(path, 'develop')
49
+
50
+ modules.each do |module_name|
51
+ Logger.highlight("release start module #{module_name}")
52
+ ModuleService.new.release_finish(path, user, modules, module_name, version)
53
+ end
54
+
55
+ #release home
56
+ DepService.dep_operator(path, user).release_home_finish(modules, version)
57
+
58
+ # Push home changes to remote
59
+ Logger.highlight("Push branch 'develop' for 'Home'...")
60
+ GitService.new.verify_push(
61
+ path,
62
+ "release finish for #{version}",
63
+ 'develop',
64
+ 'Home')
65
+ end
66
+
67
+ def self.release_check_changed_modules(path, user)
68
+ changed_modules = []
69
+ BigkeeperParser.parse("#{path}/Bigkeeper")
70
+ allModules = BigkeeperParser.module_names
71
+ allModules.each do |module_name|
72
+ if ModuleService.new.release_check_changed(path, user, module_name)
73
+ changed_modules << module_name
74
+ end
75
+ end
76
+ changed_modules
77
+ end
78
+ end
@@ -2,6 +2,7 @@ require 'big_keeper/dependency/dep_operator'
2
2
  require 'big_keeper/util/gradle_module_operator'
3
3
  require 'big_keeper/util/gradle_file_operator'
4
4
  require 'big_keeper/model/operate_type'
5
+ require 'big_keeper/util/version_config_operator'
5
6
 
6
7
  module BigKeeper
7
8
  # Operator for podfile
@@ -43,6 +44,30 @@ module BigKeeper
43
44
  end
44
45
  end
45
46
 
47
+ def release_module_start(modules, module_name, version)
48
+ module_full_path = BigkeeperParser.module_full_path(@path, @user, module_name)
49
+ version_config_file = "#{module_full_path}/doc/config/version-config.gradle"
50
+ version = "#{version}-SNAPSHOT" unless version.include?'SNAPSHOT'
51
+ VersionConfigOperator.change_version(version_config_file, modules, version)
52
+ end
53
+
54
+ def release_module_finish(modules, module_name, version)
55
+ module_full_path = BigkeeperParser.module_full_path(@path, @user, module_name)
56
+ version_config_file = "#{module_full_path}/doc/config/version-config.gradle"
57
+ VersionConfigOperator.change_version(version_config_file, modules, version)
58
+ end
59
+
60
+ def release_home_start(modules, version)
61
+ version_config_file = "#{@path}/doc/config/version-config.gradle"
62
+ version = "#{version}-SNAPSHOT" unless version.include?'SNAPSHOT'
63
+ VersionConfigOperator.change_version(version_config_file, modules, version)
64
+ end
65
+
66
+ def release_home_finish(modules, version)
67
+ version_config_file = "#{@path}/doc/config/version-config.gradle"
68
+ VersionConfigOperator.change_version(version_config_file, modules, version)
69
+ end
70
+
46
71
  def open
47
72
  end
48
73
  end
@@ -21,6 +21,22 @@ module BigKeeper
21
21
  raise "You should override this method in subclass."
22
22
  end
23
23
 
24
+ def release_module_start(modules, module_name, version)
25
+ raise "You should override this method in subclass."
26
+ end
27
+
28
+ def release_module_finish(modules, module_name, version)
29
+ raise "You should override this method in subclass."
30
+ end
31
+
32
+ def release_home_start(modules, version)
33
+ raise "You should override this method in subclass."
34
+ end
35
+
36
+ def release_home_finish(modules, version)
37
+ raise "You should override this method in subclass."
38
+ end
39
+
24
40
  def install(modules, type, should_update)
25
41
  raise "You should override this method in subclass."
26
42
  end
@@ -154,6 +154,71 @@ module BigKeeper
154
154
  result_dic
155
155
  end
156
156
 
157
+ def release_check_changed(path, user, module_name)
158
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
159
+
160
+ git = GitOperator.new
161
+ if !File.exist? module_full_path
162
+ Logger.default("No local repository for module '#{module_name}', clone it...")
163
+ module_git = BigkeeperParser.module_git(module_name)
164
+ git.clone(File.expand_path("#{module_full_path}/../"), module_git)
165
+ end
166
+ GitService.new.verify_checkout_pull(module_full_path, 'develop')
167
+ git.check_remote_branch_diff(module_full_path, 'develop', 'master')
168
+ end
169
+
170
+ def release_start(path, user, modules, module_name, version)
171
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
172
+
173
+ git = GitOperator.new
174
+ if !File.exist? module_full_path
175
+ Logger.default("No local repository for module '#{module_name}', clone it...")
176
+ module_git = BigkeeperParser.module_git(module_name)
177
+ git.clone(File.expand_path("#{module_full_path}/../"), module_git)
178
+ end
179
+ #stash module
180
+ StashService.new.stash(module_full_path, GitOperator.new.current_branch(module_full_path), module_name)
181
+ # delete cache
182
+ CacheOperator.new(module_full_path).clean()
183
+ # checkout develop
184
+ GitService.new.verify_checkout_pull(module_full_path, 'develop')
185
+ DepService.dep_operator(path, user).release_module_start(modules, module_name, version)
186
+
187
+ # Push home changes to remote
188
+ Logger.highlight("Push branch 'develop' for #{module_name}...")
189
+ GitService.new.verify_push(
190
+ module_full_path,
191
+ "release start for #{version}",
192
+ 'develop',
193
+ "#{module_name}")
194
+ end
195
+
196
+ def release_finish(path, user, modules, module_name, version)
197
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
198
+
199
+ git = GitOperator.new
200
+ if !File.exist? module_full_path
201
+ Logger.default("No local repository for module '#{module_name}', clone it...")
202
+ module_git = BigkeeperParser.module_git(module_name)
203
+ git.clone(File.expand_path("#{module_full_path}/../"), module_git)
204
+ end
205
+ #stash module
206
+ StashService.new.stash(module_full_path, GitOperator.new.current_branch(module_full_path), module_name)
207
+ # delete cache
208
+ CacheOperator.new(module_full_path).clean()
209
+ # checkout develop
210
+ GitService.new.verify_checkout_pull(module_full_path, 'develop')
211
+ DepService.dep_operator(path, user).release_module_finish(modules, module_name, version)
212
+
213
+ # Push home changes to remote
214
+ Logger.highlight("Push branch 'develop' for #{module_name}...")
215
+ GitService.new.verify_push(
216
+ module_full_path,
217
+ "release finish for #{version}",
218
+ 'develop',
219
+ "#{module_name}")
220
+ end
221
+
157
222
  private :verify_module
158
223
  end
159
224
  end
@@ -231,6 +231,10 @@ module BigKeeper
231
231
  @@config[:modules][module_name][:maven_artifact]
232
232
  end
233
233
 
234
+ def self.module_version_alias(module_name)
235
+ @@config[:modules][module_name][:version_alias]
236
+ end
237
+
234
238
  def self.module_pulls(module_name)
235
239
  @@config[:modules][module_name][:pulls]
236
240
  end
@@ -0,0 +1,9 @@
1
+ module BigKeeper
2
+ class CommandLineUtil
3
+ def self.double_check(tips)
4
+ Logger.highlight("#{tips} (y/n)")
5
+ input = STDIN.gets().chop
6
+ input.eql?('y')
7
+ end
8
+ end
9
+ end
@@ -181,6 +181,22 @@ module BigKeeper
181
181
  end
182
182
  end
183
183
 
184
+ def check_remote_branch_diff(path, branch, compare_branch)
185
+ fetch(path)
186
+ compare_branch_commits = Array.new
187
+ IO.popen("cd '#{path}';git log --left-right #{branch}...origin/#{compare_branch} --pretty=oneline") do |io|
188
+ io.each do |line|
189
+ compare_branch_commits.push(line) unless (line.include? '>') && (line.include? "Merge branch \'#{branch}\' into \'#{compare_branch}\'")
190
+ end
191
+ end
192
+ if compare_branch_commits.size > 0
193
+ return true
194
+ else
195
+ return false
196
+ end
197
+ end
198
+
199
+ # TODO: 需要改造,util方法不应该有业务逻辑
184
200
  def check_diff(path, branch, compare_branch)
185
201
  compare_branch_commits = Array.new
186
202
  IO.popen("cd '#{path}'; git log --left-right #{branch}...#{compare_branch} --pretty=oneline") do |io|
@@ -286,6 +286,7 @@ module BigKeeper
286
286
  version_name = branch_name.sub(/([\s\S]*)\/(\d+.\d+.\d+)_([\s\S]*)/){ $2 }
287
287
  else
288
288
  version_name = branch_name.sub(/([\s\S]*)\/([\s\S]*)/){ $2 }
289
+ version_name = version_name.gsub('_', '-')
289
290
  end
290
291
  version_name
291
292
  end
@@ -59,6 +59,7 @@ module BigKeeper
59
59
  version_name = ''
60
60
  if ModuleOperateType::ADD == module_operate_type
61
61
  version_name = branch_name.sub(/([\s\S]*)\/([\s\S]*)/){ $2 }
62
+ version_name = version_name.gsub('_', '-')
62
63
  elsif ModuleOperateType::FINISH == module_operate_type
63
64
  version_name = branch_name.sub(/([\s\S]*)\/(\d+.\d+.\d+)_([\s\S]*)/){ $2 }
64
65
  end
@@ -0,0 +1,29 @@
1
+ module BigKeeper
2
+ class VersionConfigOperator
3
+ def self.change_version(version_config_file, modules, version)
4
+ temp_file = Tempfile.new('.version-config.gradle.tmp')
5
+ begin
6
+ File.open(version_config_file, 'r') do |file|
7
+ file.each_line do |line|
8
+ temp_file.puts(replace_module_version(line, modules, version))
9
+ end
10
+ end
11
+ temp_file.close
12
+ FileUtils.mv(temp_file.path, version_config_file)
13
+ ensure
14
+ temp_file.close
15
+ temp_file.unlink
16
+ end
17
+ end
18
+
19
+ def self.replace_module_version(line, modules, version)
20
+ modules.each do |module_name|
21
+ version_alias = BigkeeperParser.module_version_alias(module_name)
22
+ if !version_alias.nil? && !version_alias.empty? && line.match(/\s*#{version_alias}\s*=\s*('|")([\s\S]*)('|")\s*/)
23
+ return line.sub(/(\s*#{version_alias}\s*=\s*)('|")([\s\S]*)('|")\s*/){"#{$1}\'#{version}\'"}
24
+ end
25
+ end
26
+ line
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module BigKeeper
2
- VERSION = "0.9.9"
2
+ VERSION = "0.9.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - mmoaay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-27 00:00:00.000000000 Z
11
+ date: 2019-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -271,8 +271,11 @@ files:
271
271
  - lib/big_keeper/command/pod.rb
272
272
  - lib/big_keeper/command/pod/podfile.rb
273
273
  - lib/big_keeper/command/release.rb
274
+ - lib/big_keeper/command/release/finish.rb
274
275
  - lib/big_keeper/command/release/home.rb
275
276
  - lib/big_keeper/command/release/module.rb
277
+ - lib/big_keeper/command/release/publish.rb
278
+ - lib/big_keeper/command/release/start.rb
276
279
  - lib/big_keeper/command/spec.rb
277
280
  - lib/big_keeper/command/spec/add.rb
278
281
  - lib/big_keeper/command/spec/analyze.rb
@@ -295,6 +298,7 @@ files:
295
298
  - lib/big_keeper/util/bigkeeper_parser.rb
296
299
  - lib/big_keeper/util/cache_operator.rb
297
300
  - lib/big_keeper/util/code_operator.rb
301
+ - lib/big_keeper/util/command_line_util.rb
298
302
  - lib/big_keeper/util/file_operator.rb
299
303
  - lib/big_keeper/util/git_operator.rb
300
304
  - lib/big_keeper/util/gitflow_operator.rb
@@ -311,6 +315,7 @@ files:
311
315
  - lib/big_keeper/util/podfile_module.rb
312
316
  - lib/big_keeper/util/podfile_operator.rb
313
317
  - lib/big_keeper/util/verify_operator.rb
318
+ - lib/big_keeper/util/version_config_operator.rb
314
319
  - lib/big_keeper/util/xcode_operator.rb
315
320
  - lib/big_keeper/version.rb
316
321
  - resources/banner.png
@@ -342,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
347
  version: '0'
343
348
  requirements: []
344
349
  rubyforge_project:
345
- rubygems_version: 2.7.6
350
+ rubygems_version: 2.5.2.3
346
351
  signing_key:
347
352
  specification_version: 4
348
353
  summary: Efficiency improvement for iOS&Android modular development.