kookeeper 1.0.0

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.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE.md +20 -0
  3. data/.gitignore +50 -0
  4. data/.travis.yml +19 -0
  5. data/CODE_OF_CONDUCT.md +46 -0
  6. data/CONTRIBUTING.md +70 -0
  7. data/Gemfile +10 -0
  8. data/Gemfile.lock +125 -0
  9. data/LICENSE +21 -0
  10. data/README.md +113 -0
  11. data/Rakefile +2 -0
  12. data/big_keeper.gemspec +49 -0
  13. data/bin/big +14 -0
  14. data/bin/setup +8 -0
  15. data/docs/en-US/FEATURE.md +0 -0
  16. data/docs/en-US/README.md +54 -0
  17. data/docs/zh-CN/BIGKEEPER_FILE.md +84 -0
  18. data/docs/zh-CN/FEATURE&HOTFIX.md +88 -0
  19. data/docs/zh-CN/IMAGE.md +0 -0
  20. data/docs/zh-CN/PODFILE.md +43 -0
  21. data/docs/zh-CN/README.md +113 -0
  22. data/docs/zh-CN/RECOMMEND.md +22 -0
  23. data/docs/zh-CN/RELEASE.md +60 -0
  24. data/docs/zh-CN/SPEC.md +39 -0
  25. data/lib/big_keeper/command/client.rb +50 -0
  26. data/lib/big_keeper/command/feature&hotfix/delete.rb +40 -0
  27. data/lib/big_keeper/command/feature&hotfix/finish.rb +54 -0
  28. data/lib/big_keeper/command/feature&hotfix/list.rb +63 -0
  29. data/lib/big_keeper/command/feature&hotfix/publish.rb +56 -0
  30. data/lib/big_keeper/command/feature&hotfix/pull.rb +26 -0
  31. data/lib/big_keeper/command/feature&hotfix/push.rb +27 -0
  32. data/lib/big_keeper/command/feature&hotfix/rebase.rb +32 -0
  33. data/lib/big_keeper/command/feature&hotfix/start.rb +74 -0
  34. data/lib/big_keeper/command/feature&hotfix/switch.rb +46 -0
  35. data/lib/big_keeper/command/feature&hotfix/update.rb +66 -0
  36. data/lib/big_keeper/command/feature&hotfix.rb +167 -0
  37. data/lib/big_keeper/command/image/image.rb +0 -0
  38. data/lib/big_keeper/command/image.rb +28 -0
  39. data/lib/big_keeper/command/init.rb +36 -0
  40. data/lib/big_keeper/command/pod/podfile.rb +72 -0
  41. data/lib/big_keeper/command/pod.rb +55 -0
  42. data/lib/big_keeper/command/release/finish.rb +36 -0
  43. data/lib/big_keeper/command/release/home.rb +92 -0
  44. data/lib/big_keeper/command/release/module.rb +65 -0
  45. data/lib/big_keeper/command/release/publish.rb +4 -0
  46. data/lib/big_keeper/command/release/start.rb +78 -0
  47. data/lib/big_keeper/command/release.rb +100 -0
  48. data/lib/big_keeper/command/spec/add.rb +9 -0
  49. data/lib/big_keeper/command/spec/analyze.rb +88 -0
  50. data/lib/big_keeper/command/spec/delete.rb +9 -0
  51. data/lib/big_keeper/command/spec/list.rb +19 -0
  52. data/lib/big_keeper/command/spec/search.rb +9 -0
  53. data/lib/big_keeper/command/spec/sync.rb +12 -0
  54. data/lib/big_keeper/command/spec.rb +78 -0
  55. data/lib/big_keeper/dependency/dep_gradle_operator.rb +74 -0
  56. data/lib/big_keeper/dependency/dep_operator.rb +48 -0
  57. data/lib/big_keeper/dependency/dep_pod_operator.rb +130 -0
  58. data/lib/big_keeper/dependency/dep_service.rb +14 -0
  59. data/lib/big_keeper/dependency/dep_type.rb +33 -0
  60. data/lib/big_keeper/model/gitflow_type.rb +43 -0
  61. data/lib/big_keeper/model/library_model.rb +116 -0
  62. data/lib/big_keeper/model/operate_type.rb +30 -0
  63. data/lib/big_keeper/model/podfile_model.rb +33 -0
  64. data/lib/big_keeper/service/git_service.rb +211 -0
  65. data/lib/big_keeper/service/module_service.rb +224 -0
  66. data/lib/big_keeper/service/stash_service.rb +45 -0
  67. data/lib/big_keeper/util/bigkeeper_parser.rb +260 -0
  68. data/lib/big_keeper/util/cache_operator.rb +118 -0
  69. data/lib/big_keeper/util/code_operator.rb +37 -0
  70. data/lib/big_keeper/util/command_line_util.rb +9 -0
  71. data/lib/big_keeper/util/file_operator.rb +33 -0
  72. data/lib/big_keeper/util/git_operator.rb +242 -0
  73. data/lib/big_keeper/util/gitflow_operator.rb +51 -0
  74. data/lib/big_keeper/util/gradle_content_generator.rb +26 -0
  75. data/lib/big_keeper/util/gradle_file_operator.rb +339 -0
  76. data/lib/big_keeper/util/gradle_module_operator.rb +70 -0
  77. data/lib/big_keeper/util/info_plist_operator.rb +46 -0
  78. data/lib/big_keeper/util/leancloud_logger.rb +84 -0
  79. data/lib/big_keeper/util/list_generator.rb +101 -0
  80. data/lib/big_keeper/util/lockfile_parser.rb +143 -0
  81. data/lib/big_keeper/util/logger.rb +47 -0
  82. data/lib/big_keeper/util/pod_operator.rb +70 -0
  83. data/lib/big_keeper/util/podfile_detector.rb +102 -0
  84. data/lib/big_keeper/util/podfile_module.rb +63 -0
  85. data/lib/big_keeper/util/podfile_operator.rb +125 -0
  86. data/lib/big_keeper/util/verify_operator.rb +17 -0
  87. data/lib/big_keeper/util/version_config_operator.rb +29 -0
  88. data/lib/big_keeper/util/xcode_operator.rb +15 -0
  89. data/lib/big_keeper/version.rb +3 -0
  90. data/lib/big_keeper.rb +81 -0
  91. data/resources/banner.png +0 -0
  92. data/resources/command.png +0 -0
  93. data/resources/keynote/big-keeper-readme-analyze.key +0 -0
  94. data/resources/keynote/big-keeper-readme-example.key +0 -0
  95. data/resources/keynote/big-keeper-readme-feature.key +0 -0
  96. data/resources/keynote/big-keeper-readme-release.key +0 -0
  97. data/resources/readme/big-keeper-readme.001.png +0 -0
  98. data/resources/template/Bigkeeper +23 -0
  99. metadata +354 -0
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'big_keeper/util/podfile_operator'
4
+ require 'big_keeper/util/logger'
5
+ require 'big_keeper/util/pod_operator'
6
+ require 'big_keeper/util/xcode_operator'
7
+ require 'big_keeper/util/cache_operator'
8
+ require 'big_keeper/util/bigkeeper_parser'
9
+ require 'big_keeper/model/operate_type'
10
+ require 'big_keeper/dependency/dep_service'
11
+
12
+ require 'big_keeper/dependency/dep_type'
13
+
14
+
15
+ module BigKeeper
16
+
17
+ def self.publish(path, user, type)
18
+ begin
19
+ # Parse Bigkeeper file
20
+ BigkeeperParser.parse("#{path}/Bigkeeper")
21
+
22
+ branch_name = GitOperator.new.current_branch(path)
23
+ Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
24
+
25
+ path_modules = ModuleCacheOperator.new(path).current_path_modules
26
+ Logger.error("You have unfinished modules #{path_modules}, Use 'finish' first please.") unless path_modules.empty?
27
+
28
+ # Push modules changes to remote then rebase
29
+ modules = ModuleCacheOperator.new(path).current_git_modules
30
+ modules.each do |module_name|
31
+ ModuleService.new.pre_publish(path, user, module_name, branch_name, type)
32
+ end
33
+
34
+ # Install
35
+ DepService.dep_operator(path, user).install(modules, OperateType::PUBLISH, false)
36
+
37
+ # Modify module as git
38
+ modules.each do |module_name|
39
+ ModuleService.new.publish(path, user, module_name, branch_name, type)
40
+ end
41
+
42
+ Logger.highlight("Publish branch '#{branch_name}' for 'Home'")
43
+
44
+ # Recover home
45
+ DepService.dep_operator(path, user).recover
46
+
47
+ # Push home changes to remote
48
+ GitService.new.verify_push(path, "publish branch #{branch_name}", branch_name, 'Home')
49
+ # Rebase Home
50
+ GitService.new.verify_rebase(path, GitflowType.base_branch(type), 'Home')
51
+
52
+ `open #{BigkeeperParser.home_pulls()}`
53
+ ensure
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ require 'big_keeper/util/logger'
2
+ require 'big_keeper/util/cache_operator'
3
+
4
+ require 'big_keeper/dependency/dep_service'
5
+
6
+ module BigKeeper
7
+ def self.pull(path, user, type)
8
+ begin
9
+ # Parse Bigkeeper file
10
+ BigkeeperParser.parse("#{path}/Bigkeeper")
11
+ branch_name = GitOperator.new.current_branch(path)
12
+
13
+ Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
14
+
15
+ modules = ModuleCacheOperator.new(path).current_path_modules
16
+
17
+ modules.each do |module_name|
18
+ ModuleService.new.pull(path, user, module_name, branch_name, type)
19
+ end
20
+
21
+ Logger.highlight("Pull branch '#{branch_name}' for 'Home'...")
22
+ GitOperator.new.pull(path)
23
+ ensure
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require 'big_keeper/util/logger'
2
+ require 'big_keeper/util/cache_operator'
3
+
4
+ require 'big_keeper/dependency/dep_service'
5
+
6
+ module BigKeeper
7
+
8
+ def self.push(path, user, comment, type)
9
+ begin
10
+ # Parse Bigkeeper file
11
+ BigkeeperParser.parse("#{path}/Bigkeeper")
12
+ branch_name = GitOperator.new.current_branch(path)
13
+
14
+ Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
15
+
16
+ modules = ModuleCacheOperator.new(path).current_path_modules
17
+
18
+ modules.each do |module_name|
19
+ ModuleService.new.push(path, user, module_name, branch_name, type, comment)
20
+ end
21
+
22
+ Logger.highlight("Push branch '#{branch_name}' for 'Home'...")
23
+ GitService.new.verify_push(path, comment, branch_name, 'Home')
24
+ ensure
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ require 'big_keeper/util/logger'
2
+ require 'big_keeper/util/cache_operator'
3
+
4
+ require 'big_keeper/dependency/dep_service'
5
+
6
+ module BigKeeper
7
+ def self.rebase(path, user, type)
8
+ begin
9
+ # Parse Bigkeeper file
10
+ BigkeeperParser.parse("#{path}/Bigkeeper")
11
+ branch_name = GitOperator.new.current_branch(path)
12
+
13
+ Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
14
+
15
+ modules = ModuleCacheOperator.new(path).current_path_modules
16
+
17
+ modules.each do |module_name|
18
+ ModuleService.new.rebase(path, user, module_name, branch_name, type)
19
+ end
20
+
21
+ Logger.highlight("Rebase '#{GitflowType.base_branch(type)}' "\
22
+ "to branch '#{branch_name}' for 'Home'...")
23
+
24
+ # Rebase Home
25
+ Logger.error("You have some changes in branch '#{branch_name}' "\
26
+ "for 'Home'. Use 'push' first please") if GitOperator.new.has_changes(path)
27
+
28
+ GitService.new.verify_rebase(path, GitflowType.base_branch(type), 'Home')
29
+ ensure
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'big_keeper/util/podfile_operator'
4
+ require 'big_keeper/util/gitflow_operator'
5
+ require 'big_keeper/util/bigkeeper_parser'
6
+ require 'big_keeper/util/logger'
7
+ require 'big_keeper/util/pod_operator'
8
+ require 'big_keeper/util/xcode_operator'
9
+ require 'big_keeper/util/cache_operator'
10
+ require 'big_keeper/model/operate_type'
11
+ require 'big_keeper/dependency/dep_service'
12
+
13
+ require 'big_keeper/dependency/dep_type'
14
+
15
+ require 'big_keeper/service/stash_service'
16
+ require 'big_keeper/service/module_service'
17
+
18
+
19
+ module BigKeeper
20
+ def self.start(path, version, user, name, modules, type)
21
+ begin
22
+ # Parse Bigkeeper file
23
+ BigkeeperParser.parse("#{path}/Bigkeeper")
24
+
25
+ version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
26
+ full_name = "#{version}_#{user}_#{name}"
27
+ branch_name = "#{GitflowType.name(type)}/#{full_name}"
28
+
29
+ GitService.new.verify_home_branch(path, branch_name, OperateType::START)
30
+
31
+ stash_modules = ModuleCacheOperator.new(path).all_path_modules
32
+
33
+ # Stash current branch
34
+ StashService.new.stash_all(path, branch_name, user, stash_modules)
35
+
36
+ # Verify input modules
37
+ modules = BigkeeperParser.verify_modules(modules)
38
+
39
+ Logger.highlight("Add branch '#{branch_name}' for 'Home'...")
40
+ # Start home feature
41
+ GitService.new.start(path, full_name, type)
42
+
43
+ # Clean module cache
44
+ ModuleCacheOperator.new(path).clean_modules
45
+
46
+ # Cache all path modules
47
+ ModuleCacheOperator.new(path).cache_path_modules(modules, modules, [])
48
+ modules = ModuleCacheOperator.new(path).remain_path_modules
49
+
50
+ # Backup home
51
+ DepService.dep_operator(path, user).backup
52
+
53
+ # Start modules feature and modify module as path
54
+ modules.each do |module_name|
55
+ ModuleService.new.add(path, user, module_name, full_name, type)
56
+ end
57
+
58
+ # install
59
+ DepService.dep_operator(path, user).install(modules, OperateType::START, true)
60
+
61
+ # Open home workspace
62
+ DepService.dep_operator(path, user).open
63
+
64
+ # Push home changes to remote
65
+ Logger.highlight("Push branch '#{branch_name}' for 'Home'...")
66
+ GitService.new.verify_push(
67
+ path,
68
+ "init #{GitflowType.name(type)} #{full_name}",
69
+ branch_name,
70
+ 'Home')
71
+ ensure
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/ruby
2
+ require 'big_stash/stash_operator'
3
+ require 'big_keeper/util/logger'
4
+ require 'big_keeper/util/pod_operator'
5
+ require 'big_keeper/util/xcode_operator'
6
+ require 'big_keeper/model/operate_type'
7
+ require 'big_keeper/dependency/dep_service'
8
+
9
+ module BigKeeper
10
+ def self.switch_to(path, version, user, full_name, type)
11
+ begin
12
+ # Parse Bigkeeper file
13
+ BigkeeperParser.parse("#{path}/Bigkeeper")
14
+
15
+ version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
16
+ branch_name = "#{GitflowType.name(type)}/#{full_name}"
17
+
18
+ GitService.new.verify_home_branch(path, branch_name, OperateType::SWITCH)
19
+
20
+ stash_modules = ModuleCacheOperator.new(path).all_path_modules
21
+
22
+ # Stash current branch
23
+ StashService.new.stash_all(path, branch_name, user, stash_modules)
24
+
25
+ # Switch to new feature
26
+ GitOperator.new.checkout(path, branch_name)
27
+ GitOperator.new.pull(path)
28
+
29
+ # Apply home stash
30
+ StashService.new.pop_stash(path, branch_name, 'Home')
31
+
32
+ modules = ModuleCacheOperator.new(path).all_path_modules
33
+
34
+ modules.each do |module_name|
35
+ ModuleService.new.switch_to(path, user, module_name, branch_name, type)
36
+ end
37
+
38
+ # Install
39
+ DepService.dep_operator(path, user).install(modules, OperateType::SWITCH, false)
40
+
41
+ # Open home workspace
42
+ DepService.dep_operator(path, user).open
43
+ ensure
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'big_keeper/util/podfile_operator'
4
+ require 'big_keeper/util/gitflow_operator'
5
+ require 'big_keeper/util/bigkeeper_parser'
6
+ require 'big_keeper/util/logger'
7
+ require 'big_keeper/util/pod_operator'
8
+ require 'big_keeper/util/xcode_operator'
9
+ require 'big_keeper/util/cache_operator'
10
+ require 'big_keeper/model/operate_type'
11
+ require 'big_keeper/dependency/dep_service'
12
+
13
+ require 'big_keeper/dependency/dep_type'
14
+
15
+ require 'big_keeper/service/stash_service'
16
+ require 'big_keeper/service/module_service'
17
+
18
+
19
+ module BigKeeper
20
+ def self.update(path, user, modules, type)
21
+ begin
22
+ # Parse Bigkeeper file
23
+ BigkeeperParser.parse("#{path}/Bigkeeper")
24
+ branch_name = GitOperator.new.current_branch(path)
25
+
26
+ Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
27
+
28
+ full_name = branch_name.gsub(/#{GitflowType.name(type)}\//, '')
29
+
30
+ current_modules = ModuleCacheOperator.new(path).current_path_modules
31
+
32
+ # Verify input modules
33
+ modules = BigkeeperParser.verify_modules(modules)
34
+
35
+ Logger.highlight("Start to update modules for branch '#{branch_name}'...")
36
+
37
+ add_modules = modules - current_modules
38
+ del_modules = current_modules - modules
39
+
40
+ # Clean module cache
41
+ ModuleCacheOperator.new(path).clean_modules
42
+ ModuleCacheOperator.new(path).cache_path_modules(modules, add_modules, del_modules)
43
+ remain_path_modules = ModuleCacheOperator.new(path).remain_path_modules
44
+
45
+ if add_modules.empty? and del_modules.empty?
46
+ Logger.default("There is nothing changed with modules #{modules}.")
47
+ else
48
+ # Modify podfile as path and Start modules feature
49
+ remain_path_modules.each do |module_name|
50
+ ModuleService.new.add(path, user, module_name, full_name, type)
51
+ end
52
+
53
+ del_modules.each do |module_name|
54
+ ModuleService.new.del(path, user, module_name, full_name, type)
55
+ end
56
+ end
57
+
58
+ # Install
59
+ DepService.dep_operator(path, user).install(modules, OperateType::UPDATE, false)
60
+
61
+ # Open home workspace
62
+ DepService.dep_operator(path, user).open
63
+ ensure
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,167 @@
1
+ require 'big_keeper/command/feature&hotfix/start'
2
+ require 'big_keeper/command/feature&hotfix/finish'
3
+ require 'big_keeper/command/feature&hotfix/switch'
4
+ require 'big_keeper/command/feature&hotfix/update'
5
+ require 'big_keeper/command/feature&hotfix/pull'
6
+ require 'big_keeper/command/feature&hotfix/push'
7
+ require 'big_keeper/command/feature&hotfix/rebase'
8
+ require 'big_keeper/command/feature&hotfix/publish'
9
+ require 'big_keeper/command/feature&hotfix/delete'
10
+ require 'big_keeper/command/feature&hotfix/list'
11
+ require 'big_keeper/util/leancloud_logger'
12
+
13
+ module BigKeeper
14
+ def self.feature_and_hotfix_command(type)
15
+ desc "Gitflow #{GitflowType.name(type)} operations"
16
+ command GitflowType.command(type) do |c|
17
+ c.desc "Start a new #{GitflowType.name(type)} with name for given modules and main project"
18
+ c.command :start do |start|
19
+ start.action do |global_options, options, args|
20
+ path = File.expand_path(global_options[:path])
21
+ version = global_options[:ver]
22
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
23
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/start")
24
+
25
+ help_now!('user name is required') if user and user.empty?
26
+ help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
27
+ name = args[0]
28
+ modules = args[(1...args.length)] if args.length > 1
29
+ start(path, version, user, name, modules, type)
30
+ end
31
+ end
32
+
33
+ c.desc "Update modules for the #{GitflowType.name(type)} with name"
34
+ c.command :update do |update|
35
+ update.action do |global_options, options, args|
36
+ path = File.expand_path(global_options[:path])
37
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
38
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/update")
39
+
40
+ help_now!('user name is required') if user and user.empty?
41
+ modules = args[(0...args.length)] if args.length > 0
42
+ update(path, user, modules, type)
43
+ end
44
+ end
45
+
46
+ c.desc "Switch to the #{GitflowType.name(type)} with name"
47
+ c.command :switch do |switch|
48
+ switch.action do |global_options, options, args|
49
+ path = File.expand_path(global_options[:path])
50
+ version = global_options[:ver]
51
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
52
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/switch")
53
+
54
+ help_now!('user name is required') if user and user.empty?
55
+ help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
56
+ name = args[0]
57
+ switch_to(path, version, user, name, type)
58
+ end
59
+ end
60
+
61
+ c.desc "Pull remote changes for current #{GitflowType.name(type)}"
62
+ c.command :pull do |pull|
63
+ pull.action do |global_options, options, args|
64
+ path = File.expand_path(global_options[:path])
65
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
66
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/pull")
67
+
68
+ help_now!('user name is required') if user and user.empty?
69
+ pull(path, user, type)
70
+ end
71
+ end
72
+
73
+ c.desc "Push local changes to remote for current #{GitflowType.name(type)}"
74
+ c.command :push do |push|
75
+ push.action do |global_options, options, args|
76
+ path = File.expand_path(global_options[:path])
77
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
78
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/push")
79
+
80
+ help_now!('user name is required') if user and user.empty?
81
+ help_now!('comment message is required') if args.length < 1
82
+ help_now!(%Q(comment message should be wrappered with '' or "")) if args.length > 1
83
+ comment = args[0]
84
+ push(path, user, comment, type)
85
+ end
86
+ end
87
+
88
+ c.desc "Rebase '#{GitflowType.base_branch(type)}' to current #{GitflowType.name(type)}"
89
+ c.command :rebase do |rebase|
90
+ rebase.action do |global_options, options, args|
91
+ path = File.expand_path(global_options[:path])
92
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
93
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/rebase")
94
+
95
+ help_now!('user name is required') if user and user.empty?
96
+ rebase(path, user, type)
97
+ end
98
+ end
99
+
100
+ c.desc "Finish current #{GitflowType.name(type)}"
101
+ c.command :finish do |finish|
102
+ finish.action do |global_options, options, args|
103
+ path = File.expand_path(global_options[:path])
104
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
105
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/finish")
106
+
107
+ help_now!('user name is required') if user and user.empty?
108
+ finish(path, user, type)
109
+ end
110
+ end
111
+
112
+ c.desc "Publish current #{GitflowType.name(type)}"
113
+ c.command :publish do |publish|
114
+ publish.action do |global_options, options, args|
115
+ path = File.expand_path(global_options[:path])
116
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
117
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/publish")
118
+
119
+ help_now!('user name is required') if user and user.empty?
120
+ publish(path, user, type)
121
+ end
122
+ end
123
+
124
+ c.desc "Delete #{GitflowType.name(type)} with name"
125
+ c.command :delete do |delete|
126
+ delete.action do |global_options, options, args|
127
+ path = File.expand_path(global_options[:path])
128
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
129
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/delete")
130
+
131
+ help_now!('user name is required') if user and user.empty?
132
+ help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
133
+ name = args[0]
134
+ delete(path, user, name, type)
135
+ end
136
+ end
137
+
138
+ c.desc "List all the #{GitflowType.name(type)}s"
139
+ c.command :list do |list|
140
+ list.flag %i[v version] , default_value: 'all versions'
141
+ list.desc "Print list of TREE format."
142
+ list.command :tree do |tree|
143
+ tree.action do |global_options, options, args|
144
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/tree")
145
+
146
+ Logger.highlight("Generating #{GitflowType.name(type)} tree of all version...") if args.length < 1
147
+ path = File.expand_path(global_options[:path])
148
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
149
+ list(path, user, type, options)
150
+ end
151
+ end
152
+
153
+ list.desc "Print list of JSON format."
154
+ list.command :json do |json|
155
+ json.action do |global_options, options, args|
156
+ LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/json")
157
+
158
+ options[:json] = true
159
+ path = File.expand_path(global_options[:path])
160
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
161
+ list(path, user, type, options)
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
File without changes
@@ -0,0 +1,28 @@
1
+ require 'big_resources/util/image/name_analyze_util'
2
+ require 'big_keeper/util/leancloud_logger'
3
+
4
+ module BigKeeper
5
+ def self.image_command
6
+ desc 'Image operations'
7
+ command :image do | c |
8
+ c.desc "Detect duplicate name images."
9
+ c.command :name do | name |
10
+ name.action do | global_options, options, args |
11
+ LeanCloudLogger.instance.set_command("image/name")
12
+
13
+ path = File.expand_path(global_options[:path])
14
+ BigResources::ImageAnalyzeUtil.get_duplicate_name_file_with_type(path, BigResources::PNG)
15
+ end
16
+ end
17
+
18
+ c.desc "Detect duplicate content images."
19
+ c.command :content do | content |
20
+ content.action do | global_options, options, args |
21
+ LeanCloudLogger.instance.set_command("image/content")
22
+ path = File.expand_path(global_options[:path])
23
+ BigResources::ImageAnalyzeUtil.get_duplicate_content_file_with_type(path, BigResources::PNG)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ require 'big_keeper/util/leancloud_logger'
2
+ require 'big_keeper/util/file_operator'
3
+ require 'fileutils'
4
+ require 'big_keeper/util/logger'
5
+
6
+ module BigKeeper
7
+ def self.init_command
8
+ desc 'BigKeeper file initialize'
9
+ command :init do | c |
10
+ c.desc "BigKeeper template file initialize."
11
+ c.action do | global_options, options, args |
12
+ LeanCloudLogger.instance.set_command("big/init")
13
+
14
+ bin_path = File.dirname(__FILE__)
15
+ bin_path = File.dirname(bin_path)
16
+ bin_path = File.dirname(bin_path)
17
+ bin_path = File.dirname(bin_path)
18
+ path = global_options['path']
19
+ Logger.highlight("Initialize BigKeeper File...")
20
+ #template path
21
+ source_file = File.join(bin_path, 'resources/template/BigKeeper')
22
+ #BigKeeper file need exist path
23
+ target_path = File.join(path, 'BigKeeper')
24
+
25
+ if !File.exists?(target_path)
26
+ FileUtils.cp(source_file, target_path)
27
+ Logger.highlight("Initialize BigKeeper Complete!")
28
+ else
29
+ Logger.highlight("BigKeeper File Has Exist!")
30
+ end
31
+
32
+ LeanCloudLogger.instance.set_command("file/init")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,72 @@
1
+ require 'big_keeper/util/podfile_detector'
2
+ require 'big_keeper/util/podfile_operator'
3
+ require 'big_keeper/util/podfile_module'
4
+ require 'big_keeper/util/gitflow_operator'
5
+ require 'big_keeper/util/bigkeeper_parser'
6
+ require 'big_keeper/dependency/dep_type'
7
+ require 'big_keeper/util/logger'
8
+ require 'big_keeper/util/lockfile_parser'
9
+
10
+ module BigKeeper
11
+
12
+ def self.podfile_detect(path)
13
+ # Parse Bigkeeper file
14
+ BigkeeperParser.parse("#{path}/Bigkeeper")
15
+ # Get modules' name
16
+ # module_list = BigkeeperParser.module_names
17
+ # initialize PodfileDetector
18
+ detector = PodfileParser.instance
19
+ detactor.parse
20
+ # Get unlocked third party pods list
21
+ unlock_pod_list = detector.get_unlock_pod_list
22
+ # Print out unlock pod list
23
+ unlock_pod_list.each do |pod_name|
24
+ Logger.default("#{pod_name} should be locked.")
25
+ end
26
+ Logger.separator
27
+
28
+ end
29
+
30
+ def self.podfile_lock(path, is_all)
31
+ # Parse Bigkeeper file
32
+ BigkeeperParser.parse("#{path}/Bigkeeper")
33
+ # initialize PodfileDetector
34
+ pod_parser = PodfileParser.instance
35
+ #Parser Podfile.lock
36
+ pod_parser.parse(path)
37
+ #initialize LockfileParser
38
+ lock_parser = LockfileParser.instance
39
+ #Parser Podfile.lock
40
+ lock_parser.parse(path)
41
+ # Get unlocked third party pods list
42
+ unlock_pod_info = lock_parser.get_unlock_pod_list(is_all)
43
+ # Lock modules in podfile
44
+ if unlock_pod_info.empty?
45
+ Logger.warning("There is nothing to be locked.")
46
+ else
47
+ PodfileOperator.new.find_and_lock("#{path}/Podfile", unlock_pod_info)
48
+ Logger.highlight("The Podfile has been changed.")
49
+ Logger.separator
50
+ end
51
+
52
+ end
53
+
54
+ def self.podfile_modules_update(path)
55
+ # Parse Bigkeeper file
56
+ BigkeeperParser.parse("#{path}/Bigkeeper")
57
+ # Get modules' name
58
+ module_list = BigkeeperParser.module_names
59
+ # initialize PodfileDetector
60
+ detector = PodfileModuleDetector.new(path)
61
+ # Get module latest version
62
+ module_dictionary = detector.check_version_list
63
+ # Check if anything should be upgrade
64
+ if module_dictionary.empty?
65
+ Logger.warning("There is nothing to be upgrade.")
66
+ else
67
+ PodfileOperator.new.find_and_upgrade("#{path}/Podfile", module_dictionary)
68
+ Logger.highlight("The Podfile has been changed.")
69
+ end
70
+ end
71
+
72
+ end