#!/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 600 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' 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