From ea0069ef44473be8ecef088b8fe2d7f814884fd6 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 17 Jun 2018 13:14:55 -0700 Subject: [PATCH] datasette and datasette publish --version-note --- datasette/app.py | 8 ++++++-- datasette/cli.py | 6 ++++++ datasette/utils.py | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index 871a4bf1..70f2a93f 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -119,6 +119,7 @@ class Datasette: plugins_dir=None, static_mounts=None, config=None, + version_note=None, ): self.files = files self.cache_headers = cache_headers @@ -131,6 +132,7 @@ class Datasette: self.plugins_dir = plugins_dir self.static_mounts = static_mounts or [] self.config = dict(DEFAULT_CONFIG, **(config or {})) + self.version_note = version_note self.executor = futures.ThreadPoolExecutor( max_workers=self.config["num_sql_threads"] ) @@ -298,12 +300,14 @@ class Datasette: fts_versions.append(fts) except sqlite3.OperationalError: continue - + datasette_version = {"version": __version__} + if self.version_note: + datasette_version["note"] = self.version_note return { "python": { "version": ".".join(map(str, sys.version_info[:3])), "full": sys.version }, - "datasette": {"version": __version__}, + "datasette": datasette_version, "sqlite": { "version": sqlite_version, "fts_versions": fts_versions, diff --git a/datasette/cli.py b/datasette/cli.py index 04bf2dfa..ddb8d4ca 100644 --- a/datasette/cli.py +++ b/datasette/cli.py @@ -136,6 +136,7 @@ def inspect(files, inspect_file, sqlite_extensions): @click.option( "--spatialite", is_flag=True, help="Enable SpatialLite extension" ) +@click.option("--version-note", help="Additional note to show on /-/versions") @click.option("--title", help="Title for metadata") @click.option("--license", help="License label for metadata") @click.option("--license_url", help="License URL for metadata") @@ -155,6 +156,7 @@ def publish( static, install, spatialite, + version_note, **extra_metadata ): """ @@ -200,6 +202,7 @@ def publish( static, install, spatialite, + version_note, extra_metadata, ): args = [] @@ -478,6 +481,7 @@ def package( help="Set config option using configname:value datasette.readthedocs.io/en/latest/config.html", multiple=True, ) +@click.option("--version-note", help="Additional note to show on /-/versions") @click.option( "--help-config", is_flag=True, @@ -497,6 +501,7 @@ def serve( plugins_dir, static, config, + version_note, help_config, ): """Serve up specified SQLite database files with a web UI""" @@ -538,6 +543,7 @@ def serve( plugins_dir=plugins_dir, static_mounts=static, config=dict(config), + version_note=version_note, ) # Force initial hashing/table counting ds.inspect() diff --git a/datasette/utils.py b/datasette/utils.py index 033f2c22..a179eddf 100644 --- a/datasette/utils.py +++ b/datasette/utils.py @@ -241,7 +241,7 @@ def escape_sqlite(s): return '[{}]'.format(s) -def make_dockerfile(files, metadata_file, extra_options, branch, template_dir, plugins_dir, static, install, spatialite): +def make_dockerfile(files, metadata_file, extra_options, branch, template_dir, plugins_dir, static, install, spatialite, version_note): cmd = ['"datasette"', '"serve"', '"--host"', '"0.0.0.0"'] cmd.append('"' + '", "'.join(files) + '"') cmd.extend(['"--cors"', '"--port"', '"8001"', '"--inspect-file"', '"inspect-data.json"']) @@ -251,6 +251,8 @@ def make_dockerfile(files, metadata_file, extra_options, branch, template_dir, p cmd.extend(['"--template-dir"', '"templates/"']) if plugins_dir: cmd.extend(['"--plugins-dir"', '"plugins/"']) + if version_note: + cmd.extend(['"--version-note"', '"{}"'.format(version_note)]) if static: for mount_point, _ in static: cmd.extend(['"--static"', '"{}:{}"'.format(mount_point, mount_point)]) @@ -293,6 +295,7 @@ def temporary_docker_directory( static, install, spatialite, + version_note, extra_metadata=None ): extra_metadata = extra_metadata or {} @@ -324,6 +327,7 @@ def temporary_docker_directory( static, install, spatialite, + version_note, ) os.chdir(datasette_dir) if metadata_content: