bigkeeper 0.7.3
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 +7 -0
- data/.github/ISSUE_TEMPLATE.md +20 -0
- data/.gitignore +50 -0
- data/.travis.yml +17 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/CONTRIBUTING.md +70 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +114 -0
- data/LICENSE +21 -0
- data/README.md +109 -0
- data/Rakefile +2 -0
- data/big_keeper.gemspec +47 -0
- data/bin/big +14 -0
- data/bin/setup +8 -0
- data/docs/en-US/FEATURE.md +0 -0
- data/docs/en-US/README.md +50 -0
- data/docs/zh-CN/BIGKEEPER_FILE.md +62 -0
- data/docs/zh-CN/FEATURE&HOTFIX.md +121 -0
- data/docs/zh-CN/PODFILE.md +43 -0
- data/docs/zh-CN/README.md +107 -0
- data/docs/zh-CN/RECOMMEND.md +22 -0
- data/docs/zh-CN/RELEASE.md +43 -0
- data/lib/big_keeper.rb +295 -0
- data/lib/big_keeper/command/feature&hotfix/delete.rb +33 -0
- data/lib/big_keeper/command/feature&hotfix/finish.rb +56 -0
- data/lib/big_keeper/command/feature&hotfix/pull.rb +24 -0
- data/lib/big_keeper/command/feature&hotfix/push.rb +25 -0
- data/lib/big_keeper/command/feature&hotfix/rebase.rb +27 -0
- data/lib/big_keeper/command/feature&hotfix/start.rb +67 -0
- data/lib/big_keeper/command/feature&hotfix/switch.rb +47 -0
- data/lib/big_keeper/command/feature&hotfix/update.rb +69 -0
- data/lib/big_keeper/command/pod/podfile.rb +69 -0
- data/lib/big_keeper/command/release/home.rb +66 -0
- data/lib/big_keeper/command/release/module.rb +106 -0
- data/lib/big_keeper/model/gitflow_type.rb +31 -0
- data/lib/big_keeper/model/operate_type.rb +19 -0
- data/lib/big_keeper/model/podfile_model.rb +33 -0
- data/lib/big_keeper/model/podfile_type.rb +44 -0
- data/lib/big_keeper/service/git_service.rb +186 -0
- data/lib/big_keeper/service/module_service.rb +124 -0
- data/lib/big_keeper/service/stash_service.rb +45 -0
- data/lib/big_keeper/util/bigkeeper_parser.rb +198 -0
- data/lib/big_keeper/util/git_operator.rb +142 -0
- data/lib/big_keeper/util/gitflow_operator.rb +51 -0
- data/lib/big_keeper/util/info_plist_operator.rb +46 -0
- data/lib/big_keeper/util/logger.rb +40 -0
- data/lib/big_keeper/util/pod_operator.rb +15 -0
- data/lib/big_keeper/util/podfile_detector.rb +108 -0
- data/lib/big_keeper/util/podfile_module.rb +64 -0
- data/lib/big_keeper/util/podfile_operator.rb +166 -0
- data/lib/big_keeper/util/xcode_operator.rb +13 -0
- data/lib/big_keeper/version.rb +3 -0
- data/resources/banner.png +0 -0
- data/resources/keynote/big-keeper-readme-example.key +0 -0
- data/resources/keynote/big-keeper-readme-feature.key +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-release.key +0 -0
- data/resources/readme/big-keeper-readme.001.png +0 -0
- data/resources/readme/big-keeper-readme.002.png +0 -0
- data/resources/readme/big-keeper-readme.003.png +0 -0
- data/resources/readme/big-keeper-readme.004.png +0 -0
- data/resources/readme/big-keeper-readme.005.png +0 -0
- data/resources/readme/big-keeper-readme.006.png +0 -0
- data/resources/readme/big-keeper-readme.007.png +0 -0
- data/resources/readme/big-keeper-readme.008.png +0 -0
- data/resources/readme/big-keeper-readme.009.png +0 -0
- data/resources/readme/big-keeper-readme.010.png +0 -0
- data/resources/readme/big-keeper-readme.011.png +0 -0
- data/resources/readme/big-keeper-readme.012.png +0 -0
- metadata +311 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'big_keeper/util/logger'
|
2
|
+
|
3
|
+
module BigKeeper
|
4
|
+
def self.pull(path, user, type)
|
5
|
+
begin
|
6
|
+
# Parse Bigkeeper file
|
7
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
8
|
+
branch_name = GitOperator.new.current_branch(path)
|
9
|
+
|
10
|
+
Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
|
11
|
+
|
12
|
+
modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
13
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
14
|
+
|
15
|
+
modules.each do |module_name|
|
16
|
+
ModuleService.new.pull(path, user, module_name, branch_name, type)
|
17
|
+
end
|
18
|
+
|
19
|
+
Logger.highlight("Pull branch '#{branch_name}' for 'Home'...")
|
20
|
+
GitOperator.new.pull(path)
|
21
|
+
ensure
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'big_keeper/util/logger'
|
2
|
+
|
3
|
+
module BigKeeper
|
4
|
+
|
5
|
+
def self.push(path, user, comment, type)
|
6
|
+
begin
|
7
|
+
# Parse Bigkeeper file
|
8
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
9
|
+
branch_name = GitOperator.new.current_branch(path)
|
10
|
+
|
11
|
+
Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
|
12
|
+
|
13
|
+
modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
14
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
15
|
+
|
16
|
+
modules.each do |module_name|
|
17
|
+
ModuleService.new.push(path, user, module_name, branch_name, type, comment)
|
18
|
+
end
|
19
|
+
|
20
|
+
Logger.highlight("Push branch '#{branch_name}' for 'Home'...")
|
21
|
+
GitService.new.verify_push(path, comment, branch_name, 'Home')
|
22
|
+
ensure
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'big_keeper/util/logger'
|
2
|
+
|
3
|
+
module BigKeeper
|
4
|
+
def self.reabse(path, user, type)
|
5
|
+
begin
|
6
|
+
# Parse Bigkeeper file
|
7
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
8
|
+
branch_name = GitOperator.new.current_branch(path)
|
9
|
+
|
10
|
+
Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
|
11
|
+
|
12
|
+
modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
13
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
14
|
+
|
15
|
+
modules.each do |module_name|
|
16
|
+
ModuleService.new.rebase(path, user, module_name, branch_name, type)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Rebase Home
|
20
|
+
Logger.error("You have some changes in branch '#{home_branch_name}' \
|
21
|
+
for 'Home'. Use 'push' first please") if GitOperator.new.has_changes(path)
|
22
|
+
|
23
|
+
GitService.new.verify_rebase(path, GitflowType.base_branch(type), 'Home')
|
24
|
+
ensure
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,67 @@
|
|
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
|
+
|
10
|
+
require 'big_keeper/model/podfile_type'
|
11
|
+
|
12
|
+
require 'big_keeper/service/stash_service'
|
13
|
+
require 'big_keeper/service/module_service'
|
14
|
+
|
15
|
+
|
16
|
+
module BigKeeper
|
17
|
+
def self.start(path, version, user, name, modules, type)
|
18
|
+
begin
|
19
|
+
# Parse Bigkeeper file
|
20
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
21
|
+
|
22
|
+
version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
|
23
|
+
full_name = "#{version}_#{user}_#{name}"
|
24
|
+
branch_name = "#{GitflowType.name(type)}/#{full_name}"
|
25
|
+
|
26
|
+
GitService.new.verify_home_branch(path, branch_name, OperateType::START)
|
27
|
+
|
28
|
+
stash_modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
29
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
30
|
+
|
31
|
+
# Stash current branch
|
32
|
+
StashService.new.stash_all(path, branch_name, user, stash_modules)
|
33
|
+
|
34
|
+
# Verify input modules
|
35
|
+
modules = [] unless modules
|
36
|
+
BigkeeperParser.verify_modules(modules)
|
37
|
+
|
38
|
+
# # Handle modules
|
39
|
+
# if modules
|
40
|
+
# # Verify input modules
|
41
|
+
# BigkeeperParser.verify_modules(modules)
|
42
|
+
# else
|
43
|
+
# # Get all modules if not specified
|
44
|
+
# modules = BigkeeperParser.module_names
|
45
|
+
# end
|
46
|
+
|
47
|
+
Logger.highlight("Add branch '#{branch_name}' for 'Home'...")
|
48
|
+
# Start home feature
|
49
|
+
GitService.new.start(path, full_name, type)
|
50
|
+
|
51
|
+
# Modify podfile as path and Start modules feature
|
52
|
+
modules.each do |module_name|
|
53
|
+
ModuleService.new.add(path, user, module_name, full_name, type)
|
54
|
+
end
|
55
|
+
|
56
|
+
# pod install
|
57
|
+
PodOperator.pod_install(path, true) unless modules.empty?
|
58
|
+
|
59
|
+
# Open home workspace
|
60
|
+
XcodeOperator.open_workspace(path)
|
61
|
+
|
62
|
+
# Push home changes to remote
|
63
|
+
GitService.new.verify_push(path, "init #{GitflowType.name(type)} #{full_name}", branch_name, 'Home')
|
64
|
+
ensure
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,47 @@
|
|
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
|
+
|
7
|
+
module BigKeeper
|
8
|
+
def self.switch_to(path, version, user, name, type)
|
9
|
+
begin
|
10
|
+
# Parse Bigkeeper file
|
11
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
12
|
+
|
13
|
+
version = BigkeeperParser.version if version == 'Version in Bigkeeper file'
|
14
|
+
full_name = "#{version}_#{user}_#{name}"
|
15
|
+
branch_name = "#{GitflowType.name(type)}/#{full_name}"
|
16
|
+
|
17
|
+
GitService.new.verify_home_branch(path, branch_name, OperateType::SWITCH)
|
18
|
+
|
19
|
+
stash_modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
20
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
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 = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
33
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
34
|
+
|
35
|
+
modules.each do |module_name|
|
36
|
+
ModuleService.new.switch_to(path, user, module_name, branch_name, type)
|
37
|
+
end
|
38
|
+
|
39
|
+
# pod install
|
40
|
+
PodOperator.pod_install(path, false)
|
41
|
+
|
42
|
+
# Open home workspace
|
43
|
+
XcodeOperator.open_workspace(path)
|
44
|
+
ensure
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,69 @@
|
|
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
|
+
|
10
|
+
require 'big_keeper/model/podfile_type'
|
11
|
+
|
12
|
+
require 'big_keeper/service/stash_service'
|
13
|
+
require 'big_keeper/service/module_service'
|
14
|
+
|
15
|
+
|
16
|
+
module BigKeeper
|
17
|
+
def self.update(path, user, modules, type)
|
18
|
+
begin
|
19
|
+
# Parse Bigkeeper file
|
20
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
21
|
+
branch_name = GitOperator.new.current_branch(path)
|
22
|
+
|
23
|
+
Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
|
24
|
+
|
25
|
+
full_name = branch_name.gsub(/#{GitflowType.name(type)}\//, '')
|
26
|
+
|
27
|
+
current_modules = PodfileOperator.new.modules_with_type("#{path}/Podfile",
|
28
|
+
BigkeeperParser.module_names, ModuleType::PATH)
|
29
|
+
|
30
|
+
# Verify input modules
|
31
|
+
modules = [] unless modules
|
32
|
+
BigkeeperParser.verify_modules(modules)
|
33
|
+
|
34
|
+
# # Handle modules
|
35
|
+
# if modules
|
36
|
+
# # Verify input modules
|
37
|
+
# BigkeeperParser.verify_modules(modules)
|
38
|
+
# else
|
39
|
+
# # Get all modules if not specified
|
40
|
+
# modules = BigkeeperParser.module_names
|
41
|
+
# end
|
42
|
+
|
43
|
+
Logger.highlight("Start to update modules for branch '#{branch_name}'...")
|
44
|
+
|
45
|
+
add_modules = modules - current_modules
|
46
|
+
del_modules = current_modules - modules
|
47
|
+
|
48
|
+
if add_modules.empty? and del_modules.empty?
|
49
|
+
Logger.default("There is nothing changed with modules #{modules}.")
|
50
|
+
else
|
51
|
+
# Modify podfile as path and Start modules feature
|
52
|
+
add_modules.each do |module_name|
|
53
|
+
ModuleService.new.add(path, user, module_name, full_name, type)
|
54
|
+
end
|
55
|
+
|
56
|
+
del_modules.each do |module_name|
|
57
|
+
ModuleService.new.del(path, user, module_name, full_name, type)
|
58
|
+
end
|
59
|
+
|
60
|
+
# pod install
|
61
|
+
PodOperator.pod_install(path, false)
|
62
|
+
|
63
|
+
# Open home workspace
|
64
|
+
XcodeOperator.open_workspace(path)
|
65
|
+
end
|
66
|
+
ensure
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,69 @@
|
|
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/model/podfile_type'
|
7
|
+
require 'big_keeper/util/logger'
|
8
|
+
|
9
|
+
module BigKeeper
|
10
|
+
|
11
|
+
def self.podfile_detect(path)
|
12
|
+
# Parse Bigkeeper file
|
13
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
14
|
+
# Get modules' name
|
15
|
+
module_list = BigkeeperParser.module_names
|
16
|
+
# initialize PodfileDetector
|
17
|
+
detector = PodfileDetector.new(path,module_list)
|
18
|
+
# Get unlocked third party pods list
|
19
|
+
unlock_pod_list = detector.get_unlock_pod_list
|
20
|
+
# Print out unlock pod list
|
21
|
+
unlock_pod_list.each do |pod_name|
|
22
|
+
Logger.default("#{pod_name} should be locked.")
|
23
|
+
end
|
24
|
+
Logger.separator
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.podfile_lock(path)
|
29
|
+
# Parse Bigkeeper file
|
30
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
31
|
+
# Get modules' name
|
32
|
+
module_list = BigkeeperParser.module_names
|
33
|
+
# initialize PodfileDetector
|
34
|
+
detector = PodfileDetector.new(path,module_list)
|
35
|
+
# Get unlocked third party pods list
|
36
|
+
unlock_pod_list = detector.get_unlock_pod_list
|
37
|
+
# Get Version
|
38
|
+
dictionary = detector.deal_lock_file(path,unlock_pod_list)
|
39
|
+
if dictionary.empty?
|
40
|
+
Logger.warning("There is nothing to be locked.")
|
41
|
+
else
|
42
|
+
PodfileOperator.new.find_and_lock("#{path}/Podfile",dictionary)
|
43
|
+
Logger.highlight("The Podfile has been changed.")
|
44
|
+
Logger.separator
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.podfile_modules_update(path)
|
52
|
+
# Parse Bigkeeper file
|
53
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
54
|
+
# Get modules' name
|
55
|
+
module_list = BigkeeperParser.module_names
|
56
|
+
# initialize PodfileDetector
|
57
|
+
detector = PodfileModuleDetector.new(path)
|
58
|
+
# Get module latest version
|
59
|
+
module_dictionary = detector.check_version_list
|
60
|
+
# Check if anything should be upgrade
|
61
|
+
if module_dictionary.empty?
|
62
|
+
Logger.warning("There is nothing to be upgrade.")
|
63
|
+
else
|
64
|
+
PodfileOperator.new.find_and_upgrade("#{path}/Podfile",module_dictionary)
|
65
|
+
Logger.highlight("The Podfile has been changed.")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'big_keeper/util/podfile_operator'
|
3
|
+
require 'big_keeper/util/gitflow_operator'
|
4
|
+
require 'big_keeper/model/podfile_type'
|
5
|
+
require 'big_keeper/util/info_plist_operator'
|
6
|
+
require 'big_keeper/util/logger'
|
7
|
+
|
8
|
+
module BigKeeper
|
9
|
+
def self.release_home_start(path, version, user)
|
10
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
11
|
+
start_release(path, version, BigkeeperParser::module_names, user)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.release_home_finish(path, version)
|
15
|
+
Dir.chdir(path) do
|
16
|
+
if GitOperator.new.has_branch(path, "release/#{version}")
|
17
|
+
if GitOperator.new.current_branch(path) == "release/#{version}"
|
18
|
+
GitOperator.new.commit(path, "release: V #{version}")
|
19
|
+
GitOperator.new.push_to_remote(path, "release/#{version}")
|
20
|
+
GitflowOperator.new.finish_release(path, version)
|
21
|
+
if GitOperator.new.current_branch(path) == "master"
|
22
|
+
GitOperator.new.tag(path, version)
|
23
|
+
else
|
24
|
+
GitOperator.new.checkout(path, "master")
|
25
|
+
GitOperator.new.tag(path, version)
|
26
|
+
end
|
27
|
+
else
|
28
|
+
raise Logger.error("Not in release branch, please check your branches.")
|
29
|
+
end
|
30
|
+
else
|
31
|
+
raise Logger.error("Not has release branch, please use release start first.")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
def self.start_release(project_path, version, modules, user)
|
38
|
+
Dir.chdir(project_path) do
|
39
|
+
# step 0 Stash current branch
|
40
|
+
StashService.new.stash_all(project_path, GitOperator.new.current_branch(project_path), user, modules)
|
41
|
+
|
42
|
+
Logger.highlight(%Q(Start to checkout Branch release/#{version}))
|
43
|
+
# step 1 checkout release
|
44
|
+
if GitOperator.new.current_branch(project_path) != "release/#{version}"
|
45
|
+
if GitOperator.new.has_branch(project_path, "release/#{version}")
|
46
|
+
GitOperator.new.checkout(project_path, "release/#{version}")
|
47
|
+
else
|
48
|
+
GitflowOperator.new.start(project_path, version, GitflowType::RELEASE)
|
49
|
+
GitOperator.new.push_to_remote(project_path, "release/#{version}")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
Logger.highlight(%Q(Start to release/#{version}))
|
54
|
+
# step 2 replace_modules
|
55
|
+
PodfileOperator.new.replace_all_module_release(%Q(#{project_path}/Podfile),
|
56
|
+
modules,
|
57
|
+
version)
|
58
|
+
|
59
|
+
# step 3 change Info.plist value
|
60
|
+
InfoPlistOperator.new.change_version_build(project_path, version)
|
61
|
+
|
62
|
+
PodOperator.pod_install(project_path, true)
|
63
|
+
`open #{project_path}/*.xcworkspace`
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'big_keeper/util/podfile_operator'
|
3
|
+
require 'big_keeper/util/gitflow_operator'
|
4
|
+
require 'big_keeper/model/podfile_type'
|
5
|
+
require 'big_keeper/util/info_plist_operator'
|
6
|
+
require 'big_keeper/util/git_operator'
|
7
|
+
require 'big_keeper/util/logger'
|
8
|
+
|
9
|
+
module BigKeeper
|
10
|
+
def self.release_module_start(path, version, user, module_name)
|
11
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
12
|
+
|
13
|
+
Dir.chdir(path) do
|
14
|
+
git_info = GitInfo.new(BigkeeperParser::home_git, GitType::TAG, version)
|
15
|
+
module_path = self.get_module_path_default(path, user, module_name)
|
16
|
+
start_module_release(module_path, version, module_name, git_info, user)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.release_module_finish(path, version, user, module_name)
|
21
|
+
BigkeeperParser.parse("#{path}/Bigkeeper")
|
22
|
+
module_path = self.get_module_path_default(path, user, module_name)
|
23
|
+
|
24
|
+
Logger.error("current branch has changed") unless GitOperator.new.has_changes(module_path)
|
25
|
+
# check out master
|
26
|
+
if GitOperator.new.current_branch(module_path) != "master"
|
27
|
+
current_name = GitOperator.new.current_branch(module_path)
|
28
|
+
GitOperator.new.checkout(module_path, "master")
|
29
|
+
Logger.highlight("Push branch '#{current_name}' for '#{module_name}'...")
|
30
|
+
GitService.new.verify_push(module_path, "finish #{GitflowType.name(GitflowType::RELEASE)} #{current_name}", "master", "#{module_name}")
|
31
|
+
end
|
32
|
+
return
|
33
|
+
|
34
|
+
Dir.chdir(module_path) do
|
35
|
+
# rebase develop to master
|
36
|
+
Logger.highlight(%Q(Rebase develop to master))
|
37
|
+
|
38
|
+
#修改 podspec 文件
|
39
|
+
# TO DO: - advanced to use Regular Expression
|
40
|
+
PodfileOperator.new.podspec_change(%Q(#{module_path}/#{module_name}.podspec), version, module_name)
|
41
|
+
|
42
|
+
GitService.new.verify_rebase(module_path, 'develop', "#{module_name}")
|
43
|
+
GitOperator.new.verify_push(module_path, "finish rebase develop to master", "master", "#{module_name}")
|
44
|
+
GitOperator.new.tag(module_path, version)
|
45
|
+
|
46
|
+
Logger.highlight(%Q(Start Pod repo push #{module_name}))
|
47
|
+
IO.popen("pod repo push #{module_name} #{module_name}.podspec --allow-warnings --sources=#{BigkeeperParser::sourcemodule_path}") do |io|
|
48
|
+
io.each do |line|
|
49
|
+
has_error = true if line.include? "ERROR"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
if has_error
|
53
|
+
Logger.error("Pod repo push in '#{module_name}'")
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
Logger.highlight(%Q(Success release #{module_name} V#{version}))
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
def self.start_module_release(module_path, version, module_name, source, user)
|
63
|
+
if GitOperator.new.has_changes(module_path)
|
64
|
+
StashService.new.stash_all(module_path, GitOperator.new.current_branch(module_path), user, module_name.split())
|
65
|
+
end
|
66
|
+
|
67
|
+
# step 1 checkout to develop branch
|
68
|
+
Logger.highlight(%Q(Start checkout #{module_name} to Branch develop))
|
69
|
+
if GitOperator.new.current_branch(module_path) != "develop"
|
70
|
+
if GitOperator.new.has_branch(module_path, "develop")
|
71
|
+
GitOperator.new.checkout(module_path, "develop")
|
72
|
+
else
|
73
|
+
Logger.error("Cann't find develop branch, please check.")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Dir.chdir(module_path) do
|
78
|
+
# Pod lib lint
|
79
|
+
Logger.highlight(%Q(Start Pod lib lint #{module_name}))
|
80
|
+
has_error = false
|
81
|
+
IO.popen("pod lib lint --allow-warnings --verbose --use-libraries --sources=#{BigkeeperParser::sourcemodule_path}") do |io|
|
82
|
+
io.each do |line|
|
83
|
+
has_error = true if line.include? "ERROR"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
if has_error
|
87
|
+
Logger.error("Pod lib error in '#{module_name}'")
|
88
|
+
return
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
GitOperator.new.commit(module_path, "update podspec")
|
93
|
+
GitOperator.new.first_push(module_path, GitOperator.new.current_branch(module_path))
|
94
|
+
Logger.highlight(%Q(Pod lib lint success))
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.get_module_path_default(path, user, module_name)
|
98
|
+
module_path = BigkeeperParser::module_path(user, module_name)
|
99
|
+
if module_path == "../#{module_name}"
|
100
|
+
path_array = path.split('/')
|
101
|
+
path_array.pop()
|
102
|
+
module_path = path_array.join('/') + "/#{module_name}"
|
103
|
+
end
|
104
|
+
module_path
|
105
|
+
end
|
106
|
+
end
|