39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
"""$ fio env"""
|
|
|
|
import json
|
|
import os
|
|
|
|
import click
|
|
|
|
import fiona
|
|
from fiona._env import GDALDataFinder, PROJDataFinder
|
|
|
|
|
|
@click.command(short_help="Print information about the fio environment.")
|
|
@click.option('--formats', 'key', flag_value='formats', default=True,
|
|
help="Enumerate the available formats.")
|
|
@click.option('--credentials', 'key', flag_value='credentials', default=False,
|
|
help="Print credentials.")
|
|
@click.option('--gdal-data', 'key', flag_value='gdal_data', default=False,
|
|
help="Print GDAL data path.")
|
|
@click.option('--proj-data', 'key', flag_value='proj_data', default=False,
|
|
help="Print PROJ data path.")
|
|
@click.pass_context
|
|
def env(ctx, key):
|
|
"""Print information about the Fiona environment: available
|
|
formats, etc.
|
|
"""
|
|
stdout = click.get_text_stream('stdout')
|
|
with ctx.obj['env'] as env:
|
|
if key == 'formats':
|
|
for k, v in sorted(fiona.supported_drivers.items()):
|
|
modes = ', '.join("'" + m + "'" for m in v)
|
|
stdout.write(f"{k} (modes {modes})\n")
|
|
stdout.write('\n')
|
|
elif key == 'credentials':
|
|
click.echo(json.dumps(env.session.credentials))
|
|
elif key == 'gdal_data':
|
|
click.echo(os.environ.get('GDAL_DATA') or GDALDataFinder().search())
|
|
elif key == 'proj_data':
|
|
click.echo(os.environ.get('PROJ_DATA', os.environ.get('PROJ_LIB')) or PROJDataFinder().search())
|