yk_command 0.4.5 → 0.4.6

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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/yk_command.iml +20 -21
  3. data/Gemfile.lock +30 -32
  4. data/lib/yk_command/analyze/analyze.rb +153 -0
  5. data/lib/yk_command/{dependency_handler.rb → analyze/dependency_handler.rb} +0 -0
  6. data/lib/yk_command/analyze/dependency_result.rb +143 -0
  7. data/lib/yk_command/{request.rb → analyze/request.rb} +0 -0
  8. data/lib/yk_command/commands.rb +9 -300
  9. data/lib/yk_command/{template → module/template}/objc/CategoryHeader.h +0 -0
  10. data/lib/yk_command/{template → module/template}/objc/PrefixHeader.pch +0 -0
  11. data/lib/yk_command/{template → module/template}/objc/RouterDefine.h +0 -0
  12. data/lib/yk_command/{template → module/template}/objc/RouterRegister.h +0 -0
  13. data/lib/yk_command/{template → module/template}/objc/RouterRegister.m +0 -0
  14. data/lib/yk_command/{template → module/template}/objc/ServiceProtocol.h +0 -0
  15. data/lib/yk_command/{template → module/template}/objc/ServiceRegister.h +0 -0
  16. data/lib/yk_command/{template → module/template}/objc/ServiceRegister.m +0 -0
  17. data/lib/yk_command/{template → module/template}/objc/ToolsHeader.h +0 -0
  18. data/lib/yk_command/{template → module/template}/objc/VendorHeader.h +0 -0
  19. data/lib/yk_command/{template → module/template}/objc/demo/DemoViewController.h +0 -0
  20. data/lib/yk_command/{template → module/template}/objc/demo/DemoViewController.m +0 -0
  21. data/lib/yk_command/{template → module/template}/objc/demo/DemoViewModel.h +0 -0
  22. data/lib/yk_command/{template → module/template}/objc/demo/DemoViewModel.m +0 -0
  23. data/lib/yk_command/{template → module/template}/swift/RouterDefine.swift +0 -0
  24. data/lib/yk_command/module/yk_module.rb +226 -0
  25. data/lib/yk_command/version.rb +1 -1
  26. data/yk_command.gemspec +2 -3
  27. metadata +29 -42
  28. data/lib/yk_command/analyze.rb +0 -129
  29. data/lib/yk_command/yk_module.rb +0 -0
@@ -1,332 +1,41 @@
1
- require 'colored2'
2
1
  require 'thor'
3
- require 'fileutils'
4
- require 'psych'
5
- require 'yaml'
6
- require 'yk_command/analyze'
7
- require 'yk_command/request'
8
- require 'git'
2
+
3
+ require 'yk_command/analyze/analyze'
4
+ require 'yk_command/analyze/request'
5
+ require 'yk_command/module/yk_module'
9
6
 
10
7
  module YkCommand
8
+
11
9
  class CLI < Thor
12
10
  include Thor::Actions
13
11
 
14
- CONFIG_FILE = '.YKModuleFilesConfig.yml'.freeze
15
-
16
12
  desc 'generate <Path> <Module Name> <Language> <Prefix - 前缀> <Author - 作者>', '直接生成项目 例子: yk_command generate . HomeModule oc MT Tom.Liu '
17
13
  method_option :generate, aliases: '-g'
18
14
 
19
15
  def generate(path = nil, name, lang, class_prefix, author)
20
- @name = name
21
- @module = @name
22
- @lang = lang
23
- @class_prefix = class_prefix
24
- @final_path = "#{path}/#{@name}"
25
- @author = author
26
- @prefixed_module = @class_prefix + @module
27
-
28
- say "generating file in path:#{@final_path}", :green
29
16
 
30
- if File.exist?(@final_path.to_s)
31
- say "#{@final_path} 已存在:", :red
32
- else
33
- prepare_folder
34
- if File.exist?("#{@final_path}/configure")
35
- system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
36
- else
37
- say 'Template does not have a configure file', :red
38
- end
39
- yk_module_folders
40
- yk_template_files
41
- end
17
+ YkModule.new(self .args,self .options).generate(path, name, lang, class_prefix, author)
42
18
  end
43
19
 
44
20
  desc 'create <Path>', '在某个路径下交互式生成项目'
