#!/usr/bin/python3
# -*- coding: utf-8 -*-
# -*- mode: Python -*-
'''
LJ
v0.1.0

A console friendly interface to change important parameters

LICENCE : CC
'''

import configparser
from libs3 import gstt
import ast
import numpy as np
import os, sys
import fileinput
from shutil import copyfile
ljpath = r'%s' % os.getcwd().replace('\\','/')

def updateJSConfig(config):
    global ljpath
    wwwip   = config.get('General','wwwip')
    wstype  = config.get('General','wstype')
    wsport  = config.get('General','wsport')
    # copy template
    src = ljpath + "/templates/config.js"  
    dst = ljpath + "/www/config.js" 
    copyfile(src, dst)
    # Interpolate variables
    with fileinput.FileInput(dst, inplace=True) as file:
        for line in file:
            line = line.replace("%wstype%", wstype)
            line = line.replace("%wsport%", wsport)
            line = line.replace("%wwwip%", wwwip)
            print(line, end='')

config = configparser.ConfigParser()
config.read(gstt.ConfigName)

qList = [
        {"q":"The server IP address       ","c":"General","k":"ljayserverip"},
        {"q":"The IP address for webui    ","c":"General","k":"wwwip"},
        {"q":"Websocket type (ws or wss?) ","c":"General","k":"wstype"},
        {"q":"Websocket port              ","c":"General","k":"wsport"},
        {"q":"How many lasers to use      ","c":"General","k":"lasernumber"},
        {"q":"Laser 0 IP address          ","c":"laser0","k":"ip"},
        {"q":"Laser 1 IP address          ","c":"laser1","k":"ip"},
        {"q":"Laser 2 IP address          ","c":"laser2","k":"ip"},
        {"q":"Laser 3 IP address          ","c":"laser3","k":"ip"}
        ]
stop = False
while stop == False :
    print( "------------------------------------------------------")
    print( "Which part of the configuration do you wish to change?") 
    print( "------------------------------------------------------")
    print( "Enter a numeric key or 'x' to stop")
    for i in range(len(qList)):
      item = qList[i]
      question = item["q"]
      category = item["c"]
      key = item["k"]
      val = config.get(category,key )
      print( "-")
      print( "Choice #"+str(i), "\t"+question+ "\tCurrent value:",val )
    print( "......................................................")
    name = input("Enter your choice: ") 
    if name == "x":
      stop = True
      break
    print( "......................................................")
    choice = qList[int(name)]
    new_value = input("Please enter the new value:")
    config.set(choice["c"],choice["k"],new_value)
    config.write(open(gstt.ConfigName,'w'))
    if choice["k"] in ["wwwip","wstype","wsport"] :
      updateJSConfig(config)
      print("*****************************\nUpdated the www configuration\n*****************************")

