63 lines
1.6 KiB
Ruby
Executable File
63 lines
1.6 KiB
Ruby
Executable File
#!/bin/env ruby
|
|
|
|
require 'colorize'
|
|
require 'net/http'
|
|
require 'uri'
|
|
require 'json'
|
|
|
|
current = `git rev-parse HEAD`.strip
|
|
latest = current
|
|
api_url = URI.parse 'https://lesbian.ddns.net/api/v1/repos/tomas/webdl/commits?limit=1'
|
|
|
|
puts '[Daemon] '.red + 'Running WebDL daemon'
|
|
while true do
|
|
print '[Daemon] '.red + 'Starting server...'
|
|
out_thread = nil
|
|
IO.popen('npm start', 'w+') do |io|
|
|
puts ' Ok!'.green
|
|
|
|
out_thread = Thread.new do
|
|
begin
|
|
for line in io.each_line do
|
|
puts '[WebDL] '.blue + line
|
|
end
|
|
rescue
|
|
# Pipe closed
|
|
end
|
|
end
|
|
|
|
while true do
|
|
sleep 10
|
|
|
|
print '[Daemon] '.red + 'Checking for updates...'
|
|
res = Net::HTTP.get_response api_url
|
|
data = JSON.parse res.body
|
|
latest = data[0]['sha']
|
|
|
|
if current == latest then
|
|
puts ' Already latest'
|
|
else
|
|
puts ' Update available!'.cyan
|
|
puts '[Daemon] '.red + 'Signaled server to shutdown'
|
|
puts 'Signal'
|
|
io.puts 'shutdown'
|
|
io.flush
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
puts '[Daemon] '.red + 'Server closed'
|
|
out_thread.join
|
|
|
|
if not current == latest then
|
|
puts '[Daemon] '.red + 'Updating...'
|
|
ok = system 'git pull'
|
|
if ok then
|
|
current = `git rev-parse HEAD`.strip
|
|
else
|
|
puts '[Daemon] '.red + 'Update failed!'.yellow
|
|
end
|
|
end
|
|
end
|