import os
from glob import glob
import shutil
import tarfile
import gzip

def prepare_file(tar_file):
    # dt = datetime(2025,9,1)
    # dts = dt.strftime("%Y-%m-%d")
    # root_in = '/data3/xinjiaz/data_GPSRO/planetiq_scdr/GNOMES_PYXIS_L1A/'
    root_out = '/data3/xinjiaz/gps_pod/python/planetiq/L1_extract/'

    ztypes = ['podRx3', 'rcvOrb']

    # Extract tar files into root_out
    os.makedirs(root_out, exist_ok=True)
    with tarfile.open(tar_file, 'r') as tar:
        tar.extractall(path=root_out)

    # Copy files from "gnomes/level1a/*" into root_out
    level1a_path = os.path.join(root_out, "gnomes", "level1a")
    if os.path.exists(level1a_path):
        for item in glob(os.path.join(level1a_path, "*")):
            if os.path.isfile(item):
                shutil.copy(item, root_out)
            elif os.path.isdir(item):
                shutil.copytree(item, os.path.join(root_out, os.path.basename(item)), dirs_exist_ok=True)

    # Remove gnomes directory
    gnomes_path = os.path.join(root_out, "gnomes")
    if os.path.exists(gnomes_path):
        shutil.rmtree(gnomes_path)

    # Process gzipped files
    for zt in ztypes:
        gzfiles = glob(os.path.join(root_out, zt, "*.gz"))
        for gzfile in gzfiles:
            out_file = gzfile[:-3]  # remove .gz
            with gzip.open(gzfile, 'rb') as f_in, open(out_file, 'wb') as f_out:
                shutil.copyfileobj(f_in, f_out)
            os.remove(gzfile)
