bbox-tile-server 0.6.1

Vector and raster tiles server supporting various sources and storage formats
Documentation
#!/usr/bin/env just --justfile

set shell := ["bash", "-c"]

# Start test database
start-db: start-docker-db docker-is-ready

# Start test database
[private]
start-docker-db:
    docker run -p 127.0.0.1:5439:5432 -d --name mvtbenchdb --rm sourcepole/mvtbenchdb:v1.2

# Stop test database
stop-db:
    docker stop mvtbenchdb

# Wait for the test database to be ready
[private]
docker-is-ready:
    docker exec mvtbenchdb sh -c 'until pg_isready -h localhost -U postgres; do sleep 1; done'

# -- s3 test environment

start-minio:
    mkdir -p s3data
    docker run --security-opt label=disable -d --rm --name minio -p 9000:9000 -p 9001:9001 -v $PWD/s3data:/data -e MINIO_REGION_NAME=my-region -e MINIO_ROOT_USER=miniostorage -e MINIO_ROOT_PASSWORD=miniostorage minio/minio server /data --console-address ":9001"

stop-minio:
    docker stop minio

setup-minio:
    docker exec minio mc config host add local-docker http://localhost:9000 miniostorage miniostorage
    docker exec minio mc mb local-docker/tiles || true
    docker exec minio mc anonymous set public local-docker/tiles

# Serve mvtbench tile service
serve: docker-is-ready
    cargo run -- --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=debug serve

# -- mvtbench seeding

# mvtbench seed files
seed-bench-files: docker-is-ready
    rm -rf /tmp/mvtbench
    cargo build --release
    ../target/release/bbox-tile-server --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=warn seed --tileset=ne_countries --maxzoom=6

# mvtbench seed MBTiles
seed-bench-mbtiles: docker-is-ready
    rm -f /tmp/mvtbench.mbtiles
    cargo build --release
    ../target/release/bbox-tile-server --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=warn seed --mb-path=/tmp/mvtbench.mbtiles --tileset=ne_countries --maxzoom=6

# mvtbench seed PMTiles
seed-bench-pmtiles: docker-is-ready
    rm -f /tmp/mvtbench.pmtiles
    cargo build --release
    ../target/release/bbox-tile-server --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=warn seed --pm-path=/tmp/mvtbench.pmtiles --tileset=ne_countries --maxzoom=6

# -- tile store write benchmarks

seed-write-bench-files:
    rm -rf /tmp/writebench
    cargo build --release
    ../target/release/bbox-tile-server --config=/dev/null --loglevel=warn seed --tile-path=/tmp/writebench --tileset=mvtbench --maxzoom=6 /tmp/mvtbench.pmtiles

seed-write-bench-mbtiles:
    rm -f /tmp/writebench.mbtiles
    cargo build --release
    ../target/release/bbox-tile-server --config=/dev/null --loglevel=info seed --mb-path=/tmp/writebench.mbtiles --tileset=mvtbench --maxzoom=6 /tmp/mvtbench.pmtiles

seed-write-bench-pmtiles:
    rm -f /tmp/writebench.pmtiles
    cargo build --release
    ../target/release/bbox-tile-server --config=/dev/null --loglevel=warn seed --pm-path=/tmp/writebench.pmtiles --tileset=mvtbench --maxzoom=6 /tmp/mvtbench.pmtiles

# -- tile datasource read benchmarks

seed-read-bench-pg: docker-is-ready
    cargo build --release
    ../target/release/bbox-tile-server --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=warn seed --no-store --tileset=ne_countries --maxzoom=6

seed-read-bench-mbtiles:
    cargo build --release
    ../target/release/bbox-tile-server --config=/dev/null --loglevel=info seed --no-store --tileset=mvtbench --maxzoom=6 /tmp/mvtbench.mbtiles

seed-read-bench-pmtiles:
    cargo build --release
    ../target/release/bbox-tile-server --config=/dev/null --loglevel=warn seed --no-store --tileset=mvtbench --maxzoom=6 /tmp/mvtbench.pmtiles

# Run all seeding benchmarks
seed-all-benchmarks: seed-bench-files seed-bench-mbtiles seed-bench-pmtiles seed-write-bench-files seed-write-bench-mbtiles seed-write-bench-pmtiles seed-read-bench-pg seed-read-bench-mbtiles seed-read-bench-pmtiles

# -- mvtbench test seeding

# mvtbench test seed files
seed-files: docker-is-ready
    rm -rf /tmp/mvtbench
    cargo run -- --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=info seed --tileset=ne_countries --maxzoom=3

# mvtbench test seed MBTiles
seed-mbtiles: docker-is-ready
    rm -f /tmp/tilecache.mbtiles
    cargo run -- --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=info seed --mb-path=/tmp/tilecache.mbtiles --tileset=ne_countries --maxzoom=3

# mvtbench test seed PMTiles
seed-pmtiles: docker-is-ready
    rm -f /tmp/tilecache.pmtiles
    cargo run -- --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=debug seed --pm-path=/tmp/tilecache.pmtiles --tileset=ne_countries --maxzoom=3

export AWS_ACCESS_KEY_ID := "miniostorage"
export AWS_SECRET_ACCESS_KEY := "miniostorage"
export S3_ENDPOINT_URL := "http://localhost:9000"

# mvtbench test seed S3
seed-s3: docker-is-ready
    cargo run -- --config={{justfile_directory()}}/bbox-mvtbench.toml --loglevel=info seed --tileset=ne_countries --s3-path=s3://tiles --overwrite=true --maxzoom=3

# -- raster seeding

seed-wms-mbtiles:
    cargo run -- --loglevel=info seed --tileset=gebco --mb-path=/tmp/gebco.mbtile --maxzoom=3

seed-wms-pmtiles:
    cargo run -- --loglevel=info seed --tileset=gebco --pm-path=/tmp/gebco.pmtile --maxzoom=3

seed-map-mbtiles:
    cargo run -- --loglevel=warn seed --tileset=ne_extracts --mb-path=/tmp/ne_extracts.mbtile --maxzoom=3

seed-map-pmtiles:
    cargo run -- --loglevel=warn seed --tileset=ne_extracts --pm-path=/tmp/ne_extracts.pmtile --maxzoom=3