"""Add index number for each lines"""

import os
import sys
import re
import argparse
import glob
import pprint
from time import sleep

import logging
# DEBUG < INFO < WARNING (default) < ERROR < CRITICAL
logging.basicConfig(level=logging.DEBUG)
#logging.basicConfig(level=logging.INFO)
#logging.basicConfig(level=logging.WARNING)
#logging.basicConfig(level=logging.ERROR)
#logging.basicConfig(level=logging.CRITICAL)

def main():

    """ main program """
    parser = argparse.ArgumentParser(description='Add index number for each lines')
    parser.add_argument('target', help='source file name')
    parser.add_argument('-x', '--execute', action='store_true', help='index file creation request')
    args = parser.parse_args()

    # check if target source file exist
    source_file = args.target
    if not os.path.isfile(source_file):
        print("\n\033[33mCan not find a source file  = [ " + source_file + " ]\033[0m\n")
        quit()

    else:
        # reset index
        serial = 1
        file_name = ""
        output_line = ""
        input_file = open(source_file,'r')
        if args.execute:
            output_file = open('JP_index.txt','w')

        for source_line in input_file:
            # if file_name change, reset index number
            if file_name != source_line.split(':')[0]:
                file_name = source_line.split(':')[0]
                serial = 0;
            serial = serial + 1
            sepatator = source_line.find('.txt:')
            # inert index number
            # [File_name]:[index]:[contents]
            output_line = source_line[:sepatator] + ":" + format(serial,'06d') + ":" + source_line[sepatator:][5:]
            # screen outout (eliminating LF)
            print(output_line, end='')
            if args.execute:
                output_file.write(output_line)

        input_file.close()
        if args.execute:
            output_file.close()

if __name__ == '__main__':
    main()
