Files
webdl/daemon.rb
2026-01-09 03:26:27 +01:00

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