kookeeper 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,74 @@
1
+ require 'big_keeper/dependency/dep_operator'
2
+ require 'big_keeper/util/gradle_module_operator'
3
+ require 'big_keeper/util/gradle_file_operator'
4
+ require 'big_keeper/model/operate_type'
5
+ require 'big_keeper/util/version_config_operator'
6
+
7
+ module BigKeeper
8
+ # Operator for podfile
9
+ class DepGradleOperator < DepOperator
10
+
11
+ BUILD_GRADLE = "app/build.gradle"
12
+ SETTINGS_GRADLE = "settings.gradle"
13
+
14
+ def backup
15
+ end
16
+
17
+ def recover
18
+ build_file = "#{@path}/#{BUILD_GRADLE}"
19
+ settings_file = "#{@path}/#{SETTINGS_GRADLE}"
20
+ GradleFileOperator.new(@path, @user).recover_bigkeeper_config_file(build_file)
21
+ GradleFileOperator.new(@path, @user).recover_bigkeeper_config_file(settings_file)
22
+
23
+ cache_operator = CacheOperator.new(@path)
24
+ cache_operator.clean
25
+ end
26
+
27
+ def update_module_config(module_name, module_operate_type)
28
+ if ModuleOperateType::ADD == module_operate_type
29
+ GradleModuleOperator.new(@path, @user, module_name).update_module(ModuleOperateType::ADD)
30
+ elsif ModuleOperateType::DELETE == module_operate_type
31
+ GradleModuleOperator.new(@path, @user, module_name).recover()
32
+ elsif ModuleOperateType::FINISH == module_operate_type
33
+ GradleModuleOperator.new(@path, @user, module_name).update_module(ModuleOperateType::FINISH)
34
+ elsif ModuleOperateType::PUBLISH == module_operate_type
35
+ GradleModuleOperator.new(@path, @user, module_name).recover()
36
+ end
37
+ end
38
+
39
+ def install(modules, type, should_update)
40
+ if OperateType::START == type || OperateType::UPDATE == type || OperateType::SWITCH == type || OperateType::FINISH == type
41
+ GradleFileOperator.new(@path, @user).update_home_depends("#{@path}/#{BUILD_GRADLE}", "#{@path}/#{SETTINGS_GRADLE}",type)
42
+ elsif OperateType::PUBLISH == type
43
+ recover()
44
+ end
45
+ end
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
+
71
+ def open
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,48 @@
1
+ module BigKeeper
2
+ # Operator for podfile
3
+ class DepOperator
4
+ @path
5
+ @user
6
+
7
+ def initialize(path, user)
8
+ @path = path
9
+ @user = user
10
+ end
11
+
12
+ def backup
13
+ raise "You should override this method in subclass."
14
+ end
15
+
16
+ def recover
17
+ raise "You should override this method in subclass."
18
+ end
19
+
20
+ def update_module_config(module_name, module_operate_type)
21
+ raise "You should override this method in subclass."
22
+ end
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
+
40
+ def install(modules, type, should_update)
41
+ raise "You should override this method in subclass."
42
+ end
43
+
44
+ def open
45
+ raise "You should override this method in subclass."
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,130 @@
1
+ require 'big_keeper/dependency/dep_operator'
2
+
3
+ require 'big_keeper/util/pod_operator'
4
+ require 'big_keeper/util/xcode_operator'
5
+ require 'big_keeper/util/cache_operator'
6
+ require 'big_keeper/util/file_operator'
7
+
8
+ module BigKeeper
9
+ # Operator for podfile
10
+ class DepPodOperator < DepOperator
11
+ def backup
12
+ CacheOperator.new(@path).save('Podfile')
13
+ end
14
+
15
+ def recover
16
+ cache_operator = CacheOperator.new(@path)
17
+ cache_operator.load('Podfile')
18
+ cache_operator.clean
19
+ end
20
+
21
+ def update_module_config(module_name, module_operate_type)
22
+ file = "#{@path}/Podfile"
23
+ temp_file = Tempfile.new('.Podfile.tmp', :encoding => 'UTF-8')
24
+
25
+ begin
26
+ File.open(file, 'r', :encoding => 'UTF-8') do |file|
27
+ file.each_line do |line|
28
+ temp_file.puts generate_module_config(line, module_name, module_operate_type)
29
+ end
30
+ end
31
+ temp_file.close
32
+ FileUtils.mv(temp_file.path, file)
33
+ ensure
34
+ temp_file.close
35
+ temp_file.unlink
36
+ end
37
+ end
38
+
39
+ def install(modules, type, should_update)
40
+ PodOperator.pod_install(@path, should_update)
41
+ end
42
+
43
+ def open
44
+ XcodeOperator.open_workspace(@path)
45
+ end
46
+
47
+ def generate_module_config(line, module_name, module_operate_type)
48
+ line.sub(/(\s*)pod(\s*)('|")#{module_name}((\/[_a-zA-Z0-9]+)?)('|")([\s\S]*)/){
49
+ if ModuleOperateType::ADD == module_operate_type
50
+ module_path = BigkeeperParser.module_path(@user, module_name)
51
+ "#{$1}pod '#{module_name}#{$4}', :path => '#{module_path}'"
52
+ elsif ModuleOperateType::DELETE == module_operate_type
53
+ origin_config_of_module = origin_config_of_module(module_name)
54
+ if origin_config_of_module.empty?
55
+ line
56
+ else
57
+ origin_config_of_module
58
+ end
59
+ elsif ModuleOperateType::FINISH == module_operate_type
60
+ module_git = BigkeeperParser.module_git(module_name)
61
+ branch_name = GitOperator.new.current_branch(@path)
62
+ "#{$1}pod '#{module_name}#{$4}', :git => '#{module_git}', :branch => '#{branch_name}'"
63
+ elsif ModuleOperateType::PUBLISH == module_operate_type
64
+ module_git = BigkeeperParser.module_git(module_name)
65
+ branch_name = GitOperator.new.current_branch(@path)
66
+ base_branch_name = GitflowType.base_branch(GitService.new.current_branch_type(@path))
67
+ "#{$1}pod '#{module_name}#{$4}', :git => '#{module_git}', :branch => '#{base_branch_name}'"
68
+ elsif ModuleOperateType::RELEASE == module_operate_type
69
+ module_git = BigkeeperParser.module_git(module_name)
70
+ lastest_tag, is_spec = find_lastest_tag(module_name)
71
+ if is_spec == true
72
+ Logger.default("#{module_name} lastest tag is #{lastest_tag}, this tag has published.")
73
+ "#{$1}pod '#{module_name}#{$4}', '#{lastest_tag}'"
74
+ else
75
+ Logger.default("#{module_name} lastest tag is #{lastest_tag}, this tag not publish.")
76
+ "#{$1}pod '#{module_name}#{$4}', :git => '#{module_git}', :tag => '#{lastest_tag}'"
77
+ end
78
+ else
79
+ line
80
+ end
81
+ }
82
+ end
83
+
84
+ def origin_config_of_module(module_name)
85
+ origin_config = ''
86
+
87
+ File.open("#{@path}/.bigkeeper/Podfile", 'r', :encoding => 'UTF-8') do |file|
88
+ file.each_line do |line|
89
+ if line =~ /(\s*)pod(\s*)('|")#{module_name}('|")([\s\S]*)/
90
+ origin_config = line
91
+ break
92
+ end
93
+ end
94
+ end
95
+
96
+ origin_config.chop
97
+ end
98
+
99
+ def find_lastest_tag(module_name)
100
+ username = FileOperator.new.current_username
101
+ tags_repos_pwd = Array.new
102
+ tags_spec_list = Array.new
103
+ tags_module_list = Array.new
104
+
105
+ IO.popen("find /Users/#{username}/.cocoapods/repos -type d -name #{module_name}") do |io|
106
+ io.each do |line|
107
+ tags_repos_pwd.push(line) if line.include? "#{module_name}"
108
+ end
109
+ end
110
+ for pwd in tags_repos_pwd do
111
+ path = pwd.chomp
112
+ IO.popen("cd '#{path}'; ls") do |io|
113
+ io.each do |line|
114
+ tags_spec_list.push(line)
115
+ end
116
+ end
117
+ end
118
+
119
+ tags_module_list = GitOperator.new.tag_list(BigkeeperParser.module_full_path(@path, @user, module_name))
120
+ last_tag = tags_module_list[tags_module_list.length - 1]
121
+ if tags_module_list.include?(last_tag) && tags_spec_list.include?(last_tag)
122
+ return [last_tag.chomp, true]
123
+ else
124
+ return [last_tag.chomp, false]
125
+ end
126
+ end
127
+
128
+ private :generate_module_config, :origin_config_of_module, :find_lastest_tag
129
+ end
130
+ end
@@ -0,0 +1,14 @@
1
+ require 'big_keeper/util/git_operator'
2
+ require 'big_keeper/model/gitflow_type'
3
+ require 'big_keeper/model/operate_type'
4
+ require 'big_keeper/util/logger'
5
+ require 'big_keeper/dependency/dep_type'
6
+
7
+ module BigKeeper
8
+ # Operator for podfile
9
+ class DepService
10
+ def self.dep_operator(path, user)
11
+ DepType.operator(path, user)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ require 'big_keeper/dependency/dep_operator'
2
+ require 'big_keeper/dependency/dep_pod_operator'
3
+ require 'big_keeper/dependency/dep_gradle_operator'
4
+ require 'big_keeper/util/file_operator'
5
+
6
+ module BigKeeper
7
+ module DepType
8
+ NONE = 0
9
+ COCOAPODS = 1
10
+ GRADLE = 2
11
+
12
+ def self.type(path)
13
+ if FileOperator.definitely_exists?("#{path}/Podfile")
14
+ COCOAPODS
15
+ elsif FileOperator.definitely_exists?("#{path}/build.gradle")
16
+ GRADLE
17
+ else
18
+ NONE
19
+ end
20
+ end
21
+
22
+ def self.operator(path, user)
23
+ operator_type = type(path)
24
+ if COCOAPODS == operator_type
25
+ DepPodOperator.new(path, user)
26
+ elsif GRADLE == operator_type
27
+ DepGradleOperator.new(path, user)
28
+ else
29
+ DepOperator.new(path, user)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,43 @@
1
+ module BigKeeper
2
+ module GitflowType
3
+ FEATURE = 1
4
+ HOTFIX = 2
5
+ RELEASE = 3
6
+
7
+ def self.name(type)
8
+ if FEATURE == type
9
+ "feature"
10
+ elsif HOTFIX == type
11
+ "hotfix"
12
+ elsif RELEASE == type
13
+ "release"
14
+ else
15
+ "feature"
16
+ end
17
+ end
18
+
19
+ def self.command(type)
20
+ if FEATURE == type
21
+ :feature
22
+ elsif HOTFIX == type
23
+ :hotfix
24
+ elsif RELEASE == type
25
+ :release
26
+ else
27
+ :feature
28
+ end
29
+ end
30
+
31
+ def self.base_branch(type)
32
+ if FEATURE == type
33
+ "develop"
34
+ elsif HOTFIX == type
35
+ "master"
36
+ elsif RELEASE == type
37
+ "develop"
38
+ else
39
+ "master"
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,116 @@
1
+ require 'big_keeper/util/file_operator'
2
+ require 'big_keeper/util/code_operator'
3
+
4
+
5
+ module BigKeeper
6
+ class LibraryModel
7
+ attr_accessor :name, :file_list, :header_file_list, :keyword_list, :spec_library
8
+ def initialize(name)
9
+ @name = name
10
+ @file_list = []
11
+ @header_file_list = []
12
+ @spec_library = []
13
+ @keyword_list = []
14
+ end
15
+
16
+ def get_all_public_file(path)
17
+ all_header = FileOperator.find_all_header_file("#{path}/Pods/#{@name}")
18
+ for file_path in all_header do
19
+ @header_file_list[@header_file_list.size] = file_path
20
+ file_name = File.basename(file_path)
21
+ @keyword_list[@keyword_list.size] = file_name
22
+ in_note = false
23
+ File.foreach(file_path) { |line|
24
+ hash = Hash.new
25
+ hash["in_note"]=in_note
26
+ hash["line"]=line
27
+ OCCodeOperator.in_note_code(hash)
28
+ in_note = hash["in_note"]
29
+ line = hash["line"]
30
+ if line.empty?
31
+ next
32
+ end
33
+ if line.include?("@interface ")
34
+ line[0,line.index("@interface ")+11]=""
35
+ column = line.split(/:/)
36
+ if column.size > 1
37
+ class_name = column[0]
38
+ if class_name.include?("<")
39
+ class_name = class_name[0, class_name.index("<")]
40
+ end
41
+ class_name = class_name.strip
42
+ if (@keyword_list.include?(class_name+".h"))
43
+ @keyword_list.delete(class_name+".h")
44
+ end
45
+ @keyword_list[@keyword_list.size] = class_name
46
+ end
47
+ end
48
+ }
49
+ end
50
+ # if @name == ""
51
+ # puts @keyword_list
52
+ # end
53
+ @file_list = FileOperator.find_all_code_file("#{path}/Pods/#{@name}")
54
+ end
55
+
56
+ def spec_dependece_library(library_keywords_hash)
57
+ if library_keywords_hash.include?(@name)
58
+ library_keywords_hash.delete(@name)
59
+ end
60
+
61
+ for file_path in @file_list do
62
+ # note for coding
63
+ in_note = false
64
+ File.foreach(file_path) { |line|
65
+ hash = Hash.new
66
+ hash["in_note"]=in_note
67
+ hash["line"]=line
68
+ OCCodeOperator.in_note_code(hash)
69
+ in_note = hash["in_note"]
70
+ line = hash["line"]
71
+ if line.empty?
72
+ next
73
+ end
74
+ library_keywords_hash.each {|library_name, keyword_list|
75
+ is_dependence = false
76
+ tip = ""
77
+ for keyword in keyword_list do
78
+ if line.include?(keyword)
79
+ last_char = '.'
80
+ last_index = line.index(keyword)-1
81
+ if last_index >= 0
82
+ last_char = line[last_index]
83
+ end
84
+ next_char = '.'
85
+ next_index = line.index(keyword)+keyword.size
86
+ if next_index < line.size
87
+ next_char = line[next_index]
88
+ end
89
+ if !(((next_char<='z'&&next_char>='a')||(next_char<='Z'&&next_char>='A')||(next_char<='9'&&next_char>='0')||next_char=='_')||((last_char<='z'&&last_char>='a')||(last_char<='Z'&&last_char>='A')||(last_char<='9'&&last_char>='0')||last_char=='_'))
90
+ if keyword.include?(".h") && line.include?("import") && line.include?("/"+keyword+">")
91
+ dependence_library_name = line[line.index("<")+1...line.index("/"+keyword+">")]
92
+ if dependence_library_name == library_name
93
+ tip = " [file]:"+File.basename(file_path)+" [line]: "+line.strip+" [keyword]: "+keyword
94
+ is_dependence = true
95
+ break
96
+ end
97
+ else
98
+ tip = " [file]:"+File.basename(file_path)+" [line]: "+line.strip+" [keyword]: "+keyword
99
+ is_dependence = true
100
+ break
101
+ end
102
+ end
103
+ end
104
+ end
105
+ if is_dependence
106
+ @spec_library[@spec_library.size] = library_name+tip
107
+ library_keywords_hash.delete(library_name)
108
+ end
109
+ }
110
+
111
+ }
112
+ end
113
+ end
114
+
115
+ end
116
+ end
@@ -0,0 +1,30 @@
1
+ module BigKeeper
2
+ module OperateType
3
+ START = 1
4
+ UPDATE = 2
5
+ SWITCH = 3
6
+ FINISH = 4
7
+ PUBLISH = 5
8
+ RELEASE = 6
9
+
10
+ def self.name(type)
11
+ if START == type
12
+ "start"
13
+ elsif UPDATE == type
14
+ "update"
15
+ elsif SWITCH == type
16
+ "switch"
17
+ else
18
+ name
19
+ end
20
+ end
21
+ end
22
+
23
+ module ModuleOperateType
24
+ ADD = 1
25
+ DELETE = 2
26
+ FINISH = 3
27
+ PUBLISH = 4
28
+ RELEASE = 5
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+
2
+ module BigKeeper
3
+
4
+ class PodfileModel
5
+ attr_accessor :name, :git, :path, :configurations, :branch,:tag, :comment
6
+ def initialize(sentence)
7
+ if sentence.include?('#')
8
+ list = sentence.split('#')
9
+ @comment = list[1]
10
+ sentence = list[0]
11
+ end
12
+
13
+ sentence_slip_list = sentence.split(',')
14
+ return if sentence_slip_list.size.zero?
15
+ for piece in sentence_slip_list do
16
+ if /:git =>/ =~ piece
17
+ @git = $~.post_match.strip
18
+ elsif /:path =>/ =~ piece
19
+ @path = $~.post_match.strip
20
+ elsif /:configurations =>/ =~ piece
21
+ @configurations = $~.post_match.strip
22
+ elsif /:branch =>/ =~ piece
23
+ @branch = $~.post_match.strip
24
+ elsif /:tag =>/ =~ piece
25
+ @tag = $~.post_match.strip
26
+ elsif /pod /=~ piece
27
+ @name = $~.post_match.delete("'\n ")
28
+ end
29
+ # p %Q{model name:#{@name},git:#{@git},path:#{@path},config:#{@configurations},branch:#{@branch},tag:#{@tag},comment:#{@comment}}
30
+ end
31
+ end
32
+ end
33
+ end