import sys, os
import argparse
import pandas as pd
import shutil
from datetime import datetime

now = datetime.now()

parser = argparse.ArgumentParser()
parser.add_argument("-d","--date", default='20251211', help='date string YYYYMMDD')
parser.add_argument("-P","--f_PERISCOPE", default='YYYYMMDD.targets.PERISCOPE.csv', help='Persicope targets file')
parser.add_argument("-B","--f_BASE", default='targets.csv', help='BASE targets file')
parser.add_argument("-PROD_OW","--PROD_OW", action='store_true', default=False, help='Really overwrite targets')
args = parser.parse_args()


PROD_OW = bool(args.PROD_OW)
date = str(args.date)

p = pd.read_csv( args.f_PERISCOPE.replace('YYYYMMDD', date)   )
b = pd.read_csv( args.f_BASE   )

print(f'read ({args.f_PERISCOPE}) ({len(p)})')
print(f'read ({args.f_BASE}) ({len(b)})')

if len(b)*len(p)==0:
    print('Zero size input file..  EXIT')
    exit(0)

### Backup the BASE file to targets.BASE.csv and HHMMSS.YYMMDD.targets.BASE.csv  --> otherwise you can get into a loop of ugly reruns where you lose file #1..
backup_f_BASE = args.f_BASE.replace('.','.BASE.').replace('targets.',f'{date}.targets.')
timed_backup_f_BASE = f'{now.strftime("%H%M.%Y%m%d")}.{backup_f_BASE}'

try:
    shutil.copy(args.f_BASE, backup_f_BASE)
    print(f"File {args.f_BASE} copied to {backup_f_BASE}")
    shutil.copy(args.f_BASE, timed_backup_f_BASE)
    print(f"File {args.f_BASE} copied to {timed_backup_f_BASE}")
except FileNotFoundError:
    print(f"ERR No ({args.f_BASE}) found --> EXIT")
    exit(0)


### Combine the two files into one sheet
print('\n----PERISCOPE')
print(p.head())
print('\n----BASE')
print(b.head())

merg_cols=['ric', 'targetposition']
comb = pd.merge(b[merg_cols], p[merg_cols], on='ric', how='outer', suffixes=('_p', '_b')).fillna(0)
comb['targetposition'] = comb['targetposition_p'] + comb['targetposition_b'] 
comb.drop(['targetposition_p', 'targetposition_b'], axis=1, inplace=True)
comb['targetposition'] = comb['targetposition'].astype(int)


for c in p.columns:
    if c in merg_cols:  continue
    comb[c] = b[c].values[0]
    
fn_o = 'comb.csv'    
comb.to_csv(fn_o, index=False)
print(f'wrote ({fn_o}) ({len(comb)})')    
    
print('\n-----comb:')
print(comb.head())


if PROD_OW:
    print(f'\n\nPROD_OW{PROD_OW} ---> overwrite({args.f_BASE})')

    ### local targets.csv file
    fn_o = args.f_BASE
    comb.to_csv(fn_o, index=False)
    print(f'wrote ({fn_o}) ({len(comb)})')

    ### targets file in TradeLists to be uploaded. e.g. /mnt/signal/simulation/EGProd1/TradeLists/targets.20251211.csv
    fn_tr_o = f'/mnt/signal/simulation/EGProd1/TradeLists/targets.{date}.csv'
    comb.to_csv(fn_tr_o, index=False)  
    print(f'wrote ({fn_tr_o}) ({len(comb)})')


 
    
