import sys
import copy
from ged4py.parser import GedcomReader
import os.path

# Find gedcom-labels for all persons whose names include the argument
# by Kaj Holmberg

pri=0
writenamelist=0
allnr=[]
allnames=[]

def allin(text1):
    ain=1
    for i in range(np2):
        if pers2[i] not in text1:
            ain=0
    return ain

# --- main ---

pers2=[]
np2=0
narg=len(sys.argv)
if narg>2:
    person1=sys.argv[2]
else:
    person1='Kaj'
if narg>3:
    for i in range(3,narg):
        pers2.append(sys.argv[i])
    np2=len(pers2)

    
fname=os.path.basename(sys.argv[1])
str1='Searching file '+str(fname)+' for name '+str(person1)
for i in range(np2):
    str1=str1+' '+pers2[i]
print(str1)

fname=os.path.splitext(fname)[0]

# open GEDCOM file
with GedcomReader(sys.argv[1]) as parser:
    # iterate over each INDI record in a file
    for i, indi in enumerate(parser.records0("INDI")):
        nra=indi.xref_id
        nr=nra.strip('@')
        name1=indi.name.format()
        if len(name1)>1:
            allnr.append(nr)
            if person1=='': person1=copy.copy(name1)
            allnames.append(name1)

        if pri: print('.',end='', flush='True')

nn=len(allnames)
nf=0
print(str(nn)+' names read:\n')
for i in range(nn):
    if person1 in allnames[i]:
        if allin(allnames[i]):
            #str1=allnr[i]+' '+str(allnames[i])
            str1=str(allnames[i])+' '+str(allnr[i])
            print(str1)
            nf+=1
if nf>0:
    print(str(nf)+' persons found')
else:
    print('No matching person found')

if writenamelist and nf>0:
    futname=fname+'-names.txt'
    print('Writes names on file '+str(futname))
    fut=open(futname,'w')
    for i in range(nn):
        if person1 in allnames[i]:
            str1=allnr[i]+' '+str(allnames[i])+'\n'
            fut.write(str1)
    fut.close()
