cova 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/cova +10 -5
- data/lib/cova.rb +12 -312
- data/lib/covaio.rb +116 -0
- data/lib/covalog.rb +50 -0
- data/lib/covamain.rb +176 -0
- metadata +10 -7
data/bin/cova
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'colorize'
|
7
|
+
require 'fileutils'
|
8
|
+
require 'thor'
|
9
|
+
require 'cocoapods'
|
10
|
+
require 'covalog'
|
11
|
+
require 'covaio'
|
12
|
+
require 'covamain'
|
8
13
|
|
9
14
|
Cova.start
|
data/lib/cova.rb
CHANGED
@@ -1,312 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def _info(msg)
|
14
|
-
puts
|
15
|
-
puts msg.blue
|
16
|
-
puts
|
17
|
-
end
|
18
|
-
|
19
|
-
def _ok
|
20
|
-
print "[ ".black
|
21
|
-
print "OK".green
|
22
|
-
print " ]".black
|
23
|
-
puts
|
24
|
-
end
|
25
|
-
|
26
|
-
def _error
|
27
|
-
print "[".black
|
28
|
-
print "FAIL".red
|
29
|
-
print "]".black
|
30
|
-
puts
|
31
|
-
end
|
32
|
-
|
33
|
-
def _success
|
34
|
-
puts
|
35
|
-
print "=".black * 9
|
36
|
-
print " SUCCESS ".green
|
37
|
-
puts "=".black * 9
|
38
|
-
puts
|
39
|
-
end
|
40
|
-
|
41
|
-
def _fail
|
42
|
-
puts
|
43
|
-
print "=".black * 8
|
44
|
-
print " FAILED ".red
|
45
|
-
puts "=".black * 8
|
46
|
-
puts
|
47
|
-
end
|
48
|
-
|
49
|
-
def _start(msg)
|
50
|
-
puts
|
51
|
-
print "=".black * 3
|
52
|
-
print " " + msg.black + " "
|
53
|
-
puts "=".black * 3
|
54
|
-
puts
|
55
|
-
end
|
56
|
-
|
57
|
-
def _cmd(cmd)
|
58
|
-
pipe = IO.popen(cmd)
|
59
|
-
puts cmd.blue
|
60
|
-
while (line = pipe.gets)
|
61
|
-
print line.black
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def _covadir
|
66
|
-
File.expand_path("~/.cova")
|
67
|
-
end
|
68
|
-
|
69
|
-
def _covamodsdir
|
70
|
-
user_home_dir = File.expand_path("~/.cocoapods/cova")
|
71
|
-
end
|
72
|
-
|
73
|
-
def _builddir
|
74
|
-
File.expand_path("~/Library/Developer/Xcode/DerivedData")
|
75
|
-
end
|
76
|
-
|
77
|
-
def _init
|
78
|
-
user_home_dir = File.expand_path("~")
|
79
|
-
cova_dir = user_home_dir + "/.cova"
|
80
|
-
cocoapods_cova_dir = user_home_dir + "/.cocoapods/cova"
|
81
|
-
|
82
|
-
_start "Initializing Cova"
|
83
|
-
|
84
|
-
if File.directory?(cova_dir)
|
85
|
-
_msg "Cleaning up previous installation"
|
86
|
-
FileUtils.rm_r cova_dir, :force => true
|
87
|
-
if File.directory?(cova_dir)
|
88
|
-
_error
|
89
|
-
_fail
|
90
|
-
exit
|
91
|
-
else
|
92
|
-
_ok
|
93
|
-
if File.directory?(cocoapods_cova_dir)
|
94
|
-
_msg "Cleaning Cova Mods"
|
95
|
-
FileUtils.rm_r cocoapods_cova_dir
|
96
|
-
if File.directory?(cocoapods_cova_dir)
|
97
|
-
_error
|
98
|
-
_fail
|
99
|
-
exit
|
100
|
-
else
|
101
|
-
_ok
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
_msg "Preparing to install Cova in #{cova_dir}"
|
108
|
-
FileUtils.mkdir cova_dir
|
109
|
-
if File.directory?(cova_dir)
|
110
|
-
_ok
|
111
|
-
FileUtils.cd cova_dir
|
112
|
-
_cmd ("git clone #{XCTOOL_REPO}")
|
113
|
-
if File.directory?(cova_dir + "/xctool")
|
114
|
-
_cmd ("git clone #{COVA_REPO}")
|
115
|
-
if File.directory?(cova_dir + "/cova")
|
116
|
-
_cmd "pod repo add cova #{COVA_MODS_REPO}"
|
117
|
-
if File.directory?(cocoapods_cova_dir)
|
118
|
-
status
|
119
|
-
_success
|
120
|
-
puts
|
121
|
-
puts "Congrats! Cove is now installed. Enjoy Cova and build the next great app sensation!".green
|
122
|
-
puts
|
123
|
-
puts "For more info visit the homepage: http://cova.io".black
|
124
|
-
puts
|
125
|
-
else
|
126
|
-
_msg "Could not create Cova Mods home"
|
127
|
-
_error
|
128
|
-
_error
|
129
|
-
exit
|
130
|
-
end
|
131
|
-
else
|
132
|
-
_msg "cova did not clone correctly"
|
133
|
-
_error
|
134
|
-
_fail
|
135
|
-
exit
|
136
|
-
end
|
137
|
-
else
|
138
|
-
_msg "xctool did not clone correctly"
|
139
|
-
_error
|
140
|
-
_fail
|
141
|
-
exit
|
142
|
-
end
|
143
|
-
else
|
144
|
-
_error
|
145
|
-
_fail
|
146
|
-
exit
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def _build
|
151
|
-
_start "Building"
|
152
|
-
if File.exist?('cova.xcworkspace')
|
153
|
-
_cmd (_covadir + "/xctool/xctool.sh -workspace cova.xcworkspace -scheme cova -configuration Debug -sdk iphonesimulator")
|
154
|
-
_success
|
155
|
-
else
|
156
|
-
_msg "Expecting cova.xcworkspace"
|
157
|
-
_error
|
158
|
-
_fail
|
159
|
-
exit
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
def _buildall
|
164
|
-
_start "Building with dependencies"
|
165
|
-
_msg "Looking for Podfile"
|
166
|
-
if File.exist?('Podfile')
|
167
|
-
_ok
|
168
|
-
_cmd "pod install"
|
169
|
-
_build
|
170
|
-
else
|
171
|
-
_error
|
172
|
-
_msg "Expecting Podfile"
|
173
|
-
_error
|
174
|
-
_fail
|
175
|
-
exit
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|
180
|
-
|
181
|
-
desc 'status', 'Checks the status of a Cova installation'
|
182
|
-
def status
|
183
|
-
_start "Checking if Cova is installed"
|
184
|
-
cova_dir = _covadir
|
185
|
-
if File.directory?(cova_dir)
|
186
|
-
_msg "Found Cova in #{cova_dir}"
|
187
|
-
_ok
|
188
|
-
else
|
189
|
-
puts "Expecting Cova in #{cova_dir} not found".red
|
190
|
-
_fail
|
191
|
-
return false
|
192
|
-
end
|
193
|
-
|
194
|
-
cova_mods_dir = _covamodsdir
|
195
|
-
if File.directory?(cova_mods_dir)
|
196
|
-
_msg "Found Cova Mods in #{cova_mods_dir}"
|
197
|
-
_ok
|
198
|
-
_success
|
199
|
-
else
|
200
|
-
puts "Expected Cova Mods in #{cova_mods_dir} not found".red
|
201
|
-
return false
|
202
|
-
end
|
203
|
-
|
204
|
-
return true
|
205
|
-
end
|
206
|
-
|
207
|
-
desc 'uninstall', 'Completely uninstalls Cova'
|
208
|
-
def uninstall
|
209
|
-
|
210
|
-
_start "Uninstalling Cova"
|
211
|
-
|
212
|
-
cova_dir = _covadir
|
213
|
-
_msg "Removing Cova from #{cova_dir}"
|
214
|
-
FileUtils.rm_r cova_dir, :force => true
|
215
|
-
if File.directory?(cova_dir)
|
216
|
-
_error
|
217
|
-
_fail
|
218
|
-
exit
|
219
|
-
else
|
220
|
-
_ok
|
221
|
-
end
|
222
|
-
|
223
|
-
cova_mods_dir = _covamodsdir
|
224
|
-
_msg "Removing Cova Mods from #{cova_mods_dir}"
|
225
|
-
FileUtils.rm_r cova_mods_dir, :force => true
|
226
|
-
if File.directory?(cova_mods_dir)
|
227
|
-
_error
|
228
|
-
_fail
|
229
|
-
exit
|
230
|
-
else
|
231
|
-
_ok
|
232
|
-
_success
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
desc 'install', 'Installs Cova from scratch'
|
237
|
-
option :force, :type => :boolean, :aliases => :f
|
238
|
-
def install
|
239
|
-
user_home_dir = File.expand_path("~")
|
240
|
-
cova_dir = user_home_dir + "/.cova"
|
241
|
-
|
242
|
-
if File.directory?(cova_dir)
|
243
|
-
if options[:force]
|
244
|
-
_init
|
245
|
-
else
|
246
|
-
_info "Cova is already installed. Run install -f to force a re-install"
|
247
|
-
end
|
248
|
-
else
|
249
|
-
_init
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
desc 'create NAME', 'Creates a new Cova app'
|
254
|
-
option :build, :type => :boolean, :aliases => :b
|
255
|
-
def create (name)
|
256
|
-
|
257
|
-
_start "Creating app #{name}"
|
258
|
-
|
259
|
-
if status
|
260
|
-
app_home = File.expand_path("./#{name}")
|
261
|
-
if File.directory?(app_home)
|
262
|
-
_msg "Cannot create directory #{app_home} as it already exists"
|
263
|
-
_error
|
264
|
-
_fail
|
265
|
-
exit
|
266
|
-
end
|
267
|
-
|
268
|
-
_msg "Creating app home in #{app_home}"
|
269
|
-
FileUtils.mkdir app_home
|
270
|
-
if File.directory?(app_home)
|
271
|
-
_ok
|
272
|
-
_msg "Adding Xcode project"
|
273
|
-
cova_dir = _covadir
|
274
|
-
|
275
|
-
FileUtils.cp_r cova_dir + "/cova/ios/xcode-template", app_home + "/ios"
|
276
|
-
if File.directory?(app_home + "/ios/cova")
|
277
|
-
_ok
|
278
|
-
if options[:build]
|
279
|
-
FileUtils.cd app_home + "/ios"
|
280
|
-
_buildall
|
281
|
-
else
|
282
|
-
_success
|
283
|
-
end
|
284
|
-
else
|
285
|
-
_error
|
286
|
-
_fail
|
287
|
-
_exit
|
288
|
-
end
|
289
|
-
else
|
290
|
-
_error
|
291
|
-
_fail
|
292
|
-
exit
|
293
|
-
end
|
294
|
-
else
|
295
|
-
_msg "Cova not installed. Run install -f to install it"
|
296
|
-
_error
|
297
|
-
_fail
|
298
|
-
exit
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
desc 'build', 'Builds an existing Cova app'
|
303
|
-
option :dependencies, :type => :boolean, :aliases => :d
|
304
|
-
def build
|
305
|
-
if options[:dependencies]
|
306
|
-
_buildall
|
307
|
-
else
|
308
|
-
_build
|
309
|
-
end
|
310
|
-
end
|
311
|
-
|
312
|
-
end
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
require 'colorize'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'thor'
|
7
|
+
require 'cocoapods'
|
8
|
+
require 'covalog'
|
9
|
+
require 'covaio'
|
10
|
+
require 'covamain'
|
11
|
+
|
12
|
+
Cova.start
|
data/lib/covaio.rb
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
module CovaIO
|
2
|
+
|
3
|
+
def _io_init
|
4
|
+
@dir_user_home = File.expand_path("~")
|
5
|
+
@dir_cova_home = File.expand_path("~/.cova")
|
6
|
+
@dir_cova_mods_home = File.expand_path("~/.cocoapods/cova")
|
7
|
+
@dir_cocoapods_home = File.expand_path("~/.cocoapods")
|
8
|
+
@dir_xctool_home = File.expand_path("~/.cova/xctool")
|
9
|
+
@dir_xcode_build_home = File.expand_path("~/Library/Developer/Xcode/DerivedData")
|
10
|
+
@dir_cova_apps_home = File.expand_path("~/.cova/apps")
|
11
|
+
|
12
|
+
@repo_cova = "git://github.com/dancali/cova.git"
|
13
|
+
@repo_cova_mods = "git://github.com/dancali/cova-mods.git"
|
14
|
+
@repo_xctool = "git://github.com/facebook/xctool.git"
|
15
|
+
end
|
16
|
+
|
17
|
+
def _io_exec(cmd)
|
18
|
+
pipe = IO.popen(cmd)
|
19
|
+
puts cmd.blue
|
20
|
+
while (line = pipe.gets)
|
21
|
+
print line.black
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def _io_exec_xctool(cmd="build", config="Debug", sdk="iphonesimulator")
|
26
|
+
_io_exec @dir_xctool_home + "/xctool.sh -workspace cova.xcworkspace -scheme cova -configuration #{config} -sdk #{sdk} #{cmd}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def _io_pod_add_repo(name, repo)
|
30
|
+
_io_exec("pod repo add #{name} #{repo}")
|
31
|
+
return _io_isdir(@dir_cocoapods_home + "/" + name)
|
32
|
+
end
|
33
|
+
|
34
|
+
def _io_isdir(dir,expected=true)
|
35
|
+
_log_line (expected ? "Expecting #{dir} to exist" : "Ensuring #{dir} does not exist")
|
36
|
+
if File.directory?(dir)
|
37
|
+
expected ? _log_line_ok : _log_line_error
|
38
|
+
return true
|
39
|
+
end
|
40
|
+
|
41
|
+
if expected
|
42
|
+
_log_line_error
|
43
|
+
else
|
44
|
+
_log_line_ok
|
45
|
+
end
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
|
49
|
+
def _io_isfile(file,expected=true)
|
50
|
+
_log_line (expected ? "Expecting #{file} to exist" : "Ensuring #{file} does not exist")
|
51
|
+
if File.exist?(file)
|
52
|
+
expected ? _log_line_ok : _log_line_error
|
53
|
+
return true
|
54
|
+
end
|
55
|
+
|
56
|
+
if expected
|
57
|
+
_log_line_error
|
58
|
+
else
|
59
|
+
_log_line_ok
|
60
|
+
end
|
61
|
+
return false
|
62
|
+
end
|
63
|
+
|
64
|
+
def _io_app_exists(name)
|
65
|
+
return File.directory?(@dir_cova_apps_home + "/" + name)
|
66
|
+
end
|
67
|
+
|
68
|
+
def _io_ls(dir)
|
69
|
+
Dir.foreach(dir) {|entry| puts "#{entry}" unless (entry =='.' || entry == '..') }
|
70
|
+
end
|
71
|
+
|
72
|
+
def _io_clone_repo (repo, dir)
|
73
|
+
pwd = Dir.pwd
|
74
|
+
Dir.chdir(dir)
|
75
|
+
_io_exec "git clone #{repo}"
|
76
|
+
Dir.chdir(pwd)
|
77
|
+
return _io_isdir(dir + "/" + File.basename(repo, ".*"))
|
78
|
+
end
|
79
|
+
|
80
|
+
def _io_rmdir(dir)
|
81
|
+
_log_line "Removing #{dir}"
|
82
|
+
if File.directory?(dir)
|
83
|
+
`rm -rf #{dir}`
|
84
|
+
if File.directory?(dir)
|
85
|
+
_log_line_error
|
86
|
+
return false
|
87
|
+
end
|
88
|
+
end
|
89
|
+
_log_line_ok
|
90
|
+
return true
|
91
|
+
end
|
92
|
+
|
93
|
+
def _io_lndir(src, targ)
|
94
|
+
if _io_isdir src and not _io_isdir targ, false
|
95
|
+
`ln -s #{src} #{targ}`
|
96
|
+
return _io_isdir targ
|
97
|
+
end
|
98
|
+
|
99
|
+
return false
|
100
|
+
end
|
101
|
+
|
102
|
+
def _io_cpdir(src, targ)
|
103
|
+
if _io_isdir src and not _io_isdir targ, false
|
104
|
+
`cp -r #{src} #{targ}`
|
105
|
+
return _io_isdir targ
|
106
|
+
end
|
107
|
+
return false
|
108
|
+
end
|
109
|
+
|
110
|
+
def _io_mkdir(dir)
|
111
|
+
_log_line "Creating #{dir}"
|
112
|
+
`mkdir #{dir}`
|
113
|
+
File.directory?(dir) ? _log_line_ok : _log_line_error
|
114
|
+
return File.directory?(dir)
|
115
|
+
end
|
116
|
+
end
|
data/lib/covalog.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
module CovaLog
|
2
|
+
|
3
|
+
def _log_line(msg)
|
4
|
+
print msg.black + " ... "
|
5
|
+
end
|
6
|
+
|
7
|
+
def _log_line_ok
|
8
|
+
print "[ ".black
|
9
|
+
print "OK".green
|
10
|
+
print " ]".black
|
11
|
+
puts
|
12
|
+
end
|
13
|
+
|
14
|
+
def _log_line_error
|
15
|
+
print "[".black
|
16
|
+
print "FAIL".red
|
17
|
+
print "]".black
|
18
|
+
puts
|
19
|
+
end
|
20
|
+
|
21
|
+
def _log_info(msg)
|
22
|
+
puts
|
23
|
+
puts msg.blue
|
24
|
+
puts
|
25
|
+
end
|
26
|
+
|
27
|
+
def _log_block_start(msg)
|
28
|
+
puts
|
29
|
+
print "=".black * 3
|
30
|
+
print " " + msg.black + " "
|
31
|
+
puts "=".black * 3
|
32
|
+
puts
|
33
|
+
end
|
34
|
+
|
35
|
+
def _log_block_success
|
36
|
+
puts
|
37
|
+
print "=".black * 9
|
38
|
+
print " SUCCESS ".green
|
39
|
+
puts "=".black * 9
|
40
|
+
puts
|
41
|
+
end
|
42
|
+
|
43
|
+
def _log_block_error
|
44
|
+
puts
|
45
|
+
print "=".black * 8
|
46
|
+
print " FAILED ".red
|
47
|
+
puts "=".black * 8
|
48
|
+
puts
|
49
|
+
end
|
50
|
+
end
|
data/lib/covamain.rb
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
class Cova < Thor
|
2
|
+
|
3
|
+
include CovaLog
|
4
|
+
include CovaIO
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super
|
8
|
+
_io_init
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'status', 'Checks the status of a Cova installation'
|
12
|
+
def status
|
13
|
+
_log_block_start "Checking if Cova is installed"
|
14
|
+
if _io_isdir(@dir_cova_home) and _io_isdir(@dir_cova_mods_home)
|
15
|
+
_log_block_success
|
16
|
+
return true
|
17
|
+
end
|
18
|
+
_log_block_error
|
19
|
+
_cova_prompt_install
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'uninstall', 'Completely uninstalls Cova'
|
24
|
+
def uninstall
|
25
|
+
_log_block_start "Uninstalling Cova"
|
26
|
+
_io_rmdir(@dir_cova_home)
|
27
|
+
_io_rmdir(@dir_cova_mods_home)
|
28
|
+
if _io_isdir(@dir_cova_home, false) or _io_isdir(@dir_cova_mods_home, false)
|
29
|
+
_log_block_error
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
_log_block_success
|
33
|
+
return true
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'install', 'Installs Cova from scratch'
|
37
|
+
def install
|
38
|
+
_log_block_start "Installing Cova"
|
39
|
+
|
40
|
+
if _io_isdir(@dir_cova_home, false) or _io_isdir(@dir_cova_mods_home, false)
|
41
|
+
_log_info "It looks like Cova is already installed. Please uninstall it first before installing again."
|
42
|
+
_log_block_error
|
43
|
+
return false
|
44
|
+
end
|
45
|
+
|
46
|
+
if _io_mkdir @dir_cova_home and _io_mkdir @dir_cova_apps_home
|
47
|
+
if _io_clone_repo @repo_xctool, @dir_cova_home and _io_clone_repo @repo_cova, @dir_cova_home
|
48
|
+
_io_pod_add_repo "cova", @repo_cova_mods
|
49
|
+
_log_block_success
|
50
|
+
puts
|
51
|
+
puts "Congrats! Cove is now installed. Enjoy and build the next great app sensation!".green
|
52
|
+
puts
|
53
|
+
puts "For more info check out http://cova.io".black
|
54
|
+
puts
|
55
|
+
return true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
_log_block_error
|
60
|
+
return false
|
61
|
+
end
|
62
|
+
|
63
|
+
desc 'list', 'List all exisiting apps'
|
64
|
+
def list
|
65
|
+
if not _cova_installed
|
66
|
+
_cova_prompt_install
|
67
|
+
return false
|
68
|
+
end
|
69
|
+
|
70
|
+
_io_ls @dir_cova_apps_home
|
71
|
+
return true
|
72
|
+
end
|
73
|
+
|
74
|
+
desc 'find NAME', 'Looks for an app'
|
75
|
+
def find(name)
|
76
|
+
if not _cova_installed
|
77
|
+
_cova_prompt_install
|
78
|
+
return false
|
79
|
+
end
|
80
|
+
|
81
|
+
_log_line "Searching for app #{name}"
|
82
|
+
if _io_app_exists name
|
83
|
+
_log_line_ok
|
84
|
+
return true
|
85
|
+
end
|
86
|
+
|
87
|
+
_log_line_error
|
88
|
+
return false
|
89
|
+
end
|
90
|
+
|
91
|
+
desc 'create [-b] NAME', 'Creates a new Cova app (-b to build it including tests)'
|
92
|
+
option :build, :type => :boolean, :aliases => :b
|
93
|
+
def create (name)
|
94
|
+
|
95
|
+
if not _cova_installed
|
96
|
+
_cova_prompt_install
|
97
|
+
return false
|
98
|
+
end
|
99
|
+
|
100
|
+
appname = name.strip.delete(' ')
|
101
|
+
_log_block_start "Creating Cova app #{appname}"
|
102
|
+
dir = Dir.pwd + "/" + appname
|
103
|
+
|
104
|
+
if _io_isdir dir, false or _io_app_exists appname or not _io_mkdir dir or not _io_lndir dir, @dir_cova_apps_home + "/" + appname
|
105
|
+
_log_block_error
|
106
|
+
return false
|
107
|
+
end
|
108
|
+
|
109
|
+
if _io_cpdir @dir_cova_home + "/cova/ios/xcode-template", dir + "/ios"
|
110
|
+
if options[:build]
|
111
|
+
Dir.chdir(@dir_cova_apps_home + "/" + name + "/ios")
|
112
|
+
if not _cova_build_dependencies
|
113
|
+
_log_line "Attempted to build the app dependencies"
|
114
|
+
_log_line_error
|
115
|
+
return false
|
116
|
+
end
|
117
|
+
|
118
|
+
_io_exec_xctool "test"
|
119
|
+
return true
|
120
|
+
end
|
121
|
+
|
122
|
+
_log_block_success
|
123
|
+
return true
|
124
|
+
end
|
125
|
+
|
126
|
+
_log_block_error
|
127
|
+
return false
|
128
|
+
end
|
129
|
+
|
130
|
+
desc 'build [-d][-t] NAME', 'Builds an app (-d to build dependencies, -t to build and run tests)'
|
131
|
+
option :dependencies, :type => :boolean, :aliases => :d
|
132
|
+
option :tests, :type => :boolean, :aliases => :t
|
133
|
+
def build (name)
|
134
|
+
if not _cova_installed
|
135
|
+
_cova_prompt_install
|
136
|
+
return false
|
137
|
+
end
|
138
|
+
|
139
|
+
if not _io_app_exists name
|
140
|
+
_log_line "App #{name} does not exist"
|
141
|
+
_log_line_error
|
142
|
+
return false
|
143
|
+
end
|
144
|
+
|
145
|
+
Dir.chdir(@dir_cova_apps_home + "/" + name + "/ios")
|
146
|
+
_log_block_start "Building app #{name}"
|
147
|
+
if options[:dependencies] or not _io_isfile "cova.xcworkspace" or not _io_isdir "Pods"
|
148
|
+
if not _cova_build_dependencies
|
149
|
+
_log_block_error
|
150
|
+
return false
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
_io_exec_xctool (options[:tests] ? "test" : "build")
|
155
|
+
end
|
156
|
+
|
157
|
+
no_commands do
|
158
|
+
|
159
|
+
def _cova_prompt_install
|
160
|
+
_log_info "Looks like Cova is not installed yet. Please run [cova install] now"
|
161
|
+
end
|
162
|
+
|
163
|
+
def _cova_installed
|
164
|
+
return (File.directory?(@dir_cova_home) and File.directory?(@dir_cova_mods_home))
|
165
|
+
end
|
166
|
+
|
167
|
+
def _cova_build_dependencies
|
168
|
+
if not _io_isfile "Podfile"
|
169
|
+
return false
|
170
|
+
end
|
171
|
+
|
172
|
+
_io_exec "pod install"
|
173
|
+
return (_io_isfile "cova.xcworkspace" and _io_isdir "Pods")
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cova
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dan Calinescu
|
@@ -15,10 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-05-
|
18
|
+
date: 2013-05-26 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: logger
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: colorize
|
50
50
|
prerelease: false
|
51
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
type: :runtime
|
61
61
|
version_requirements: *id003
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
63
|
+
name: xcodeproj
|
64
64
|
prerelease: false
|
65
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
@@ -83,6 +83,9 @@ extra_rdoc_files: []
|
|
83
83
|
|
84
84
|
files:
|
85
85
|
- lib/cova.rb
|
86
|
+
- lib/covaio.rb
|
87
|
+
- lib/covalog.rb
|
88
|
+
- lib/covamain.rb
|
86
89
|
- bin/cova
|
87
90
|
homepage: http://cova.io
|
88
91
|
licenses:
|