Mercurial > gemma
annotate style-templates/upload-styles.sh @ 4917:0098cfd602be fairway-marks-import
Allow uploading of single SLD templates
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 13 Feb 2020 11:37:22 +0100 |
parents | 15372dd971e9 |
children | a9fac2394238 |
rev | line source |
---|---|
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
1 #!/bin/bash -e |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
2 # |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
3 # This is Free Software under GNU Affero General Public License v >= 3.0 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
4 # without warranty, see README.md and license for details. |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
5 # |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
6 # SPDX-License-Identifier: AGPL-3.0-or-later |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
7 # License-Filename: LICENSES/AGPL-3.0.txt |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
8 # |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
9 # Copyright (C) 2019 by via donau |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
10 # – Österreichische Wasserstraßen-Gesellschaft mbH |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
11 # Software engineering by Intevation GmbH |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
12 # |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
13 # Author(s): |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
14 # * Sascha Wilde <wilde@intevation.de> |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
15 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
16 ME=`basename "$0"` |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
17 BASEDIR=`dirname "$0"` |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
18 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
19 usage() |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
20 { |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
21 cat <<EOF |
4917
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
22 $ME [OPTION]... [input-file]... |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
23 |
4917
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
24 Upload map styles to gemma. Uses either the given input files or all files |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
25 in the directory where this script resides. Input files must have the name |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
26 of a published layer in gemma and the suffix .sld-template. |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
27 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
28 Options: |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
29 -P, --g_port=GPORT connect to gemma server at GPORT. Default 8000. |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
30 -g, --g_host=GHOST connect to gemma server on GHOST. Default "localhost". |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
31 -u, --g_user=GUSER login to gemma as user GUSER. Default "sophie". |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
32 --g_pw=GPW password for GUSER. Default "so2Phie4". |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
33 --help display this help and exit |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
34 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
35 EOF |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
36 } |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
37 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
38 fatal() |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
39 { |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
40 echo >&2 "$1" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
41 exit 23 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
42 } |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
43 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
44 # Defaults: |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
45 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
46 g_port=8000 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
47 g_host="localhost" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
48 g_user="sophie" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
49 g_pw="so2Phie4" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
50 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
51 # Parse options: |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
52 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
53 OPTS=`getopt \ |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
54 -l help,g_port:,g_host:,g_user:,g_pw: \ |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
55 -o P:g:u: -n "$ME" -- "$@"` |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
56 [ $? -eq 0 ] || { usage ; exit 1 ; } |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
57 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
58 eval set -- "$OPTS" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
59 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
60 while true ; do |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
61 case "$1" in |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
62 --g_port|-P) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
63 g_port="$2" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
64 shift 2 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
65 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
66 --g_host|-g) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
67 g_host="$2" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
68 shift 2 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
69 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
70 --g_user|-u) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
71 g_user="$2" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
72 shift 2 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
73 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
74 --g_pw) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
75 g_pw="$2" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
76 shift 2 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
77 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
78 --help) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
79 { usage ; exit 0 ; } |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
80 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
81 --) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
82 shift |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
83 break |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
84 ;; |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
85 esac |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
86 done |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
87 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
88 # Main ------------------------------------------------------------ |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
89 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
90 # Login to gemma server |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
91 login=$(curl -f -s -S -X POST \ |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
92 -d "{\"user\":\"${g_user}\",\"password\":\"${g_pw}\"}" \ |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
93 "http://${g_host}:${g_port}/api/login") |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
94 token=$(jq -r '.token' <<<"$login") |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
95 if [ -z "$token" ] |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
96 then |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
97 echo "could not login to gemma server" >&2 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
98 exit 1 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
99 fi |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
100 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
101 roles=$(jq -r '.roles' <<<"$login") |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
102 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
103 basedir=$( dirname $( realpath "${BASH_SOURCE[0]}" )) |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
104 datadir="${basedir}/." |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
105 |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
106 if jq -e 'any(. == "sys_admin")' <<<"$roles" > /dev/null |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
107 then |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
108 echo "== Configuring geoserver styles" >&2 |
4917
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
109 if [ $# -gt 0 ]; then |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
110 files=("$@") |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
111 else |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
112 files=($(ls $datadir/*.sld-template)) |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
113 fi |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
114 for file in ${files[@]} |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
115 do |
4917
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
116 style=$(basename "$file" .sld-template) |
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
117 echo "uploading ${style} ..." |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
118 curl -f -s -S -H "X-Gemma-Auth:${token}" -X POST \ |
4917
0098cfd602be
Allow uploading of single SLD templates
Tom Gottfried <tom@intevation.de>
parents:
4631
diff
changeset
|
119 -F style=@"${file}" \ |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
120 "http://${g_host}:${g_port}/api/geo/style/${style}" |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
121 done |
4631
15372dd971e9
Made upload-styles.sh a little more verbose.
Sascha Wilde <wilde@intevation.de>
parents:
4481
diff
changeset
|
122 echo 'done.' |
4481
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
123 else |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
124 echo >&2 'Not authorized as sys_admin' |
43c52a2d4f17
Add style-templates for geoserver
Bernhard Reiter <bernhard@intevation.de>
parents:
diff
changeset
|
125 fi |