qcloudhive 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/Hive.iml +54 -0
- data/.idea/dictionaries/dongzhao.xml +7 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.idea/workspace.xml +699 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Documents/Images/93A5AC58-17D5-4D3F-B5A8-E509CF429BD0.png +0 -0
- data/Documents/Images/C702C824-11B1-47A8-BB15-9F6F14F2B649.png +0 -0
- data/Gem/qcloudhive/.idea/misc.xml +4 -0
- data/Gem/qcloudhive/.idea/modules.xml +8 -0
- data/Gem/qcloudhive/.idea/qcloudhive.iml +8 -0
- data/Gem/qcloudhive/.idea/workspace.xml +383 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +122 -0
- data/LICENSE.txt +21 -0
- data/README.md +273 -0
- data/Rakefile +5 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/Hive +302 -0
- data/lib/qcloudhive.rb +16 -0
- data/lib/qcloudhive/config.rb +176 -0
- data/lib/qcloudhive/feature.rb +92 -0
- data/lib/qcloudhive/framework.rb +192 -0
- data/lib/qcloudhive/git_helper.rb +75 -0
- data/lib/qcloudhive/gitlab.rb +69 -0
- data/lib/qcloudhive/manifest.rb +346 -0
- data/lib/qcloudhive/module.rb +228 -0
- data/lib/qcloudhive/pod_helper.rb +119 -0
- data/lib/qcloudhive/product.rb +32 -0
- data/lib/qcloudhive/project.rb +108 -0
- data/lib/qcloudhive/repo.rb +177 -0
- data/lib/qcloudhive/spec_helper.rb +45 -0
- data/lib/qcloudhive/utils.rb +46 -0
- data/lib/qcloudhive/version.rb +3 -0
- data/lib/qcloudhive/xcodeproj.rb +163 -0
- data/qcloudhive.gemspec +43 -0
- data/resources/shellscriptes/HiveApp.sh +156 -0
- data/resources/shellscriptes/HiveFramework +158 -0
- data/resources/shellscriptes/build_framework.sh +76 -0
- data/resources/templates/AppDefaultTemplate/.gitignore +41 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate.xcodeproj/project.pbxproj +290 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate/Info.plist +24 -0
- data/resources/templates/AppDefaultTemplate/Podfile +9 -0
- data/resources/templates/HiveAppTemplate/.gitignore +41 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate.xcodeproj/project.pbxproj +539 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/AppDelegate.h +17 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/AppDelegate.m +51 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Base.lproj/LaunchScreen.storyboard +27 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Base.lproj/Main.storyboard +26 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Info.plist +45 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/ViewController.h +15 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/ViewController.m +29 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/main.m +16 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateTests/HiveAppTemplateTests.m +39 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateTests/Info.plist +22 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateUITests/HiveAppTemplateUITests.m +40 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateUITests/Info.plist +22 -0
- data/resources/templates/HiveAppTemplate/Podfile +20 -0
- data/resources/templates/commonConf.sh +9 -0
- data/resources/templates/manifests/build.rb +8 -0
- data/resources/templates/manifests/default.xml +12 -0
- data/resources/templates/template.podspec +37 -0
- metadata +321 -0
data/exe/Hive
ADDED
@@ -0,0 +1,302 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rake'
|
3
|
+
require 'optparse'
|
4
|
+
require 'pathname'
|
5
|
+
require 'uri'
|
6
|
+
require 'cocoapods'
|
7
|
+
require 'git'
|
8
|
+
require 'xcodeproj'
|
9
|
+
require 'parseconfig'
|
10
|
+
require 'qcloudhive/config'
|
11
|
+
require 'qcloudhive'
|
12
|
+
require 'qcloudhive/version'
|
13
|
+
require 'qcloudhive/project'
|
14
|
+
require 'qcloudhive/framework'
|
15
|
+
require 'qcloudhive/gitlab'
|
16
|
+
require 'qcloudhive/utils'
|
17
|
+
require 'qcloudhive/product'
|
18
|
+
require 'qcloudhive/manifest'
|
19
|
+
require 'qcloudhive/module'
|
20
|
+
require 'qcloudhive/repo'
|
21
|
+
require 'qcloudhive/xcodeproj'
|
22
|
+
require "qcloudhive/feature"
|
23
|
+
QCloudHive::Config.setup
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
# moudle commands
|
28
|
+
CMD_MODULE = "module"
|
29
|
+
CMD_MODULE_ADD = "add"
|
30
|
+
CMD_MODULE_REALASE = "release"
|
31
|
+
CMD_MODULE_DISLINK = 'dislink'
|
32
|
+
CMD_MODULE_GENERATE_CODE = "generate"
|
33
|
+
|
34
|
+
# manifest commands
|
35
|
+
CMD_MANIFEST = "manifest"
|
36
|
+
CMD_MANIFEST_PUSH = "push"
|
37
|
+
|
38
|
+
# framework commands
|
39
|
+
CMD_FRAMEWORK = "framework"
|
40
|
+
CMD_FRAMEWORK_BUILD = "build"
|
41
|
+
|
42
|
+
# product commands
|
43
|
+
CMD_PRODUCT = "product"
|
44
|
+
CMD_PRODUCT_INIT = "init"
|
45
|
+
CMD_PRODUCT_UPDATE = 'update'
|
46
|
+
CMD_PRODUCT_BUILD = 'build'
|
47
|
+
|
48
|
+
|
49
|
+
# project command
|
50
|
+
CMD_PROJECT = "project"
|
51
|
+
CMD_PROJECT_INIT = "init"
|
52
|
+
|
53
|
+
|
54
|
+
# repo command
|
55
|
+
CMD_REPO = "repo"
|
56
|
+
CMD_REPO_STATUS = "status"
|
57
|
+
CMD_REPO_REQUEST = 'request'
|
58
|
+
|
59
|
+
# feature command
|
60
|
+
CMD_FEATURE = "feature"
|
61
|
+
CMD_FEATURE_LIST = "list"
|
62
|
+
CMD_FEATURE_START = "start"
|
63
|
+
CMD_FEATURE_COMMIT = "commit"
|
64
|
+
CMD_FEATURE_PUSH = "push"
|
65
|
+
CMD_FEATURE_CHECKDEPENDENCY = "dependency"
|
66
|
+
|
67
|
+
|
68
|
+
puts "Hive-V:#{QCloudHive::VERSION} "
|
69
|
+
optionParser = OptionParser.new do |opts|
|
70
|
+
opts.banner = 'Hive is a toolkit for mananger iOS multi modules, it base google-repo & git & cocoapods'
|
71
|
+
opts.on('-h', '--help', 'Displays Help') do
|
72
|
+
puts opts
|
73
|
+
puts '''
|
74
|
+
Please use sub commnd:
|
75
|
+
create-framework create a module
|
76
|
+
push-manifest push the manifest files
|
77
|
+
init 创建新的产品,空
|
78
|
+
build-framework 打包framework
|
79
|
+
add-module add exist module
|
80
|
+
'''
|
81
|
+
exit
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
options = {}
|
86
|
+
#default value
|
87
|
+
# options[:c_repo] = false
|
88
|
+
REPO_COMMANDS = {
|
89
|
+
CMD_REPO_STATUS => OptionParser.new do |opts|
|
90
|
+
end ,
|
91
|
+
CMD_REPO_REQUEST => OptionParser.new do |opts|
|
92
|
+
opts.on("-m message", "--message Message", "the commit message") do |v|
|
93
|
+
options[:i_message] = v
|
94
|
+
end
|
95
|
+
end
|
96
|
+
}
|
97
|
+
|
98
|
+
MANIFEST_COMMANDS = {
|
99
|
+
CMD_MANIFEST_PUSH => OptionParser.new do |opts|
|
100
|
+
end
|
101
|
+
}
|
102
|
+
FRAMEWORK_COMMANDS = {
|
103
|
+
CMD_FRAMEWORK_BUILD => OptionParser.new do |opts|
|
104
|
+
opts.on("-n NAME", "--name Name", "the project name") do |v|
|
105
|
+
options[:i_name] = v
|
106
|
+
end
|
107
|
+
opts.on("-u a,b,c","--unlink a,b,c", Array, "Array unlined frameworks or modules") { |list|
|
108
|
+
options[:i_unlinked_frameworks] = list
|
109
|
+
}
|
110
|
+
opts.on("--[no-]sim", "build similuator arch") { |value|
|
111
|
+
options[:i_build_sim] = value
|
112
|
+
}
|
113
|
+
end,
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
PRODUCST_COMMANDS = {
|
118
|
+
CMD_PRODUCT_INIT => OptionParser.new do |opts|
|
119
|
+
opts.banner = "Create A Demo App (empty)"
|
120
|
+
opts.on("-n NAME", "--name Name", "the module name") do |v|
|
121
|
+
options[:c_name] = v
|
122
|
+
end
|
123
|
+
opts.on("-u URL", "--url url", "the git remote url") do |v|
|
124
|
+
options[:c_url] = v
|
125
|
+
end
|
126
|
+
end,
|
127
|
+
CMD_PRODUCT_UPDATE => OptionParser.new do |opts|
|
128
|
+
opts.banner = "update"
|
129
|
+
opts.on("-l" , "--library", "use static library ") do
|
130
|
+
L.info("setup use framework false")
|
131
|
+
L.info("Config #{QCloudHive::Config}")
|
132
|
+
QCloudHive::Config.useFrameworks = false
|
133
|
+
end
|
134
|
+
end,
|
135
|
+
CMD_PRODUCT_BUILD => OptionParser.new do |opts|
|
136
|
+
end
|
137
|
+
}
|
138
|
+
|
139
|
+
PROJECT_COMMANDS = {
|
140
|
+
CMD_PROJECT_INIT => OptionParser.new do |opts|
|
141
|
+
opts.on("-n NAME", "--name Name", "the project name") do |v|
|
142
|
+
options["name"] = v
|
143
|
+
end
|
144
|
+
end,
|
145
|
+
}
|
146
|
+
|
147
|
+
MODULE_COMMANDS = {
|
148
|
+
CMD_MODULE_ADD => OptionParser.new do |opts|
|
149
|
+
opts.banner = "Add a exist modules for ul"
|
150
|
+
opts.on("-n NAME", "--name Name", "the module name") do |v|
|
151
|
+
options[:c_name] = v
|
152
|
+
end
|
153
|
+
opts.on("-u URL", "--url url", "the git remote url") do |v|
|
154
|
+
options[:c_url] = v
|
155
|
+
end
|
156
|
+
opts.on("-p PATH", "--repo-path Path", "repo local relevate path") do |v|
|
157
|
+
options[:c_rpath] = v
|
158
|
+
end
|
159
|
+
end,
|
160
|
+
CMD_MODULE_REALASE => OptionParser.new do |opts|
|
161
|
+
|
162
|
+
end,
|
163
|
+
|
164
|
+
CMD_MODULE_DISLINK => OptionParser.new do |opts|
|
165
|
+
opts.banner = "delete a module form manifest"
|
166
|
+
opts.on("-n NAME", "--name Name", "the project name") do |v|
|
167
|
+
options[:i_name] = v
|
168
|
+
end
|
169
|
+
end,
|
170
|
+
|
171
|
+
CMD_MODULE_GENERATE_CODE => OptionParser.new do |opts|
|
172
|
+
|
173
|
+
end,
|
174
|
+
}
|
175
|
+
|
176
|
+
FEATURE_COMMANDS = {
|
177
|
+
CMD_FEATURE_LIST => OptionParser.new do |opts|
|
178
|
+
opts.banner = "delete a module form manifest"
|
179
|
+
opts.on("-n NAME", "--name Name", "the project name") do |v|
|
180
|
+
options[:i_name] = v
|
181
|
+
end
|
182
|
+
end,
|
183
|
+
CMD_FEATURE_START => OptionParser.new do |opts|
|
184
|
+
opts.banner = "delete a module form manifest"
|
185
|
+
opts.on("-n NAME", "--name Name", "the project name") do |v|
|
186
|
+
options[:i_name] = v
|
187
|
+
end
|
188
|
+
end,
|
189
|
+
CMD_FEATURE_COMMIT => OptionParser.new do |opts|
|
190
|
+
opts.banner = "delete a module form manifest"
|
191
|
+
opts.on("-m message", "--message Message", "the commit message") do |v|
|
192
|
+
options[:i_message] = v
|
193
|
+
end
|
194
|
+
end,
|
195
|
+
CMD_FEATURE_PUSH => OptionParser.new do |opts|
|
196
|
+
end,
|
197
|
+
CMD_FEATURE_CHECKDEPENDENCY =>OptionParser.new do |opts|
|
198
|
+
end,
|
199
|
+
}
|
200
|
+
|
201
|
+
|
202
|
+
GLOBAL_COMMANDS = {
|
203
|
+
CMD_MANIFEST => MANIFEST_COMMANDS,
|
204
|
+
CMD_PROJECT => PROJECT_COMMANDS,
|
205
|
+
CMD_MODULE => MODULE_COMMANDS,
|
206
|
+
CMD_PRODUCT => PRODUCST_COMMANDS,
|
207
|
+
CMD_FRAMEWORK => FRAMEWORK_COMMANDS,
|
208
|
+
CMD_REPO => REPO_COMMANDS,
|
209
|
+
CMD_FEATURE => FEATURE_COMMANDS,
|
210
|
+
}
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
# begin parse and exe
|
215
|
+
optionParser.order!
|
216
|
+
command = ARGV.shift
|
217
|
+
if command == nil
|
218
|
+
L.error "Please input sub command"
|
219
|
+
exit(1)
|
220
|
+
end
|
221
|
+
cmd = GLOBAL_COMMANDS[command]
|
222
|
+
if cmd == nil
|
223
|
+
L.error "Please input sub command, unkonw cmd [#{command}]"
|
224
|
+
exit(1)
|
225
|
+
end
|
226
|
+
|
227
|
+
if cmd.instance_of? OptionParser
|
228
|
+
cmd.order!
|
229
|
+
end
|
230
|
+
|
231
|
+
L.debug "Command: #{command} "
|
232
|
+
|
233
|
+
COMMAND_MAPPER = {
|
234
|
+
CMD_PROJECT => {
|
235
|
+
CMD_PROJECT_INIT => Proc.new do |c, opts|
|
236
|
+
QCloudHive::Project.init(c, opts)
|
237
|
+
end,
|
238
|
+
},
|
239
|
+
CMD_MODULE => {
|
240
|
+
CMD_MODULE_ADD => Proc.new do |c, opts|
|
241
|
+
QCloudHive::HiveModule.add(c,opts)
|
242
|
+
end,
|
243
|
+
CMD_MODULE_REALASE => Proc.new do |c, opts|
|
244
|
+
QCloudHive::HiveModule.release(c, opts)
|
245
|
+
end,
|
246
|
+
CMD_MODULE_DISLINK => Proc.new do |c, opts|
|
247
|
+
QCloudHive::HiveModule.dislink(c, opts)
|
248
|
+
end
|
249
|
+
},
|
250
|
+
CMD_MANIFEST => {
|
251
|
+
CMD_MANIFEST_PUSH => Proc.new do |c, opts|
|
252
|
+
QCloudHive.syncManifest
|
253
|
+
end
|
254
|
+
},
|
255
|
+
CMD_FRAMEWORK => {
|
256
|
+
CMD_FRAMEWORK_BUILD => Proc.new do |c, opts|
|
257
|
+
QCloudHive.BuildFramework(c, opts)
|
258
|
+
end
|
259
|
+
},
|
260
|
+
CMD_PRODUCT => {
|
261
|
+
CMD_PRODUCT_INIT => Proc.new do |c, opts|
|
262
|
+
QCloudHive.CreateAPP(c, opts)
|
263
|
+
end,
|
264
|
+
CMD_PRODUCT_UPDATE => Proc.new do |c, opts|
|
265
|
+
QCloudHive.UpdateProducts c, opts
|
266
|
+
end,
|
267
|
+
CMD_PRODUCT_BUILD => Proc.new do |c, opts|
|
268
|
+
QCloudHive.RemapProduct c, opts
|
269
|
+
end
|
270
|
+
},
|
271
|
+
|
272
|
+
CMD_REPO => {
|
273
|
+
CMD_REPO_STATUS => Proc.new do |c, opts|
|
274
|
+
QCloudHive::Repo.checkStatus(c, opts)
|
275
|
+
end,
|
276
|
+
CMD_REPO_REQUEST => Proc.new do |c, opts|
|
277
|
+
QCloudHive::Repo.request(c, opts)
|
278
|
+
end
|
279
|
+
},
|
280
|
+
|
281
|
+
CMD_FEATURE => {
|
282
|
+
CMD_FEATURE_COMMIT => Proc.new do |c, opts|
|
283
|
+
QCloudHive.commitFeature(c, opts)
|
284
|
+
end,
|
285
|
+
CMD_FEATURE_PUSH => Proc.new do |c, opts|
|
286
|
+
QCloudHive.pushFeature(c, opts)
|
287
|
+
end,
|
288
|
+
CMD_FEATURE_CHECKDEPENDENCY => Proc.new do |c, opts|
|
289
|
+
QCloudHive.checkDependencies(c, opts)
|
290
|
+
end,
|
291
|
+
}
|
292
|
+
}
|
293
|
+
|
294
|
+
|
295
|
+
if GLOBAL_COMMANDS[command].instance_of? Hash
|
296
|
+
subcommand = ARGV.shift
|
297
|
+
cmd = GLOBAL_COMMANDS[command][subcommand]
|
298
|
+
cmd.order!
|
299
|
+
method = COMMAND_MAPPER[command][subcommand]
|
300
|
+
L.debug "#{options}"
|
301
|
+
method.call(cmd , options)
|
302
|
+
end
|
data/lib/qcloudhive.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require "qcloudhive/version"
|
2
|
+
|
3
|
+
module QCloudHive
|
4
|
+
require 'pathname'
|
5
|
+
require 'qcloudhive/version'
|
6
|
+
require 'qcloudhive/project'
|
7
|
+
require 'qcloudhive/framework'
|
8
|
+
require 'qcloudhive/config'
|
9
|
+
require 'qcloudhive/gitlab'
|
10
|
+
require 'qcloudhive/utils'
|
11
|
+
require 'qcloudhive/product'
|
12
|
+
require 'qcloudhive/manifest'
|
13
|
+
require 'qcloudhive/module'
|
14
|
+
require 'qcloudhive/repo'
|
15
|
+
require 'colorize'
|
16
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
require 'parseconfig'
|
2
|
+
require "pathname"
|
3
|
+
require_relative 'utils'
|
4
|
+
|
5
|
+
|
6
|
+
module QCloudHive
|
7
|
+
CODE_OA_GROUDP = "CodeOA"
|
8
|
+
CODE_OA_CONFIG_PRIVATE_TOKEN = "private_token"
|
9
|
+
CODE_OA_TEAM_NAME = "team"
|
10
|
+
REPO_ROOT_NAME = ".repo"
|
11
|
+
module Config
|
12
|
+
SHARE_CONFIG = "Share"
|
13
|
+
USE_FRAMEWORKS = "use_framework"
|
14
|
+
class << self
|
15
|
+
@@projectRootDirectory = nil
|
16
|
+
@@reporoot = nil
|
17
|
+
@@manifest = nil
|
18
|
+
@@setuped = false
|
19
|
+
attr_accessor :team
|
20
|
+
attr_accessor :cmdPath
|
21
|
+
attr_accessor :runPath
|
22
|
+
attr_accessor :namespaceID
|
23
|
+
attr_accessor :templateManifestPath
|
24
|
+
attr_accessor :templatesPath
|
25
|
+
attr_accessor :scriptesDirectory
|
26
|
+
attr_accessor :bitcodeEnable
|
27
|
+
attr_accessor :buildFromCommit
|
28
|
+
attr_accessor :useFrameworks
|
29
|
+
end
|
30
|
+
|
31
|
+
def Config.repoRoot()
|
32
|
+
if @@reporoot == nil
|
33
|
+
@@reporoot = QCloudHive.FindRepoRoot(Dir.pwd)
|
34
|
+
if @@reporoot == nil
|
35
|
+
Error "当前不再任何项目目录下面,请确认!!!"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
return @@reporoot
|
39
|
+
end
|
40
|
+
def Config.dumpShareConfig
|
41
|
+
conf = "[#{SHARE_CONFIG}]
|
42
|
+
#{USE_FRAMEWORKS} = #{useFrameworks}"
|
43
|
+
file = Pathname(repoRoot()).join("share.conf").to_path
|
44
|
+
File.open(file, "w") { |f|
|
45
|
+
f.write conf
|
46
|
+
}
|
47
|
+
end
|
48
|
+
def Config.loadShareConfig
|
49
|
+
configFilePath = Pathname(repoRoot()).join("share.conf").to_path
|
50
|
+
if File.exist?(configFilePath) != true
|
51
|
+
return
|
52
|
+
end
|
53
|
+
config = ParseConfig.new(configFilePath)
|
54
|
+
L.info("config #{config} #{config.class}")
|
55
|
+
if not config.nil?
|
56
|
+
shareConfig = config[SHARE_CONFIG]
|
57
|
+
L.info("shareConfig #{shareConfig} #{shareConfig.class}")
|
58
|
+
if not shareConfig.nil?
|
59
|
+
useFramework = config[SHARE_CONFIG][USE_FRAMEWORKS]
|
60
|
+
if useFramework == "true"
|
61
|
+
Config.useFrameworks = true
|
62
|
+
elsif useFramework == "false"
|
63
|
+
Config.useFrameworks = false
|
64
|
+
end
|
65
|
+
L.info("#{useFramework} #{useFramework.class}")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
def Config.projectRootDirectory()
|
70
|
+
if @@projectRootDirectory.nil?
|
71
|
+
@@projectRootDirectory = Pathname(repoRoot).parent.to_path
|
72
|
+
end
|
73
|
+
return @@projectRootDirectory
|
74
|
+
end
|
75
|
+
def Config.version()
|
76
|
+
return QCloudHive::VERSION
|
77
|
+
end
|
78
|
+
|
79
|
+
def Config.podSource()
|
80
|
+
Pod::Config::instance.sources_manager.aggregate
|
81
|
+
end
|
82
|
+
|
83
|
+
def Config.manifest()
|
84
|
+
if @@manifest == nil
|
85
|
+
manifestPath = repoRoot+ "manifests/default.xml"
|
86
|
+
L.debug "manifestPath #{manifestPath}"
|
87
|
+
@@manifest = Manifest.new(manifestPath)
|
88
|
+
end
|
89
|
+
return @@manifest
|
90
|
+
end
|
91
|
+
|
92
|
+
def Config.setup()
|
93
|
+
if @@setuped == true
|
94
|
+
return
|
95
|
+
end
|
96
|
+
@@setuped = true
|
97
|
+
Config.useFrameworks = true
|
98
|
+
configFilePath = Pathname("~/.hiveconfig").expand_path
|
99
|
+
if File.exist?(configFilePath) != true
|
100
|
+
raise "Hive 配置文件不存在,请检查"
|
101
|
+
end
|
102
|
+
config = ParseConfig.new(configFilePath)
|
103
|
+
if config[CODE_OA_GROUDP].nil?
|
104
|
+
Error "没有CodeOA的配置信息,请检查"
|
105
|
+
end
|
106
|
+
private_token = config[CODE_OA_GROUDP][CODE_OA_CONFIG_PRIVATE_TOKEN]
|
107
|
+
if private_token == nil
|
108
|
+
raise "没有设置CodeOA的private_token请检查并设置"
|
109
|
+
end
|
110
|
+
team = config[CODE_OA_GROUDP][CODE_OA_TEAM_NAME]
|
111
|
+
if team == nil
|
112
|
+
raise "没有设置Team Name请设置"
|
113
|
+
end
|
114
|
+
#log level config
|
115
|
+
hiveGroup = config["Hive"]
|
116
|
+
if not hiveGroup.nil?
|
117
|
+
logLevel = hiveGroup["loglevel"]
|
118
|
+
if logLevel.nil?
|
119
|
+
L.level = Logger::ERROR
|
120
|
+
elsif logLevel == "INFO"
|
121
|
+
L.level = Logger::INFO
|
122
|
+
elsif logLevel == "DEBUG"
|
123
|
+
L.level = Logger::DEBUG
|
124
|
+
elsif logLevel == "ERROR"
|
125
|
+
L.level = Logger::ERROR
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
puts "LogLevel ........ #{L.level} logLevel"
|
130
|
+
#code OA
|
131
|
+
CodeOA.setup(private_token)
|
132
|
+
Config.team = team
|
133
|
+
Config.cmdPath = Pathname.new(__FILE__).realpath.parent.parent.parent.to_path+"/"
|
134
|
+
Config.runPath = Dir.pwd + "/"
|
135
|
+
Config.templatesPath = Config.cmdPath+"resources/templates/"
|
136
|
+
Config.templateManifestPath = Config.templatesPath+"manifests/"
|
137
|
+
Config.scriptesDirectory = Config.cmdPath+"resources/shellscriptes/"
|
138
|
+
L.info "manifest path is #{Config.templateManifestPath}"
|
139
|
+
codeGroup = Gitlab.groups.select{|g| g.name == team}.first
|
140
|
+
if codeGroup == nil
|
141
|
+
Error("您不属于Group #{team}")
|
142
|
+
end
|
143
|
+
Config.namespaceID = codeGroup.id
|
144
|
+
@@reporoot = nil
|
145
|
+
@@manifest = nil
|
146
|
+
@@projectRootDirectory = nil
|
147
|
+
@@bitcodeEnable = false
|
148
|
+
@@buildFromCommit = false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
def QCloudHive.FindRepoRoot(path)
|
152
|
+
pwd = Pathname(path)
|
153
|
+
if pwd.to_path == "/"
|
154
|
+
return nil
|
155
|
+
end
|
156
|
+
if pwd.to_path == '.repo'
|
157
|
+
return pwd
|
158
|
+
end
|
159
|
+
aimPath = nil
|
160
|
+
pwd.entries.each { |x|
|
161
|
+
if x.to_path == REPO_ROOT_NAME
|
162
|
+
aimPath = pwd.join(x)
|
163
|
+
break
|
164
|
+
end
|
165
|
+
}
|
166
|
+
if aimPath != nil
|
167
|
+
return aimPath
|
168
|
+
else
|
169
|
+
parentDir = pwd.dirname
|
170
|
+
if parentDir.to_path == REPO_ROOT_NAME
|
171
|
+
return nil
|
172
|
+
end
|
173
|
+
return FindRepoRoot(parentDir)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|