# Copyright 2026 Toyota Research Institute.  All rights reserved.

import os
import sys
import argparse
from argparse import Namespace

from anydata.converters.utils import clean_metadata, parse_args
from anydata.converters.misc.create_split import parse_create_split
from anydata.sync.sync_utils import get_seqs_subset, create_tar, aws_s3_cp, aws_s3_rm, aws_s3_sync, remove_path

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

def run():
    """Shared functionality for running the converter"""

    args = parse_args(None)
    split_name = 'split_all'

    ### Clean metadata for shared entries
    print('##### CLEANING METADATA ...')
    clean_metadata(args, scratch=True)

    ### Create split_all (or part of it if subset is being used)
    print('##### CREATING SPLIT ...')
    sys.argv = [sys.argv[0], args.dst, '--name', split_name.replace('.json', '')]
    if args.webbed:              sys.argv.append('--webbed')
    if args.storage == 'frames': sys.argv.append('--frames')
    if args.storage == 'videos': sys.argv.append('--videos')
    parse_create_split()  # Create final split

    ### Uploading results to s3
    if args.upload or args.upload_and_delete:
        for file in [split_name, 'metadata_shared']:
            if '.' not in file: file += '.json'
            split = f'{args.dst}/{file}'
            if os.path.exists(split):
                s3_split = split.replace(args.local_path, args.s3_path)
                aws_s3_cp(split, s3_split)
        # Upload tmp folder only if there are no subsets (could upload ongoing files as well)
        tmp_folder = f'{args.dst}/tmp'
        if os.path.exists(tmp_folder) and args.subset is None:
            tmp_folder_s3 = tmp_folder.replace(args.local_path, args.s3_path)
            aws_s3_sync(tmp_folder, tmp_folder_s3)

    print(f'#################################################')
    print(f'################## CLEANUP DONE #################')
    print(f'#################################################')
    print(f'### DST: {args.dst}')
    print(f'#################################################')

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

if __name__ == '__main__':
    run()

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