45
21
  method_option :create, aliases: '-c'
46
22
 
47
23
  def create(path = nil)
48
- path = Dir.pwd if path.nil?
49
-
50
- say '模块名:', :green
51
- config_file_path = "#{path}/#{CONFIG_FILE}"
52
- config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
53
- input_name = ask("Project name [#{config[:project]}] ?")
54
-
55
- if input_name != ''
56
- @name = input_name
57
- config[:project] = input_name if input_name != config[:project]
58
- else
59
- @name = config[:project]
60
- end
61
-
62
- File.open(config_file_path, 'w') do |f|
63
- f.write config.to_yaml
64
- end
65
-
66
- @final_path = "#{path}/#{@name}"
67
-
68
- if File.exist?(@final_path.to_s)
69
- say "#{@final_path} 已存在:", :red
70
- else
71
- prepare_folder
72
- read_config(path)
73
-
74
- if File.exist?("#{@final_path}/configure")
75
- system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
76
- else
77
- say 'Template does not have a configure file', :red
78
- end
79
-
80
- yk_module_folders
81
- yk_template_files
82
-
83
- end
84
- end
85
-
86
- no_commands do
87
- def read_config(path)
88
- config_file_path = "#{path}/#{CONFIG_FILE}"
89
- config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
90
-
91
- project = @name
92
- say '语言:', :green
93
- language = ask("Project language [#{config[:language]}] ?", limited_to: ['objc', 'swift', ''])
94
- say '类名前缀:', :green
95
- class_prefix = ask("Class prefix [#{config[:class_prefix]}] ?")
96
- say '文件作者:', :green
97
- author = ask("Author [#{config[:author]}] ?")
98
-
99
- config[:project] = project.empty? ? config[:project] || '' : project
100
- config[:language] = language.empty? ? config[:language] || 'objc' : language
101
- config[:class_prefix] = class_prefix.empty? ? config[:class_prefix] || '' : class_prefix
102
- config[:author] = author.empty? ? config[:author] || '' : author
103
-
104
- File.open(config_file_path, 'w') do |f|
105
- f.write config.to_yaml
106
- # f.write YAML.to_yaml(config)
107
- end
108
-
109
- @module = @name
110
- @class_prefix = config[:class_prefix]
111
- @prefixed_module = config[:class_prefix] + @module
112
- @project = config[:project]
113
- @author = config[:author]
114
- @date = Time.now.strftime('%d/%m/%y')
115
- @lang = config[:language]
116
- end
117
-
118
- def prepare_folder
119
- host_a = 'yeah'
120
- host_b = 'ka'
121
- template_repo_url = "http://gitlab.#{host_a}#{host_b}.com/App/iOS/YKComponents/YKProjectTemplate.git"
122
- system("git clone #{template_repo_url} #{@final_path}")
123
-
124
- # FileUtils.remove_dir(@final_path, true)
125
- # FileUtils.cp_r('/Users/imacn24/Documents/dev/YKProjectTemplate', @final_path)
126
- # FileUtils.remove_dir("#{@final_path}/.git", true)
127
- end
128
-
129
- def yk_module_folders
130
- class_folder_path = "#{@final_path}/#{@name}/Classes"
131
-
132
- first_level_folders = %w[Public Private]
133
-
134
- # public_level_folders = ['Register']
135
- # public_level_folders.each do |folder|
136
- # path = "#{class_folder_path}/Public/#{folder}"
137
- # empty_directory path
138
- # end
139
-
140
- private_level_folders = %w[Business Category Vendor Tools]
141
-
142
- first_level_folders.each do |folder|
143
- path = "#{class_folder_path}/#{folder}"
144
- empty_directory path
145
- end
146
-
147
- private_level_folders.each do |folder|
148
- path = "#{class_folder_path}/Private/#{folder}"
149
- empty_directory path
150
- end
151
- end
152
-
153
- CLI.source_root(File.dirname(__FILE__))
154
-
155
- def yk_template_files
156
- register_path = "#{@final_path}/#{@name}/Classes/Private/Register"
157
- registger = {
158
- 'RouterRegister.h' => 'RouterRegister',
159
- 'RouterRegister.m' => 'RouterRegister',
160
- 'ServiceRegister.h' => 'ServiceRegister',
161
- 'ServiceRegister.m' => 'ServiceRegister'
162
- }
163
-
164
- registger.each do |file_name, _folder|
165
- final_file = "#{register_path}/#{@prefixed_module}#{file_name}"
166
- template "#{__dir__}/template/objc/#{file_name}", final_file
167
- end
168
-
169
- public_folder_path = "#{@final_path}/#{@name}/Classes/Public"
170
-
171
- template_code_filename = ['ServiceProtocol.h', 'RouterDefine.h']
172
- template_code_filename.each do |file_name|
173
- final_file = "#{public_folder_path}/#{@prefixed_module}#{file_name}"
174
- source = "#{__dir__}/template/objc/#{file_name}"
175
- template source, final_file
176
- end
177
-
178
- swift_template_code_filename = ['RouterDefine.swift']
179
- swift_template_code_filename.each do |file_name|
180
- final_file = "#{public_folder_path}/#{@prefixed_module}_Swift_#{file_name}"
181
- source = "#{__dir__}/template/swift/#{file_name}"
182
- template source, final_file
183
- end
184
-
185
- private_folder_path = "#{@final_path}/#{@name}/Classes/Private"
186
- #pch file
187
- # pch_file_name = "PrefixHeader.pch"
188
- # final_file = "#{private_folder_path}/#{@prefixed_module}#{pch_file_name}"
189
- # source = "#{__dir__}/template/objc/#{pch_file_name}"
190
- # template source, final_file
191
-
192
- private_level_folder_files = {
193
- 'PrefixHeader.pch' => 'Business',
194
- 'CategoryHeader.h' => 'Category',
195
- 'ToolsHeader.h' => 'Tools',
196
- 'vendorHeader.h' => 'Vendor'
197
- }
198
-
199
- private_level_folder_files.each do |file_name, folder|
200
- final_prefix = @prefixed_module
201
- if file_name == 'PrefixHeader.pch'
202
- final_prefix = @module
203
- end
204
-
205
- final_file = "#{private_folder_path}/#{folder}/#{final_prefix}#{file_name}"
206
- source = "#{__dir__}/template/objc/#{file_name}"
207
- template source, final_file
208
- end
209
-
210
- business_demo_path = "#{@final_path}/#{@name}/Classes/Private/Business"
211
- demo_replace_file = ['DemoViewController.h', 'DemoViewController.m', 'DemoViewModel.h', 'DemoViewModel.m']
212
- demo_replace_file.each do |file_name|
213
- final_file = "#{business_demo_path}/Demo/#{@prefixed_module}#{file_name}"
214
- source = "#{__dir__}/template/objc/demo/#{file_name}"
215
- template source, final_file
216
- end
217
-
218
- Dir.chdir("#{@final_path}/Example") do
219
- system 'pod install'
220
- system "open './#{@name}.xcworkspace'"
221
- end
222
- end
223
-
24
+ YkModule.new(self .args,self .options ).create(path)
224
25
  end
225
26
 
226
- require 'gitlab'
227
- require 'gitlab/paginated_response'
228
-
229
- include Gitlab
230
27
  desc 'dependency <Podfile.lock Path>', '解析Podfile.lock'
231
28
  method_option :dependency, aliases: '-d'
232
29
 
233
30
  def dependency(path = nil)
234
- say "\ncurrent working folder: #{path}\n"
235
- project_path = ''
236
- project_name = ''
237
- begin
238
- g = Git.open(path)
239
- project_path = Pathname.new(g.lib.git_work_dir)
240
- project_name = g.config['remote.origin.url'].split('/').last.split('.')[0]
241
-
242
- unless project_name.empty?
243
- podfiles = Dir.glob("#{path}/**/Podfile")
244
- if !podfiles.empty?
245
- begin
246
- project_path = podfiles[podfiles.length - 1]
247
- podfile_dir = Pathname.new(project_path).dirname.to_s
248
- say "start analyze... path contain [Podfile ,Pods/ ,Podfile.lock] is #{podfile_dir} \n ", :green
249
- result = Analyzer.new.analyze(podfile_dir)
250
- app_info = Request.new.get_project_info(project_name)
251
- if app_info['id']
252
- say "uploading dependencies for project #{project_name} ..."
253
- upload_res = Request.new.upload_app_dependency(app_info['id'], result)
254
- if upload_res['code'] == 0
255
- say 'uploaded , finished ', :green
256
- say "\n<-- \n"
257
- { 'code' => '0', 'name' => project_name }
258
- else
259
- say "Error :upload dependencies for project #{project_name} - #{app_info["id"]} failed ", :red
260
- say "\n<-- \n"
261
- { 'code' => '1', 'name' => project_name }
262
- end
263
- else
264
- say "Error :Get App project ID failed , #{project_name}", :red
265
- say "\n<-- \n"
266
- { 'code' => '1', 'name' => project_name }
267
- end
268
-
269
- rescue
270
- say "Error : #{$!}", :red
271
- say "Error : #{ $@}", :red
272
- say "Skip folder : #{podfile_dir} ", :red
273
- say "\n<-- \n"
274
- { 'code' => '1', 'name' => project_name }
275
- end
276
-
277
- else
278
- say "No podfile find ,Skip folder : #{project_name} ", :yellow
279
- say "\n<-- \n"
280
- { 'code' => '2', 'name' => '' }
281
- end
282
-
283
- end
284
-
285
- rescue
286
- say "No .git folder find in #{path} ,skip folder ... ", :yellow
287
- say "\n<--\n", :yellow
288
- { 'code' => '2', 'name' => '' }
289
- end
290
-
31
+ Analyzer.new.dependency path
291
32
  end
