mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Compare commits
10 commits
main
...
travis-dep
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbb8742377 |
||
|
|
d2c873ab8c |
||
|
|
9fd1ffb613 |
||
|
|
38ef2e5943 |
||
|
|
b454d61e9f |
||
|
|
ea0069ef44 |
||
|
|
6d1c3559b4 |
||
|
|
18b2902bc3 |
||
|
|
c32889d3cd |
||
|
|
287ac27e06 |
5 changed files with 49 additions and 5 deletions
20
.travis.yml
20
.travis.yml
|
|
@ -1,8 +1,26 @@
|
||||||
language: python
|
language: python
|
||||||
|
|
||||||
|
# 3.6 is listed first so it gets used for the later build stages
|
||||||
python:
|
python:
|
||||||
- 3.5
|
|
||||||
- 3.6
|
- 3.6
|
||||||
|
- 3.5
|
||||||
|
|
||||||
|
# Executed for 3.5 AND 3.5 as the first "test" stage:
|
||||||
script:
|
script:
|
||||||
- python setup.py test
|
- python setup.py test
|
||||||
|
|
||||||
|
# This defines further stages that execute after the tests
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- stage: deploy latest.datasette.io
|
||||||
|
script:
|
||||||
|
- pip install .
|
||||||
|
- npm install -g now
|
||||||
|
- python tests/fixtures.py fixtures.db fixtures.json
|
||||||
|
- echo '{"name":"datasette-latest","alias":"latest.datasette.io"}' > now.json
|
||||||
|
- datasette publish now fixtures.db -m fixtures.json --token=$NOW_TOKEN --branch=$TRAVIS_COMMIT --version-note=$TRAVIS_COMMIT
|
||||||
|
- now alias --token=$NOW_TOKEN
|
||||||
|
- export ALIAS=`echo $TRAVIS_COMMIT | cut -c 1-7`
|
||||||
|
- echo "{\"name\":\"datasette-latest\",\"alias\":\"$ALIAS.datasette.io\"}" > now.json
|
||||||
|
- now alias --token=$NOW_TOKEN
|
||||||
|
on: travis-deploy-now
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ class Datasette:
|
||||||
plugins_dir=None,
|
plugins_dir=None,
|
||||||
static_mounts=None,
|
static_mounts=None,
|
||||||
config=None,
|
config=None,
|
||||||
|
version_note=None,
|
||||||
):
|
):
|
||||||
self.files = files
|
self.files = files
|
||||||
self.cache_headers = cache_headers
|
self.cache_headers = cache_headers
|
||||||
|
|
@ -131,6 +132,7 @@ class Datasette:
|
||||||
self.plugins_dir = plugins_dir
|
self.plugins_dir = plugins_dir
|
||||||
self.static_mounts = static_mounts or []
|
self.static_mounts = static_mounts or []
|
||||||
self.config = dict(DEFAULT_CONFIG, **(config or {}))
|
self.config = dict(DEFAULT_CONFIG, **(config or {}))
|
||||||
|
self.version_note = version_note
|
||||||
self.executor = futures.ThreadPoolExecutor(
|
self.executor = futures.ThreadPoolExecutor(
|
||||||
max_workers=self.config["num_sql_threads"]
|
max_workers=self.config["num_sql_threads"]
|
||||||
)
|
)
|
||||||
|
|
@ -298,12 +300,14 @@ class Datasette:
|
||||||
fts_versions.append(fts)
|
fts_versions.append(fts)
|
||||||
except sqlite3.OperationalError:
|
except sqlite3.OperationalError:
|
||||||
continue
|
continue
|
||||||
|
datasette_version = {"version": __version__}
|
||||||
|
if self.version_note:
|
||||||
|
datasette_version["note"] = self.version_note
|
||||||
return {
|
return {
|
||||||
"python": {
|
"python": {
|
||||||
"version": ".".join(map(str, sys.version_info[:3])), "full": sys.version
|
"version": ".".join(map(str, sys.version_info[:3])), "full": sys.version
|
||||||
},
|
},
|
||||||
"datasette": {"version": __version__},
|
"datasette": datasette_version,
|
||||||
"sqlite": {
|
"sqlite": {
|
||||||
"version": sqlite_version,
|
"version": sqlite_version,
|
||||||
"fts_versions": fts_versions,
|
"fts_versions": fts_versions,
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@ def inspect(files, inspect_file, sqlite_extensions):
|
||||||
@click.option("--extra-options", help="Extra options to pass to datasette serve")
|
@click.option("--extra-options", help="Extra options to pass to datasette serve")
|
||||||
@click.option("--force", is_flag=True, help="Pass --force option to now")
|
@click.option("--force", is_flag=True, help="Pass --force option to now")
|
||||||
@click.option("--branch", help="Install datasette from a GitHub branch e.g. master")
|
@click.option("--branch", help="Install datasette from a GitHub branch e.g. master")
|
||||||
|
@click.option("--token", help="Auth token to use for deploy (Now only)")
|
||||||
@click.option(
|
@click.option(
|
||||||
"--template-dir",
|
"--template-dir",
|
||||||
type=click.Path(exists=True, file_okay=False, dir_okay=True),
|
type=click.Path(exists=True, file_okay=False, dir_okay=True),
|
||||||
|
|
@ -135,6 +136,7 @@ def inspect(files, inspect_file, sqlite_extensions):
|
||||||
@click.option(
|
@click.option(
|
||||||
"--spatialite", is_flag=True, help="Enable SpatialLite extension"
|
"--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("--title", help="Title for metadata")
|
||||||
@click.option("--license", help="License label for metadata")
|
@click.option("--license", help="License label for metadata")
|
||||||
@click.option("--license_url", help="License URL for metadata")
|
@click.option("--license_url", help="License URL for metadata")
|
||||||
|
|
@ -148,11 +150,13 @@ def publish(
|
||||||
extra_options,
|
extra_options,
|
||||||
force,
|
force,
|
||||||
branch,
|
branch,
|
||||||
|
token,
|
||||||
template_dir,
|
template_dir,
|
||||||
plugins_dir,
|
plugins_dir,
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
**extra_metadata
|
**extra_metadata
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
|
|
@ -198,10 +202,16 @@ def publish(
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
extra_metadata,
|
extra_metadata,
|
||||||
):
|
):
|
||||||
|
args = []
|
||||||
if force:
|
if force:
|
||||||
call(["now", "--force"])
|
args.append("--force")
|
||||||
|
if token:
|
||||||
|
args.append("--token={}".format(token))
|
||||||
|
if args:
|
||||||
|
call(["now"] + args)
|
||||||
else:
|
else:
|
||||||
call("now")
|
call("now")
|
||||||
|
|
||||||
|
|
@ -366,6 +376,7 @@ def skeleton(files, metadata, sqlite_extensions):
|
||||||
@click.option(
|
@click.option(
|
||||||
"--spatialite", is_flag=True, help="Enable SpatialLite extension"
|
"--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("--title", help="Title for metadata")
|
||||||
@click.option("--license", help="License label for metadata")
|
@click.option("--license", help="License label for metadata")
|
||||||
@click.option("--license_url", help="License URL for metadata")
|
@click.option("--license_url", help="License URL for metadata")
|
||||||
|
|
@ -382,6 +393,7 @@ def package(
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
**extra_metadata
|
**extra_metadata
|
||||||
):
|
):
|
||||||
"Package specified SQLite files into a new datasette Docker container"
|
"Package specified SQLite files into a new datasette Docker container"
|
||||||
|
|
@ -405,6 +417,7 @@ def package(
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
extra_metadata,
|
extra_metadata,
|
||||||
):
|
):
|
||||||
args = ["docker", "build"]
|
args = ["docker", "build"]
|
||||||
|
|
@ -471,6 +484,7 @@ def package(
|
||||||
help="Set config option using configname:value datasette.readthedocs.io/en/latest/config.html",
|
help="Set config option using configname:value datasette.readthedocs.io/en/latest/config.html",
|
||||||
multiple=True,
|
multiple=True,
|
||||||
)
|
)
|
||||||
|
@click.option("--version-note", help="Additional note to show on /-/versions")
|
||||||
@click.option(
|
@click.option(
|
||||||
"--help-config",
|
"--help-config",
|
||||||
is_flag=True,
|
is_flag=True,
|
||||||
|
|
@ -490,6 +504,7 @@ def serve(
|
||||||
plugins_dir,
|
plugins_dir,
|
||||||
static,
|
static,
|
||||||
config,
|
config,
|
||||||
|
version_note,
|
||||||
help_config,
|
help_config,
|
||||||
):
|
):
|
||||||
"""Serve up specified SQLite database files with a web UI"""
|
"""Serve up specified SQLite database files with a web UI"""
|
||||||
|
|
@ -531,6 +546,7 @@ def serve(
|
||||||
plugins_dir=plugins_dir,
|
plugins_dir=plugins_dir,
|
||||||
static_mounts=static,
|
static_mounts=static,
|
||||||
config=dict(config),
|
config=dict(config),
|
||||||
|
version_note=version_note,
|
||||||
)
|
)
|
||||||
# Force initial hashing/table counting
|
# Force initial hashing/table counting
|
||||||
ds.inspect()
|
ds.inspect()
|
||||||
|
|
|
||||||
|
|
@ -241,7 +241,7 @@ def escape_sqlite(s):
|
||||||
return '[{}]'.format(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 = ['"datasette"', '"serve"', '"--host"', '"0.0.0.0"']
|
||||||
cmd.append('"' + '", "'.join(files) + '"')
|
cmd.append('"' + '", "'.join(files) + '"')
|
||||||
cmd.extend(['"--cors"', '"--port"', '"8001"', '"--inspect-file"', '"inspect-data.json"'])
|
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/"'])
|
cmd.extend(['"--template-dir"', '"templates/"'])
|
||||||
if plugins_dir:
|
if plugins_dir:
|
||||||
cmd.extend(['"--plugins-dir"', '"plugins/"'])
|
cmd.extend(['"--plugins-dir"', '"plugins/"'])
|
||||||
|
if version_note:
|
||||||
|
cmd.extend(['"--version-note"', '"{}"'.format(version_note)])
|
||||||
if static:
|
if static:
|
||||||
for mount_point, _ in static:
|
for mount_point, _ in static:
|
||||||
cmd.extend(['"--static"', '"{}:{}"'.format(mount_point, mount_point)])
|
cmd.extend(['"--static"', '"{}:{}"'.format(mount_point, mount_point)])
|
||||||
|
|
@ -293,6 +295,7 @@ def temporary_docker_directory(
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
extra_metadata=None
|
extra_metadata=None
|
||||||
):
|
):
|
||||||
extra_metadata = extra_metadata or {}
|
extra_metadata = extra_metadata or {}
|
||||||
|
|
@ -324,6 +327,7 @@ def temporary_docker_directory(
|
||||||
static,
|
static,
|
||||||
install,
|
install,
|
||||||
spatialite,
|
spatialite,
|
||||||
|
version_note,
|
||||||
)
|
)
|
||||||
os.chdir(datasette_dir)
|
os.chdir(datasette_dir)
|
||||||
if metadata_content:
|
if metadata_content:
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,7 @@ def test_temporary_docker_directory_uses_hard_link():
|
||||||
static=[],
|
static=[],
|
||||||
install=[],
|
install=[],
|
||||||
spatialite=False,
|
spatialite=False,
|
||||||
|
version_note=None,
|
||||||
) as temp_docker:
|
) as temp_docker:
|
||||||
hello = os.path.join(temp_docker, 'hello')
|
hello = os.path.join(temp_docker, 'hello')
|
||||||
assert 'world' == open(hello).read()
|
assert 'world' == open(hello).read()
|
||||||
|
|
@ -278,6 +279,7 @@ def test_temporary_docker_directory_uses_copy_if_hard_link_fails(mock_link):
|
||||||
static=[],
|
static=[],
|
||||||
install=[],
|
install=[],
|
||||||
spatialite=False,
|
spatialite=False,
|
||||||
|
version_note=None,
|
||||||
) as temp_docker:
|
) as temp_docker:
|
||||||
hello = os.path.join(temp_docker, 'hello')
|
hello = os.path.join(temp_docker, 'hello')
|
||||||
assert 'world' == open(hello).read()
|
assert 'world' == open(hello).read()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue