# Copyright 2026 Toyota Research Institute.  All rights reserved.

import os
import shutil
import argparse
import subprocess
import numpy as np
import multiprocessing

from glob import glob
from tqdm import tqdm
from functools import partial

from anydata.sync.sync_utils import get_local_files_and_folders, multi_thread, get_extras_base, remove_path

####################################

def parse_args(num_procs=24):
    parser = argparse.ArgumentParser()
    parser.add_argument('path', type=str)
    parser.add_argument('--num_procs', type=int, default=num_procs)
    parser.add_argument("--nested", type=int, default=0)
    args = parser.parse_args()

    args.src = args.dst = args.path

    return args

################################

def delete_files(files, local_path):
    for file in files:
        remove_path(file)

def delete_sequences(i, seqs, args):
    progress = tqdm(seqs, ncols=96, leave=False)
    for seq in progress:
        progress.set_description(f'### Thread {i+1}/{args.num_procs}')
        delete_sequence(seq, args)

def delete_sequence(seq, args):
    remove_path(seq)

################################

if __name__ == "__main__":

    args = parse_args()
    files, seqs = get_local_files_and_folders(args.src)

    multi_thread = partial(multi_thread, name='DELETING FROM LOCAL',
        fn_seqs=delete_sequences, fn_files=delete_files)

    if args.nested == 0:
        multi_thread(seqs, files, args)
    else:
        for i in range(len(seqs)):
            files_i, seqs_i = get_local_files_and_folders(f'{seqs[i]}')
            if args.nested == 1:
                multi_thread(seqs_i, files_i, args)
            else:
                for j in range(len(seqs_i)):
                    files_j, seqs_j = get_local_files_and_folders(f'{seqs_i[j]}')
                    multi_thread(seqs_j, files_j, args)

    # Delete src folder
    remove_path(args.src)

################################
