import json
import subprocess
import os

# TODO this should include an option to run transfers in parallel as subproccess if specified

# get absolute paths
source = os.path.dirname(__file__)
parent = os.path.abspath(source + '/../')
log_dir = os.path.join(parent, 'logs/')

# load vars file
vars_file = open(parent + '/email_transfer_vars.json')
transfer_vars = json.load(vars_file)
vars_file.close()


# FIXME logs should write to a directory with the domain name instaed of the root logs directory

def transfer_mailbox(src_usr, src_pass, dsr_usr, dst_pass):
    src_host = transfer_vars['server_info']['src_hostname']
    dst_host = transfer_vars['server_info']['dst_hostname']

    # specify logfile location and replace @ with underscore
    logfile_location = (log_dir + src_usr).replace('@', '_')

    transfer_args = ["--host1", src_host, "--user1", src_usr, "--password1", src_pass, "--host2", dst_host, "--user2",
                     dsr_usr, "--password2", dst_pass, "--automap", "--noemailreport1", "--noemailreport2", "--logdir",
                     log_dir]
    subprocess.run(["imapsync"] + transfer_args)


def main():
    for item in transfer_vars['transfer_list']:
        transfer_mailbox(*item.values())


if __name__ == "__main__":
    main()
