#!/usr/bin/env lua -- vim: set noexpandtab :miv -- local function parse_time(str) local target = os.date("*t") if type(str)=="string" then local hour, min, sec = (str):match '(%d*):?(%d*):?(%d*)' if hour and min and sec then target.hour = tonumber(hour) or 0 target.min = tonumber(min) or 0 target.sec = tonumber(sec) or 0 end end return os.time(target) end local final, start = ... local final = parse_time(final) local start = parse_time(start) io.stderr:write('Counting down to: '..os.date("%T", final)..'\n') io.stderr:write(' from: '..os.date("%T", start)..'\n') while true do print(os.difftime(os.time(), start)/os.difftime(final, start) * 100) if not os.execute 'sleep 1' then break end end