#!/usr/bin/env python3
# code=UTF-8
# Copyright 2020 James P Goodwin
# This is a backup program created by James
import sys
import os
import re
from bkp_core.sync_mod import SyncJob
from bkp_core import sync_conf
import traceback
from bkp_core import stackdump
from optparse import OptionParser
import signal

def main(options, args):
    """ The main driver for the sync utility """
    os.set_blocking(sys.stderr.fileno(),1)

    if options.configure:
        return sync_conf.configure()

    config = sync_conf.config(options.config_file,options.verbose)

    sync_job = SyncJob(config)

    if options.dryrun:
        sync_job.set_dryrun(True)

    if options.verbose:
        sync_job.set_verbose(True)

    return sync_job.synchronize()

if __name__ == '__main__':
    parser = OptionParser(usage="usage: %prog [options]", description="A syncronization script for syncronizing directories with remote directories on {file or sftp}, configuration in ~/.sync/sync_config")
    parser.add_option("-c","--configure", dest="configure", action="store_true", default=False, help="Prompt to create initial ~/.sync/sync_config")
    parser.add_option("-v","--verbose", dest="verbose", action="store_true", default=False, help="Log all activity to console")
    parser.add_option("-d","--dryrun", dest="dryrun", action="store_true", default=False, help="Do everything except actually perform actions")
    parser.add_option("-f","--file", dest="config_file",default="~/.sync/sync_config", help="Load config from this file default is ~/.sync/sync_config")

    (options,args) = parser.parse_args()

    try:
        ret = main(options,args)
    except:
        tb = traceback.format_exc()
        print(tb, file=sys.stderr)
        exit(1)

    exit(ret)
