From 1ad92a1d87d79084ebe524ed186c900ff042328c Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 6 Mar 2023 14:27:30 -0800 Subject: [PATCH] datasette install -r requirements.txt, closes #2033 --- datasette/cli.py | 14 ++++++++++++-- docs/cli-reference.rst | 7 ++++--- docs/plugins.rst | 11 ++++++++++- tests/test_cli.py | 18 ++++++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/datasette/cli.py b/datasette/cli.py index 0858fb8f..a3ae1269 100644 --- a/datasette/cli.py +++ b/datasette/cli.py @@ -340,15 +340,25 @@ def package( @cli.command() -@click.argument("packages", nargs=-1, required=True) +@click.argument("packages", nargs=-1) @click.option( "-U", "--upgrade", is_flag=True, help="Upgrade packages to latest version" ) -def install(packages, upgrade): +@click.option( + "-r", + "--requirement", + type=click.Path(exists=True), + help="Install from requirements file", +) +def install(packages, upgrade, requirement): """Install plugins and packages from PyPI into the same environment as Datasette""" + if not packages and not requirement: + raise click.UsageError("Please specify at least one package to install") args = ["pip", "install"] if upgrade: args += ["--upgrade"] + if requirement: + args += ["-r", requirement] args += list(packages) sys.argv = args run_module("pip", run_name="__main__") diff --git a/docs/cli-reference.rst b/docs/cli-reference.rst index ff0202f8..af747ab4 100644 --- a/docs/cli-reference.rst +++ b/docs/cli-reference.rst @@ -345,13 +345,14 @@ Would install the `datasette-cluster-map