Mercurial > gemma
view style-templates/upload-styles.sh @ 5095:e21cbb9768a2
Prevent duplicate fairway areas
In principal, there can be only one or no fairway area at each point
on the map. Since polygons from real data will often be topologically
inexact, just disallow equal geometries. This will also help to
avoid importing duplicates with concurrent imports, once the history
of fairway dimensions will be preserved.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 25 Mar 2020 18:10:02 +0100 |
parents | 136dc9e528c4 |
children |
line wrap: on
line source
#!/bin/bash -e # # This is Free Software under GNU Affero General Public License v >= 3.0 # without warranty, see README.md and license for details. # # SPDX-License-Identifier: AGPL-3.0-or-later # License-Filename: LICENSES/AGPL-3.0.txt # # Copyright (C) 2019 by via donau # – Österreichische Wasserstraßen-Gesellschaft mbH # Software engineering by Intevation GmbH # # Author(s): # * Sascha Wilde <wilde@intevation.de> ME=`basename "$0"` BASEDIR=`dirname "$0"` usage() { cat <<EOF $ME [OPTION]... [input-file]... Upload map styles to gemma. Uses either the given input files or all files in the directory where this script resides. Input files must have the name of a published layer in gemma and the suffix .sld-template. Options: -P, --g_port=GPORT connect to gemma server at GPORT. Default 8000. -g, --g_host=GHOST connect to gemma server on GHOST. Default "localhost". -u, --g_user=GUSER login to gemma as user GUSER. Default "sophie". -d, --extra_dir=DIR search DIR in addition to the default styles directory. This option can be specified multiple times. --g_pw=GPW password for GUSER. Default "so2Phie4". --help display this help and exit EOF } fatal() { echo >&2 "$1" exit 23 } # Defaults: g_port=8000 g_host="localhost" g_user="sophie" g_pw="so2Phie4" declare -a extra_dirs # Parse options: OPTS=`getopt \ -l help,g_port:,g_host:,g_user:,g_pw:,extra_dir: \ -o P:g:u:d: -n "$ME" -- "$@"` [ $? -eq 0 ] || { usage ; exit 1 ; } eval set -- "$OPTS" while true ; do case "$1" in --g_port|-P) g_port="$2" shift 2 ;; --g_host|-g) g_host="$2" shift 2 ;; --g_user|-u) g_user="$2" shift 2 ;; --g_pw) g_pw="$2" shift 2 ;; --extra_dir|-d) extra_dirs+=("$2") shift 2 ;; --help) { usage ; exit 0 ; } ;; --) shift break ;; esac done # Main ------------------------------------------------------------ # Login to gemma server login=$(curl -f -s -S -X POST \ -d "{\"user\":\"${g_user}\",\"password\":\"${g_pw}\"}" \ "http://${g_host}:${g_port}/api/login") token=$(jq -r '.token' <<<"$login") if [ -z "$token" ] then echo "could not login to gemma server" >&2 exit 1 fi roles=$(jq -r '.roles' <<<"$login") basedir=$( dirname $( realpath "${BASH_SOURCE[0]}" )) datadir="${basedir}/." if jq -e 'any(. == "sys_admin")' <<<"$roles" > /dev/null then echo "== Configuring geoserver styles" >&2 if [ $# -gt 0 ]; then files=("$@") else files=($(find "$datadir" "${extra_dirs[@]}" \ -name "*.sld-template" -or -name "*.zip")) fi for file in ${files[@]} do style=$(basename $(basename "$file" .zip) .sld-template) echo "uploading ${style} ..." curl -f -s -S -H "X-Gemma-Auth:${token}" -X POST \ -F style=@"${file}" \ "http://${g_host}:${g_port}/api/geo/style/${style}" done echo 'done.' else echo >&2 'Not authorized as sys_admin' fi