#!/usr/bin/env python import configparser import glob import os import sys from formats.SctEseFormat import SctEseFormat class Airport: def findGngData(data, path): if None == data.get('gngwildcard'): return None, None # find the newest ESE file files = glob.glob(os.path.join(path, data['gngwildcard'] + '.ese')) latestEse = max(files, key=os.path.getctime) # search for the corresponding SCT file latestSct = os.path.splitext(latestEse)[0] + '.sct' # check if the files exist if False == os.path.isfile(latestEse) or False == os.path.isfile(latestSct): return None, None return latestSct, latestEse def parsePlanning(self, planning): if None == planning.get('routes'): return [] return planning['routes'].split(':') def __init__(self, filepath : str, icao : str): self.arrivalRoutes = {} config = configparser.ConfigParser() config.read(filepath) dataConfig = None planningConfig = None # search the required sections for key in config: if 'DATA' == key: dataConfig = config['DATA'] elif 'PLANNING' == key: planningConfig = config['PLANNING'] # find the GNG-file data sctFile, eseFile = Airport.findGngData(dataConfig, os.path.dirname(filepath)) if None == sctFile or None == eseFile: sys.stderr.write('No GNG-files found') sys.exit(-1) # parse the planning information if None == planningConfig or False == self.parsePlanning(planningConfig): sys.stderr.write('No planning configuration found') sys.exit(-1) requiredArrivalRoutes = self.parsePlanning(planningConfig) if 0 == len(requiredArrivalRoutes): sys.stderr.write('No valid planning configuration found') sys.exit(-1) # parse the GNG data print('Used GNG-Data: ' + eseFile) self.gngData = SctEseFormat(sctFile, eseFile, icao, requiredArrivalRoutes)