#!/bin/bash
set -euo pipefail
COMPRESS=webp
BLOCKSIZE=256
WARP_RESAMPLE=bilinear
OVERVIEW_RESAMPLING=bilinear
# IMAGE="localhost/gdal-ubuntu-full:3.9.1v2"
# IMAGE="ghcr.io/osgeo/gdal:ubuntu-full-3.9.1"
IMAGE="localhost/gdal:latest"

if [ -f "${1}" ]; then
  filename=$(realpath "${1}")
  directory=$(dirname "$filename")
  basename=$(basename "$filename")
  # Capture timestamp as vrt could change while generating COG
  VRT_TIMESTAMP=$(stat --printf="%Y" "${filename}")
  TIF_TMP_FILE=${basename}.$$.tif
  eatmydata podman run --name "gdal_translate_${basename}" --rm -v ${directory}:/data --workdir /data "${IMAGE}" nice gdal_translate \
    -of COG \
    -co COMPRESS=webp \
    -co NUM_THREADS=ALL_CPUS \
    -co BIGTIFF=YES \
    -co TILING_SCHEME=GoogleMapsCompatible \
    --config BIGTIFF_OVERVIEW YES \
    --config GDAL_NUM_THREADS ALL_CPUS \
    -co ALIGNED_LEVELS=1 \
    -co SPARSE_OK=FALSE \
    -co ADD_ALPHA=YES \
    -co BLOCKSIZE=${BLOCKSIZE} \
    -co QUALITY=60 \
    -co OVERVIEW_QUALITY=55 \
    -co ZOOM_LEVEL_STRATEGY=UPPER \
    -co WARP_RESAMPLING=${WARP_RESAMPLE} \
    -co OVERVIEW_RESAMPLING=${OVERVIEW_RESAMPLING} \
    -co OVERVIEWS=IGNORE_EXISTING \
    -ovr NONE \
    "/data/${basename}" "/data/${TIF_TMP_FILE}"
  chmod go+r "${directory}/${TIF_TMP_FILE}"
  touch --no-create --date="@${VRT_TIMESTAMP}" "${directory}/${TIF_TMP_FILE}"
  mv "${directory}/${TIF_TMP_FILE}" "${directory}/${basename%.vrt}.${COMPRESS}.google.r_${WARP_RESAMPLE}.bs_${BLOCKSIZE}.aligned.cog.tif"
fi
