import json
import os
import sys
# This allows for importing from the localization and util directories NOTE: Auto importing tools will also prepend the import paths with "tools." this will not work and needs to be removed from import paths
sys . path . append ( os . path . abspath ( os . path . join ( os . path . dirname ( __file__ ) , " .. " ) ) )
from localization . parseDictionary import parse_dictionary
def createMappedJsonFileDictionary ( inputDir , fileName ) :
"""
This function creates a dictionary that maps sub - directory names to their corresponding JSON file data .
Args :
inputDir ( str ) : The path to the input directory containing sub - directories .
fileName ( str ) : The name of the JSON file to be read for each sub - directory .
Returns :
tuple : A tuple containing two dictionaries :
- The first dictionary maps sub - directory names ( with hyphens replaced by underscores ) to their JSON data .
- The second dictionary maps sub - directory names ( with hyphens replaced by underscores ) to the file paths of their JSON files .
"""
# Get a list of all directories in the input directory
files = [
name
for name in os . listdir ( inputDir )
if os . path . isdir ( os . path . join ( inputDir , name ) )
]
# Initialize dictionaries to hold JSON data and file paths
dictionary = dict ( )
dictionaryKeyFiles = dict ( )
# Iterate over each sub-directory
for filePath in files :
# Replace hyphens in the directory name with underscores to create the dictionary key
key = filePath . replace ( " - " , " _ " )
# Construct the full path to the JSON file in this sub-directory
filePath = os . path . join ( inputDir , filePath , fileName )
# Store the file path in the dictionaryKeyFiles dictionary
dictionaryKeyFiles [ key ] = filePath
# Open the JSON file and load the data into the dictionary
localDict = parse_dictionary ( filePath )
if localDict is not None :
dictionary [ key ] = localDict
# Return the dictionaries containing the JSON data and file paths
return dictionary , dictionaryKeyFiles
def makeDirIfNotExists ( filePath ) :
"""
This function creates a directory if it does not already exist .
Args :
dirPath ( str ) : The path to the directory to create .
"""
os . makedirs ( os . path . dirname ( filePath ) , exist_ok = True )
def writeFile ( filePath , data ) :
"""
This function writes data to a file . Creating its parent directories if they do not exist .
Args :
filePath ( str ) : The path to the file to write the data to .
data ( str ) : The data to write to the file .
"""
makeDirIfNotExists ( filePath )
with open ( filePath , " w " , encoding = ' utf-8 ' ) as file :
file . write ( data )
def removeFileIfExists ( filePath ) :
"""
This function removes a file if it exists .
Args :
filePath ( str ) : The path to the file to remove .
"""
if os . path . exists ( filePath ) and os . path . isfile ( filePath ) :
os . remove ( filePath )