#! /bin/bash # Copyright (C) 2018-2019 Merspieler, merspieler _at_ airmail.cc # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. root_path="$( cd "$(dirname "$0")" ; pwd -P )" auth=pw hostname=localhost first=1 while [[ $# -gt 0 ]] do key="$1" case $key in -u|--user) man_user="$2" shift # past argument shift # past value ;; -H|--host) hostname="$2" shift # past argument shift # past value ;; -s|--sudo) auth=sudo shift ;; -p|--password) export PGPASSWORD="$2" shift # past argument shift # past value ;; -h|--help) echo "usage: create-db [OPTIONS]" echo "Creates and prepares the database for the use with osm2city" echo "" echo "OPTIONS" echo " -u, --user User the database will be owned by." echo " NOTE: If not given, the one from the general-settings will be used" echo " -H, --host Database host name" echo " -s, --sudo Authenticate via sudo, databases on localhost only" echo " -p, --password Authenticate via password. Password for the postgres user" echo " -h, --help Shows this help and exit" exit 0 ;; *) if [ $first == "1" ]; then database="$1" shift # past database first=0 else echo "Unknown option $key" exit 1 fi ;; esac done if [ -z $database ]; then echo "Option -d is mandatory" exit 1 fi source "$root_path"/general-settings > /dev/null if [ ! -z "$man_user" ]; then db_user="$man_user" fi if [ "$auth" = "pw" ]; then if [ -z "$pw" ]; then echo "ERROR: No password or --sudo flag given" exit 1 fi fi if [ "$auth" = "sudo" ]; then sudo -u postgres createdb --encoding=UTF8 --owner=$db_user "$database" sudo -u postgres psql --dbname="$database" -c "CREATE EXTENSION postgis;" sudo -u postgres psql --dbname="$database" -c "CREATE EXTENSION hstore;" psql -d "$database" -f "$root_path"/sql/pgsnapshot_schema_0.6.sql psql -d "$database" -f "$root_path"/sql/pgsnapshot_schema_0.6_bbox.sql else createdb --host="$hostname" --username=postgres --encoding=UTF8 --owner=$db_user "$database" psql --host="$hostname" --username=postgres --dbname="$database" -c "CREATE EXTENSION postgis;" psql --host="$hostname" --username=postgres --dbname="$database" -c "CREATE EXTENSION hstore;" psql --host="$hostname" --username=postgres -d "$database" -f "$root_path"/sql/pgsnapshot_schema_0.6.sql psql --host="$hostname" --username=postgres -d "$database" -f "$root_path"/sql/pgsnapshot_schema_0.6_bbox.sql fi if [ ! -f ".databases" ]; then touch "$root_path"/.databases fi echo "$database" >> "$root_path"/.databases