#! /usr/bin/python3

import time
import optparse
import os
import sys

if __name__ == '__main__':
    parser=optparse.OptionParser()
    parser.add_option("-s","--sync",dest="sync", action="store", default=10, type='int', help="sync to n seconds")

    (options,args) = parser.parse_args()
    
    t0=time.time()
    if len(args)==0:
        divisor=options.sync
        t1=divisor-(t0 % divisor)
    else:
        cmd = "date +%%s -d '%s'" % (' '.join(args));
        t2=int(os.popen(cmd,'r').readline().strip())
        t1=t2-t0;
        if (t1<-3600 and t1> -3600*24):
            t1+=3600*24;
        if (t1<=0):
            sys.stderr.write("Time %s is in the past\n" % time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(t2)))
            t1=0;
    sys.stderr.write("Sleeping for %.3f seconds until %s\n" % (
        t1,
        time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(t0+t1))
        ))
    t9=time.time() # final adjust ...
    t=t1-(t9-t0)
    if t>0: time.sleep(t)