292
33
 
293
34
  desc 'workspace_analyze <AppHost Path>', '遍历项目目录 批量上传项目依赖信息'
294
35
  method_option :workspace_analyze, aliases: '-w'
295
36
 
296
37
  def workspace_analyze(path = nil)
297
- Dir.chdir(path)
298
- subdir_list = Dir['*'].reject { |o| not File.directory?(o) }
299
- say "Start in Workspace : #{path} ...", :yellow
300
- subdir_list.each do |project_dir|
301
- say "\n#{Pathname.new(project_dir).split[1]} ", :yellow
302
- end
303
- say "\n ... start scanning to analyze ...\n\n"
304
-
305
- success_count = 0
306
- success_name_list = []
307
- failed_count = 0
308
- failed_name_list = []
309
- skip_count = 0
310
-
311
- subdir_list.each { |project_dir|
312
- project_path = "#{path}/#{project_dir}"
313
- res = dependency project_path
314
- if res['code'] == '0'
315
- success_count += 1
316
- success_name_list << res['name']
317
- elsif res['code'] == '1'
318
- failed_count += 1
319
- failed_name_list << res['name']
320
- else
321
- skip_count += 1
322
- end
323
- }
324
-
325
- say "\nworkspace analyze done ! ..."
326
- say "success:#{success_count},#{success_name_list}", :green
327
- say "failed :#{failed_count},#{failed_name_list}", :red
328
- say "skip :#{skip_count}", :yellow
329
-
38
+ Analyzer.new.workspace_analyze path
330
39
  end
331
40
 
332
41
  end
