#!/Users/Bdon/workspace/hot/osm-export-tool-python/venv/bin/python
import sys
import time
import argparse
import osm_export_tool.export as export
from osm_export_tool.feature_selection import FeatureSelection

def main():
	parser = argparse.ArgumentParser(description='Export OSM data in other file formats.')
	parser.add_argument('osm_file',  help='OSM .pbf or .xml input file')
	parser.add_argument('output_name', help='Output prefix')
	parser.add_argument('-f','--formats', dest='formats',default='gpkg',help='List of formats e.g. gpkg,shp,kml (default: gpkg)')
	parser.add_argument('-m','--mapping', dest='mapping',help='YAML mapping of features schema. If not specified, a default is used.')
	parser.add_argument('-v','--verbose', action='store_true')
	parsed = parser.parse_args()
	print(parsed.mapping)

	mapping = None
	with open(parsed.mapping,'r') as f:
		mapping = FeatureSelection(f.read())

	formats = parsed.formats.split(',')
	outputs = []
	if 'gpkg' in formats:
		outputs.append(export.Geopackage(parsed.output_name,mapping))
	if 'shp' in formats:
		outputs.append(export.Shapefile(parsed.output_name,mapping))
	if 'kml' in formats:
		outputs.append(export.Kml(parsed.output_name,mapping))
	h = export.Handler(outputs,mapping)
	start_time = time.time()
	h.apply_file(parsed.osm_file, locations=True, idx='sparse_file_array')

	for output in outputs:
		output.finalize()
	print(time.time() - start_time)

if __name__ == '__main__':
	main()