alias remove command, alias list --json option - refs #2

This commit is contained in:
Simon Willison 2022-11-21 19:00:20 -08:00
commit ff3b64f425
3 changed files with 103 additions and 5 deletions

View file

@ -49,12 +49,16 @@ def alias():
@alias.command(name="list")
def list_():
@click.option("_json", "--json", is_flag=True, help="Output raw JSON")
def list_(_json):
"List aliases"
aliases_file = get_config_dir() / "aliases.json"
aliases = _load_aliases(aliases_file)
for alias, url in aliases.items():
click.echo(f"{alias} = {url}")
if _json:
click.echo(json.dumps(aliases, indent=2))
else:
for alias, url in aliases.items():
click.echo(f"{alias} = {url}")
@alias.command()
@ -70,6 +74,20 @@ def add(name, url):
aliases_file.write_text(json.dumps(aliases, indent=4))
@alias.command()
@click.argument("name")
def remove(name):
"Remove an alias"
config_dir = get_config_dir()
aliases_file = config_dir / "aliases.json"
aliases = _load_aliases(aliases_file)
if name in aliases:
del aliases[name]
aliases_file.write_text(json.dumps(aliases, indent=4))
else:
raise click.ClickException("No such alias")
def _load_aliases(aliases_file):
if aliases_file.exists():
aliases = json.loads(aliases_file.read_text())