New 'datasette plugins' command to list installed plugins

This commit is contained in:
Simon Willison 2019-01-26 12:01:16 -08:00
commit 909cc8fbdf
3 changed files with 61 additions and 2 deletions

View file

@ -369,7 +369,10 @@ class Datasette:
},
}
def plugins(self):
def plugins(self, show_all=False):
ps = list(get_plugins(pm))
if not show_all:
ps = [p for p in ps if p["name"] not in DEFAULT_PLUGINS]
return [
{
"name": p["name"],
@ -377,7 +380,7 @@ class Datasette:
"templates": p["templates_path"] is not None,
"version": p.get("version"),
}
for p in get_plugins(pm) if p["name"] not in DEFAULT_PLUGINS
for p in ps
]
async def execute(

View file

@ -159,6 +159,19 @@ def skeleton(files, metadata, sqlite_extensions):
click.echo("Wrote skeleton to {}".format(metadata))
@cli.command()
@click.option("--all", help="Include built-in default plugins", is_flag=True)
@click.option(
"--plugins-dir",
type=click.Path(exists=True, file_okay=False, dir_okay=True),
help="Path to directory containing custom plugins",
)
def plugins(all, plugins_dir):
"List currently available plugins"
app = Datasette([], plugins_dir=plugins_dir)
click.echo(json.dumps(app.plugins(all), indent=4))
@cli.command()
@click.argument("files", type=click.Path(exists=True), nargs=-1, required=True)
@click.option(