31 lines
769 B
Python
31 lines
769 B
Python
import click
|
|
import logging
|
|
|
|
import fiona
|
|
from fiona.fio import with_context_env
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@click.command(help="Remove a datasource or an individual layer.")
|
|
@click.argument("input", required=True)
|
|
@click.option("--layer", type=str, default=None, required=False, help="Name of layer to remove.")
|
|
@click.option("--yes", is_flag=True)
|
|
@click.pass_context
|
|
@with_context_env
|
|
def rm(ctx, input, layer, yes):
|
|
if layer is None:
|
|
kind = "datasource"
|
|
else:
|
|
kind = "layer"
|
|
|
|
if not yes:
|
|
click.confirm(f"The {kind} will be removed. Are you sure?", abort=True)
|
|
|
|
try:
|
|
fiona.remove(input, layer=layer)
|
|
except Exception:
|
|
logger.exception(f"Failed to remove {kind}.")
|
|
raise click.Abort()
|