#!/usr/bin/env python
from shutil import copytree, rmtree
import logging
from os.path import isdir
from optparse import OptionParser
import samba.getopt as options
from samba.netcmd import domain_backup
from sys import argv

LOG = argv[1]
WHERE = argv[2]
SERVER = argv[3]

if len(argv) == 5 and argv[4] == 'cron':
    BAREOS_MODE = False
else:
    BAREOS_MODE = True


parse = OptionParser()


def fake_create_backup_tar(logger, tmpdir, backup_filepath):
    # do not tar file, just copy it
    logger.info("Copy backup file")
    dest_dir = WHERE + '/bareos'
    if isdir(dest_dir):
        rmtree(dest_dir)
    copytree(tmpdir, dest_dir)


class cmd_domain_backup_online(domain_backup.cmd_domain_backup_online):
    def get_logger(self):
        logFormatter = logging.Formatter("%(asctime)s [%(levelname)-5.5s]  %(message)s")
        logger = logging.getLogger('samba_backup')
        fhlogger = logging.FileHandler(LOG)
        fhlogger.setFormatter(logFormatter)
        logger.addHandler(fhlogger)
        return logger


if BAREOS_MODE:
    domain_backup.create_backup_tar = fake_create_backup_tar
backup = cmd_domain_backup_online()
backup.run(sambaopts=options.SambaOptions(parse),
           credopts=options.CredentialsOptions(parse),
           server=SERVER,
           targetdir=WHERE)
