#!/usr/bin/python3

import argparse
import os
import datetime

# TODO: add rsync from source system to script like:
# rsync -av ima-validation:/opt/perfact/custom/migrate_maint/ .

# TODO: add rsync to target system to script like:
# rsync -av DataBaseModifications ema-devel-2020:~/quarantino/


def main(args):
    '''
    Switch working directory to targetfolder, sort all db-modifications found
    Rename according to given arguments
    '''
    os.chdir(args.targetfolder)
    items = os.listdir('.')
    items.sort()

    for index, item in enumerate(items):
        padded_index = str(index + args.offset).rjust(3, '0')
        item_name = item.split('_', 2)[-1]

        new_name = f"{args.date}_{padded_index}_{item_name}"

        if args.dryrun:
            print(item, '-->', new_name)
        else:
            os.rename(item, new_name)


if __name__ == '__main__':

    parser = argparse.ArgumentParser()

    parser.add_argument(
        'targetfolder',
        help='Folder containing db-modifications to be renamed',
        type=str
    )

    parser.add_argument(
        '-o',
        '--offset',
        help='Offset to rename db-modifications in order',
        type=int,
        default=0
    )

    parser.add_argument(
        '-d',
        '--date',
        help='Date to rename db-modifications to. ISO format!',
        type=str,
        default=datetime.datetime.today().isoformat('#').split('#')[0]
    )

    parser.add_argument(
        '--dryrun',
        help='Only show changes, do not rename',
        action='store_true',
        default=False
    )

    args = parser.parse_args()

    main(args)
