cova 0.2.0 → 0.2.1
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.
- data/bin/cova +1 -0
- data/lib/cova.rb +1 -0
- data/lib/covaio.rb +21 -0
- data/lib/covamain.rb +79 -25
- metadata +18 -4
data/bin/cova
CHANGED
data/lib/cova.rb
CHANGED
data/lib/covaio.rb
CHANGED
@@ -22,6 +22,27 @@ module CovaIO
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def _io_findport(port)
|
26
|
+
ok = false
|
27
|
+
times = 100
|
28
|
+
until ok
|
29
|
+
begin
|
30
|
+
if times <= 0
|
31
|
+
port = -1
|
32
|
+
ok = true
|
33
|
+
else
|
34
|
+
socket = TCPSocket.new "localhost", port
|
35
|
+
socket.close
|
36
|
+
port = port + 1
|
37
|
+
times = times - 1
|
38
|
+
end
|
39
|
+
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT
|
40
|
+
ok = true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
return port
|
44
|
+
end
|
45
|
+
|
25
46
|
def _io_exec_xctool(cmd="build", config="Debug", sdk="iphonesimulator")
|
26
47
|
_io_exec @dir_xctool_home + "/xctool.sh -workspace cova.xcworkspace -scheme Cova -configuration #{config} -sdk #{sdk} #{cmd}"
|
27
48
|
end
|
data/lib/covamain.rb
CHANGED
@@ -269,8 +269,7 @@ class Cova < Thor
|
|
269
269
|
return false
|
270
270
|
end
|
271
271
|
|
272
|
-
|
273
|
-
Process.kill("TERM", pid.to_i)
|
272
|
+
File.open(pid_file).each_line {|pid| Process.kill("TERM", pid.to_i)}
|
274
273
|
`rm -rf #{pid_file}`
|
275
274
|
|
276
275
|
if not _io_isfile pid_file, false
|
@@ -327,24 +326,39 @@ class Cova < Thor
|
|
327
326
|
return true
|
328
327
|
end
|
329
328
|
|
330
|
-
|
331
|
-
|
329
|
+
port = _io_findport 10080
|
330
|
+
if port < 0
|
331
|
+
_log_info "Too many handshakes. Try saying hi again."
|
332
|
+
return false
|
333
|
+
end
|
334
|
+
|
335
|
+
db_file = @dir_cova_apps_home + "/" + name + "/store/log.db"
|
336
|
+
if not File.exist?(db_file)
|
337
|
+
db = SQLite3::Database.new db_file
|
338
|
+
db.execute("CREATE TABLE changelog(file, event, date)")
|
339
|
+
end
|
340
|
+
|
341
|
+
if not File.exist?(db_file)
|
342
|
+
_log_info "Cannot start logging. Try saying hi again."
|
343
|
+
return false
|
344
|
+
end
|
345
|
+
|
332
346
|
monitor = FSSM::Monitor.new
|
333
347
|
monitor.path @dir_cova_apps_home + "/" + name do
|
334
348
|
create do |b, r, t|
|
335
|
-
if File.exist?(db_file) and not r == "store/log.db"
|
349
|
+
if File.exist?(db_file) and not r == "store/log.db" and not r == "store/hi.lock"
|
336
350
|
db = SQLite3::Database.new db_file
|
337
351
|
db.execute "insert into changelog values ('#{r}', 'created', '" + Time.new.strftime("%Y-%m-%d %H:%M:%S") + "')"
|
338
352
|
end
|
339
353
|
end
|
340
354
|
update do |b, r, t|
|
341
|
-
if File.exist?(db_file) and not r == "store/log.db"
|
355
|
+
if File.exist?(db_file) and not r == "store/log.db" and not r == "store/hi.lock"
|
342
356
|
db = SQLite3::Database.new db_file
|
343
357
|
db.execute "insert into changelog values ('#{r}', 'updated', '" + Time.new.strftime("%Y-%m-%d %H:%M:%S") + "')"
|
344
358
|
end
|
345
359
|
end
|
346
360
|
delete do |b, r, t|
|
347
|
-
if File.exist?(db_file) and not r == "store/log.db"
|
361
|
+
if File.exist?(db_file) and not r == "store/log.db" and not r == "store/hi.lock"
|
348
362
|
db = SQLite3::Database.new db_file
|
349
363
|
db.execute "insert into changelog values ('#{r}', 'deleted', '" + Time.new.strftime("%Y-%m-%d %H:%M:%S") + "')"
|
350
364
|
end
|
@@ -354,25 +368,65 @@ class Cova < Thor
|
|
354
368
|
pid = fork do
|
355
369
|
monitor.run
|
356
370
|
end
|
371
|
+
# Process.detach(pid)
|
372
|
+
File.open(pid_file, 'a') {|f| f.puts pid}
|
357
373
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
374
|
+
Dir.chdir(@dir_cova_apps_home + "/" + name)
|
375
|
+
# Open3.popen3("php -S localhost:#{port} -t www &> store/server.log") {|stdin, stdout, stderr, wait_thr|
|
376
|
+
# puts "@@@"
|
377
|
+
# }
|
378
|
+
|
379
|
+
# pid_server = fork {
|
380
|
+
# `php -S localhost:10080 &> store/server.log`
|
381
|
+
# IO.popen("php -S localhost:10080 -t www") do |stdout|
|
382
|
+
# puts "stdout = " + stdout.pid
|
383
|
+
# end
|
384
|
+
# Open3.popen3("php -S localhost:10080 -t www") do |stdin, stdout, stderr, wait_thr|
|
385
|
+
# puts wait_thr
|
386
|
+
# puts wait_thr.pid
|
387
|
+
# # while line = stdout.gets
|
388
|
+
# # puts line
|
389
|
+
# # end
|
390
|
+
# end
|
391
|
+
pid_server = fork {
|
392
|
+
[$stdout, $stderr].each {|fh| fh.reopen File.open("store/server.log", "a") }
|
393
|
+
exec "php -S localhost:10080 -t www"
|
394
|
+
}
|
395
|
+
File.open(pid_file, 'a') {|f| f.puts pid_server}
|
396
|
+
# cmd = 'ping google.com'
|
397
|
+
# Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
|
398
|
+
# while line = stdout.gets
|
399
|
+
# puts "@@@@@"
|
400
|
+
# puts line
|
401
|
+
# end
|
402
|
+
# end
|
403
|
+
|
404
|
+
# pipe = IO.popen()
|
405
|
+
# File.open(pid_file, 'a') {|f| f.puts pipe.pid}
|
406
|
+
# }
|
407
|
+
# Process.detach(pid_server)
|
408
|
+
# File.open(pid_file, 'a') {|f| f.puts pid_server}
|
409
|
+
# puts status
|
410
|
+
|
411
|
+
# system "php", "-S", "localhost:10080", "-t", "www", "&>", "store/server.log"
|
412
|
+
# fork {
|
413
|
+
# IO.popen "php -S localhost:#{port} -t www &> store/server.log" do |pipe|
|
414
|
+
# puts "parent pid: #{$$}, popen return (child) pid: #{pipe.pid}"
|
415
|
+
# end
|
416
|
+
# }
|
417
|
+
# File.open(pid_file, 'a') {|f| f.puts $?.pid}
|
418
|
+
# `php -S localhost:#{port} -t www &> store/server.log; echo $$ > som.pid`
|
419
|
+
# puts $?.pid
|
420
|
+
# puts pid_server
|
421
|
+
# pid_server = fork {
|
422
|
+
# IO.popen "php -S localhost:10080 -t www &> t.log" do |pipe|
|
423
|
+
# File.open(pid_file, 'a') {|f| f.puts pipe.pid}
|
424
|
+
# end
|
425
|
+
# }
|
426
|
+
# Process.detach(pid_server)
|
427
|
+
|
428
|
+
_log_info "Hi! Checkout localhost:#{port}"
|
429
|
+
return true
|
376
430
|
end
|
377
431
|
|
378
432
|
desc 'deploy NAME', 'Builds an app'
|
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: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dan Calinescu
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-06-
|
18
|
+
date: 2013-06-07 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: logger
|
@@ -129,6 +129,20 @@ dependencies:
|
|
129
129
|
version: "0"
|
130
130
|
type: :runtime
|
131
131
|
version_requirements: *id008
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: socket
|
134
|
+
prerelease: false
|
135
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
hash: 3
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
version: "0"
|
144
|
+
type: :runtime
|
145
|
+
version_requirements: *id009
|
132
146
|
description: Cova removes a lot of the complexity that comes with designing, coding, testing, prototyping and publishing mobile applications.
|
133
147
|
email: dan@cova.io
|
134
148
|
executables:
|