# Generates config file
import configparser
import json
import argparse
from pathlib import Path
def fix_description ( desc ) :
return " ; " + desc . replace ( " \n " , " \n ; " )
def generate_ini ( base_file , ini_file ) :
"""
Generates . ini file from config - base file .
"""
with open ( Path ( base_file ) , " r " ) as f :
config_base = json . load ( f )
ini = configparser . RawConfigParser ( allow_no_value = True )
for section in config_base [ " sections " ] :
ini . add_section ( section )
if " meta " in config_base [ " sections " ] [ section ] :
ini . set ( section , fix_description ( config_base [ " sections " ] [ section ] [ " meta " ] [ " description " ] ) )
for entry in config_base [ " sections " ] [ section ] [ " settings " ] :
if " description " in config_base [ " sections " ] [ section ] [ " settings " ] [ entry ] :
ini . set ( section , fix_description ( config_base [ " sections " ] [ section ] [ " settings " ] [ entry ] [ " description " ] ) )
value = config_base [ " sections " ] [ section ] [ " settings " ] [ entry ] [ " value " ]
if isinstance ( value , bool ) :
value = str ( value ) . lower ( )
else :
value = str ( value )
ini . set ( section , entry , value )
with open ( Path ( ini_file ) , " w " ) as config_file :
ini . write ( config_file )
return True
if __name__ == " __main__ " :
parser = argparse . ArgumentParser ( )
parser . add_argument ( " -i " , " --input " , help = " input config base from jf-accounts " )
parser . add_argument ( " -o " , " --output " , help = " output ini " )
args = parser . parse_args ( )
print ( generate_ini ( base_file = args . input , ini_file = args . output ) )