@@ -0,0 +1,226 @@
1
+
2
+ require 'colored'
3
+ require 'fileutils'
4
+ require 'psych'
5
+ require 'yaml'
6
+ require 'thor/actions'
7
+
8
+
9
+ module YkCommand
10
+
11
+ CONFIG_FILE = '.YKModuleFilesConfig.yml'.freeze
12
+
13
+ class YkModule < Thor
14
+ include Thor::Actions
15
+ no_commands do
16
+
17
+ def initialize(args = [], options = {}, config = {})
18
+ super
19
+
20
+ end
21
+
22
+ def generate(path = nil, name, lang, class_prefix, author)
23
+
24
+ @name = name
25
+ @module = @name
26
+ @lang = lang
27
+ @class_prefix = class_prefix
28
+ @final_path = "#{path}/#{@name}"
29
+ @author = author
30
+ @prefixed_module = @class_prefix + @module
31
+
32
+ say "generating file in path:#{@final_path}", :green
33
+
34
+ if File.exist?(@final_path.to_s)
35
+ say "#{@final_path} 已存在:", :red
36
+ else
37
+ prepare_folder
38
+ if File.exist?("#{@final_path}/configure")
39
+ system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
40
+ else
41
+ say 'Template does not have a configure file', :red
42
+ end
43
+ yk_module_folders
44
+ yk_template_files
45
+ end
46
+ end
47
+
48
+ def create(path = nil)
49
+
50
+ path = Dir.pwd if path.nil?
51
+ say '模块名:', :green
52
+ config_file_path = "#{path}/#{CONFIG_FILE}"
53
+ config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
54
+ input_name = ask("Project name [#{config[:project]}] ?")
55
+
56
+ if input_name != ''
57
+ @name = input_name
58
+ config[:project] = input_name if input_name != config[:project]
59
+ else
60
+ @name = config[:project]
61
+ end
62
+
63
+ File.open(config_file_path, 'w') do |f|
64
+ f.write config.to_yaml
65
+ end
66
+
67
+ @final_path = "#{path}/#{@name}"
68
+
69
+ if File.exist?(@final_path.to_s)
70
+ say "#{@final_path} 已存在:", :red
71
+ else
72
+ prepare_folder
73
+ read_config(path)
74
+
75
+ if File.exist?("#{@final_path}/configure")
76
+ system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
77
+ else
78
+ say 'Template does not have a configure file', :red
79
+ end
80
+
81
+ yk_module_folders
82
+ yk_template_files
83
+
84
+ end
85
+ end
86
+
87
+ def read_config(path)
88
+ config_file_path = "#{path}/#{CONFIG_FILE}"
89
+ config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
90
+
91
+ project = @name
92
+ say '语言:', :green
93
+ language = ask("Project language [#{config[:language]}] ?", limited_to: ['objc', 'swift', ''])
94
+ say '类名前缀:', :green
95
+ class_prefix = ask("Class prefix [#{config[:class_prefix]}] ?")
96
+ say '文件作者:', :green
97
+ author = ask("Author [#{config[:author]}] ?")
98
+
99
+ config[:project] = project.empty? ? config[:project] || '' : project
100
+ config[:language] = language.empty? ? config[:language] || 'objc' : language
101
+ config[:class_prefix] = class_prefix.empty? ? config[:class_prefix] || '' : class_prefix
102
+ config[:author] = author.empty? ? config[:author] || '' : author
103
+
104
+ File.open(config_file_path, 'w') do |f|
105
+ f.write config.to_yaml
106
+ # f.write YAML.to_yaml(config)
107
+ end
108
+
109
+ @module = @name
110
+ @class_prefix = config[:class_prefix]
111
+ @prefixed_module = config[:class_prefix] + @module
112
+ @project = config[:project]
113
+ @author = config[:author]
114
+ @date = Time.now.strftime('%d/%m/%y')
115
+ @lang = config[:language]
116
+ end
117
+
118
+ def prepare_folder
119
+ host_a = 'yeah'
120
+ host_b = 'ka'
121
+ template_repo_url = "http://gitlab.#{host_a}#{host_b}.com/App/iOS/YKComponents/YKProjectTemplate.git"
122
+ system("git clone #{template_repo_url} #{@final_path}")
123
+
124
+ # FileUtils.remove_dir(@final_path, true)
125
+ # FileUtils.cp_r('/Users/imacn24/Documents/dev/YKProjectTemplate', @final_path)
126
+ # FileUtils.remove_dir("#{@final_path}/.git", true)
127
+ end
128
+
129
+ def yk_module_folders
130
+ class_folder_path = "#{@final_path}/#{@name}/Classes"
131
+
132
+ first_level_folders = %w[Public Private]
133
+
134
+ # public_level_folders = ['Register']
135
+ # public_level_folders.each do |folder|
136
+ # path = "#{class_folder_path}/Public/#{folder}"
137
+ # empty_directory path
138
+ # end
139
+
140
+ private_level_folders = %w[Business Category Vendor Tools]
141
+
142
+ first_level_folders.each do |folder|
143
+ path = "#{class_folder_path}/#{folder}"
144
+ empty_directory path
145
+ end
146
+
147
+ private_level_folders.each do |folder|
148
+ path = "#{class_folder_path}/Private/#{folder}"
149
+ empty_directory path
150
+ end
151
+ end
152
+
153
+
154
+ YkCommand::YkModule.source_root(File.dirname(__FILE__))
155
+ def yk_template_files
156
+
157
+ register_path = "#{@final_path}/#{@name}/Classes/Private/Register"
158
+ registger = {
159
+ 'RouterRegister.h' => 'RouterRegister',
160
+ 'RouterRegister.m' => 'RouterRegister',
161
+ 'ServiceRegister.h' => 'ServiceRegister',
162
+ 'ServiceRegister.m' => 'ServiceRegister'
163
+ }
164
+
165
+ registger.each do |file_name, _folder|
166
+ final_file = "#{register_path}/#{@prefixed_module}#{file_name}"
167
+ template "#{__dir__}/template/objc/#{file_name}", final_file
168
+ end
169
+
170
+ public_folder_path = "#{@final_path}/#{@name}/Classes/Public"
171
+
172
+ template_code_filename = ['ServiceProtocol.h', 'RouterDefine.h']
173
+ template_code_filename.each do |file_name|
174
+ final_file = "#{public_folder_path}/#{@prefixed_module}#{file_name}"
175
+ source = "#{__dir__}/template/objc/#{file_name}"
176
+ template source, final_file
177
+ end
178
+
179
+ swift_template_code_filename = ['RouterDefine.swift']
180
+ swift_template_code_filename.each do |file_name|
181
+ final_file = "#{public_folder_path}/#{@prefixed_module}_Swift_#{file_name}"
182
+ source = "#{__dir__}/template/swift/#{file_name}"
183
+ template source, final_file
184
+ end
185
+
186
+ private_folder_path = "#{@final_path}/#{@name}/Classes/Private"
187
+ #pch file
188
+ # pch_file_name = "PrefixHeader.pch"
189
+ # final_file = "#{private_folder_path}/#{@prefixed_module}#{pch_file_name}"
190
+ # source = "#{__dir__}/template/objc/#{pch_file_name}"
191
+ # template source, final_file
192
+
193
+ private_level_folder_files = {
194
+ 'PrefixHeader.pch' => 'Business',
195
+ 'CategoryHeader.h' => 'Category',
196
+ 'ToolsHeader.h' => 'Tools',
197
+ 'vendorHeader.h' => 'Vendor'
198
+ }
199
+
200
+ private_level_folder_files.each do |file_name, folder|
201
+ final_prefix = @prefixed_module
202
+ if file_name == 'PrefixHeader.pch'
203
+ final_prefix = @module
204
+ end
205
+
206
+ final_file = "#{private_folder_path}/#{folder}/#{final_prefix}#{file_name}"
207
+ source = "#{__dir__}/template/objc/#{file_name}"
208
+ template source, final_file
209
+ end
210
+
211
+ business_demo_path = "#{@final_path}/#{@name}/Classes/Private/Business"
212
+ demo_replace_file = ['DemoViewController.h', 'DemoViewController.m', 'DemoViewModel.h', 'DemoViewModel.m']
213
+ demo_replace_file.each do |file_name|
214
+ final_file = "#{business_demo_path}/Demo/#{@prefixed_module}#{file_name}"
215
+ source = "#{__dir__}/template/objc/demo/#{file_name}"
216
+ template source, final_file
217
+ end
218
+
219
+ Dir.chdir("#{@final_path}/Example") do
220
+ system 'pod install'
221
+ system "open './#{@name}.xcworkspace'"
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module YkCommand
4
- VERSION = '0.4.5'.freeze
4
+ VERSION = '0.4.6'.freeze
5
5
  end
data/yk_command.gemspec CHANGED
@@ -41,16 +41,15 @@ Gem::Specification.new do |spec|
41
41
  spec.add_development_dependency 'cocoapods'
42
42
  spec.add_development_dependency 'cocoapods-core'
43
43
  spec.add_development_dependency 'httparty'
44
- spec.add_development_dependency 'gitlab'
45
44
 
46
45
  spec.add_dependency 'git'
47
46
  spec.add_dependency 'bundler'
48
47
  spec.add_dependency 'thor'
49
48
  spec.add_dependency 'xcodeproj'
50
49
  spec.add_dependency 'colored'
51
- spec.add_dependency 'pathname'
50
+ spec.add_dependency 'colored2'
51
+ spec.add_dependency 'pathname','0.1.0'
52
52
  spec.add_dependency 'httparty'
53
- spec.add_dependency 'gitlab'
54
53
  # For more information and examples about making a new gem, checkout our
55
54
  # guide at: https://bundler.io/guides/creating_gem.html
56
55
  end