#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
# SPDX-License-Identifier: MIT
#
# Generates a GeoJSON document from coverage areas of Transport API data
#

import argparse
import glob
import json
import os
import re

parser = argparse.ArgumentParser(
    description='Generates a GeoJSON document from coverage areas of the Transport API Repository')
parser.add_argument('--data', type=str, required=True, help='Path to the Transport API data')
arguments = parser.parse_args()

output = {}
output['type'] = 'FeatureCollection'
output['name'] = 'Transport API Repository Coverage Data'
output['features'] = []

transportApiFiles = glob.glob(arguments.data + "/*/*.json", recursive=True)
for transportApiFile in transportApiFiles:
    f = open(transportApiFile, 'r')
    j = json.load(f)
    nameMatch = re.search('/([a-z]{2})/(.*)\\.json', transportApiFile)
    if nameMatch:
        name = nameMatch.group(1) + '-' + nameMatch.group(2)
    else:
        name = os.path.splitext(os.path.basename(transportApiFile))[0]

    for cov in ['anyCoverage', 'regularCoverage', 'realtimeCoverage']:
        if 'coverage' not in j or cov not in j['coverage'] or 'area' not in j['coverage'][cov]:
            continue
        properties = {}
        properties['name'] = name + '-' + cov
        feature = {}
        feature['type'] = 'Feature'
        feature['properties'] = properties
        feature['geometry'] = j['coverage'][cov]['area']
        output['features'].append(feature)

print(json.dumps(output))