From 355f4baf577750c67da01df9a50a312a7714d618 Mon Sep 17 00:00:00 2001
From: ImreSamu <ImreSamu@users.noreply.github.com>
Date: Mon, 28 Nov 2016 23:15:47 +0100
Subject: [PATCH] more improvments

---
 Makefile      |  49 +++++++++++++++++++-
 quickstart.sh | 123 +++++++++++++++++++++++++++++---------------------
 2 files changed, 118 insertions(+), 54 deletions(-)

diff --git a/Makefile b/Makefile
index 67dfea57..8f552c32 100644
--- a/Makefile
+++ b/Makefile
@@ -57,9 +57,55 @@ clean:
 clean_build:
 	rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql
 
+clean-docker:
+	docker-compose down -v --remove-orphans
+	docker-compose rm -fv
+	docker volume ls -q | grep openmaptiles  | xargs -r docker volume rm || true
+
+list-docker-images:
+	docker images | grep openmaptiles
+
+refresh-docker-images:
+	docker pull openmaptiles/generate-vectortiles
+	docker pull openmaptiles/import-lakelines
+	docker pull openmaptiles/import-natural-earth
+	docker pull openmaptiles/import-osm
+	docker pull openmaptiles/import-sql
+	docker pull openmaptiles/import-water
+	docker pull openmaptiles/openmaptiles-tools
+	docker pull openmaptiles/postgis
+	docker pull osm2vectortiles/mapbox-studio
+
+remove-docker-images:
+	docker rmi openmaptiles/generate-vectortiles
+	docker rmi openmaptiles/import-lakelines
+	docker rmi openmaptiles/import-natural-earth
+	docker rmi openmaptiles/import-osm
+	docker rmi openmaptiles/import-sql
+	docker rmi openmaptiles/import-water
+	docker rmi openmaptiles/openmaptiles-tools
+	docker rmi openmaptiles/postgis
+	docker rmi osm2vectortiles/mapbox-studio
+
 psql:
 	docker-compose run --rm import-osm /usr/src/app/psql.sh
 
+psql-list-tables:
+	docker-compose run --rm import-osm /usr/src/app/psql.sh  -P pager=off  -c "\d+"
+
+psql-pg-stat-reset:
+	docker-compose run --rm import-osm /usr/src/app/psql.sh  -P pager=off  -c 'SELECT pg_stat_statements_reset();'
+
+forced-clean-sql:
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "DROP SCHEMA IF EXISTS public CASCADE"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE SCHEMA IF NOT EXISTS public"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE EXTENSION hstore"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE EXTENSION postgis"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE EXTENSION pg_stat_statements"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "GRANT ALL ON SCHEMA public TO postgres;"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "GRANT ALL ON SCHEMA public TO public;"
+	docker-compose run --rm import-osm /usr/src/app/psql.sh -c "COMMENT ON SCHEMA public IS 'standard public schema';"
+
 import-sql-dev:
 	docker-compose run --rm import-sql /bin/bash
 
@@ -91,5 +137,4 @@ etlgraph:
 	generate-etlgraph layers/place/place.yaml
 	generate-etlgraph layers/railway/railway.yaml
 	generate-etlgraph layers/water_name/water_name.yaml
-	
-		
\ No newline at end of file
+
diff --git a/quickstart.sh b/quickstart.sh
index 2a4216f6..69ed9566 100755
--- a/quickstart.sh
+++ b/quickstart.sh
@@ -3,42 +3,41 @@ set -o errexit
 set -o pipefail
 set -o nounset
 
+
+###########################################
+# OpenMapTiles quickstart.sh for x86_64 linux
+#
 # Example calls ...
-# ./quickstart.sh 
-# ./quickstart.sh africa 
-# ./quickstart.sh alabama 
-# ./quickstart.sh alaska 
-# ./quickstart.sh albania 
-# ./quickstart.sh alberta 
-# ./quickstart.sh alps 
+# ./quickstart.sh
+# ./quickstart.sh africa
+# ./quickstart.sh alabama
+# ./quickstart.sh alaska
+# ./quickstart.sh albania
+# ./quickstart.sh alberta
+# ./quickstart.sh alps
 # ....
-# 
+#
 # to list areas :  make download-geofabrik-list
 # see more QUICKSTART.md
 #
 
 if [ $# -eq 0 ]; then
-    echo "No parameter - set area=albania "
-    osm_area=albania
-else    
+    osm_area=albania                         #  default test country
+    echo "No parameter - set area=$osm_area "
+else
     osm_area=$1
 fi
-
 testdata=${osm_area}.osm.pbf
 
-
-##
-##  OpenMapTiles quickstart.sh for x86_64 linux
-##  
+##  Min versions ...
 MIN_COMPOSE_VER=1.7.1
 MIN_DOCKER_VER=1.10.0
 
-
 STARTTIME=$(date +%s)
 STARTDATE=$(date -Iminutes)
 githash=$( git rev-parse HEAD )
 
-log_file=quickstart.log
+log_file=./quickstart.log
 rm -f $log_file
 exec &> >(tee -a "$log_file")
 
@@ -94,6 +93,10 @@ if [ $DOCKER_VER "<" $MIN_DOCKER_VER ]; then
   exit 1
 fi
 
+echo " "
+echo "-------------------------------------------------------------------------------------"
+echo "====> : Pulling or Refreshing OpenMapTiles docker images "
+#make refresh-docker-images
 
 echo " "
 echo "-------------------------------------------------------------------------------------"
@@ -103,18 +106,12 @@ docker images | grep openmaptiles
 echo " "
 echo "-------------------------------------------------------------------------------------"
 echo "====> : Stopping running services & removing old containers "
-docker-compose down
-docker-compose kill
-docker-compose rm -fv
+make clean-docker
 
 echo " "
 echo "-------------------------------------------------------------------------------------"
-echo "====> : For a clean start, we are removing old postgresql data volume ( if it exists )"
-docker volume ls -q | grep openmaptiles  | xargs -r docker volume rm || true
-
-echo " "
-echo "-------------------------------------------------------------------------------------"
-echo "====> : Making directories - if they don't exist ( ./build ./data ) "
+echo "====> : Making directories - if they don't exist ( ./build ./data ./pgdata ) "
+mkdir -p pgdata
 mkdir -p build
 mkdir -p data
 
@@ -123,6 +120,12 @@ echo "--------------------------------------------------------------------------
 echo "====> : Removing old MBTILES if exists ( ./data/*.mbtiles ) "
 rm -f ./data/*.mbtiles
 
+echo " "
+echo "-------------------------------------------------------------------------------------"
+echo "====> : Removing pgdata  "
+# rm -rf ./pgdata/*
+
+
 
 if [ !  -f ./data/${testdata} ]; then
     echo " "
@@ -131,22 +134,28 @@ if [ !  -f ./data/${testdata} ]; then
     rm -f ./data/*
     #wget $testdataurl  -P ./data
     docker-compose run --rm import-osm  ./download-geofabrik.sh ${osm_area}
+    echo " "
+    echo "-------------------------------------------------------------------------------------"
+    echo "====> : Osm metadata : $testdata   "
+    cat ./data/osmstat.txt
+    echo " "
+    echo "-------------------------------------------------------------------------------------"
+    echo "====> : Generated docker-compose config  "
+    cat ./data/docker-compose-config.yml
 else
     echo " "
     echo "-------------------------------------------------------------------------------------"
-    echo "====> : The testdata ./data/$testdata exists, we don't need to download! "    
+    echo "====> : The testdata ./data/$testdata exists, we don't need to download! "
 fi
 
 
 if [ !  -f ./data/${testdata} ]; then
     echo " "
-    echo "Missing ./data/$testdata , Download error? "
+    echo "Missing ./data/$testdata , Download or Parameter error? "
     exit 404
 fi
 
 
-
-
 echo " "
 echo "-------------------------------------------------------------------------------------"
 echo "====> : Remove old generated source files ( ./build/* ) ( if they exist ) "
@@ -165,7 +174,9 @@ echo "====> : Start PostgreSQL service ; create PostgreSQL data volume "
 echo "      : Source code: https://github.com/openmaptiles/postgis "
 echo "      : Thank you: https://www.postgresql.org !  Thank you http://postgis.org !"
 docker-compose up   -d postgres
-sleep 30
+
+# Drop all PostgreSQL tables ...
+make forced-clean-sql
 
 echo " "
 echo "-------------------------------------------------------------------------------------"
@@ -198,7 +209,7 @@ echo "      : Imposm3 documentation: https://imposm.org/docs/imposm3/latest/inde
 echo "      :   Thank you Omniscale! "
 echo "      :   Source code: https://github.com/openmaptiles/import-osm "
 echo "      : The OpenstreetMap data license: https://www.openstreetmap.org/copyright (ODBL) "
-echo "      : Thank you OpenStreetMap Contributors ! " 
+echo "      : Thank you OpenStreetMap Contributors ! "
 docker-compose run --rm import-osm
 
 echo " "
@@ -230,16 +241,17 @@ docker-compose stop postgres
 echo " "
 echo "-------------------------------------------------------------------------------------"
 echo "====> : Inputs - Outputs md5sum for debugging "
-rm -f quickstart_checklist.chk
-md5sum build/mapping.yaml                     >> quickstart_checklist.chk
-md5sum build/tileset.sql                      >> quickstart_checklist.chk
-md5sum build/openmaptiles.tm2source/data.yml  >> quickstart_checklist.chk
-md5sum ./data/${testdata}                     >> quickstart_checklist.chk
-md5sum ./data/tiles.mbtiles                   >> quickstart_checklist.chk
-md5sum ./data/docker-compose-config.yml       >> quickstart_checklist.chk
-cat quickstart_checklist.chk
+rm -f ./data/quickstart_checklist.chk
+md5sum build/mapping.yaml                     >> ./data/quickstart_checklist.chk
+md5sum build/tileset.sql                      >> ./data/quickstart_checklist.chk
+md5sum build/openmaptiles.tm2source/data.yml  >> ./data/quickstart_checklist.chk
+md5sum ./data/${testdata}                     >> ./data/quickstart_checklist.chk
+md5sum ./data/tiles.mbtiles                   >> ./data/quickstart_checklist.chk
+md5sum ./data/docker-compose-config.yml       >> ./data/quickstart_checklist.chk
+md5sum ./data/osmstat.txt                     >> ./data/quickstart_checklist.chk
+cat ./data/quickstart_checklist.chk
 
-ENDTIME=$(date +%s) 
+ENDTIME=$(date +%s)
 ENDDATE=$(date -Iminutes)
 MODDATE=$(stat -c  %y  ./data/${testdata} )
 
@@ -254,11 +266,12 @@ echo "====> : (disk space) We have created a lot of docker images: "
 echo "      : Hint: you can remove with:  docker rmi IMAGE "
 docker images | grep openmaptiles
 
-echo " "
-echo "-------------------------------------------------------------------------------------"
-echo "====> : (disk space) We have created this new docker volume for PostgreSQL data:"
-echo "      : Hint: you can remove with : docker volume rm openmaptiles_pgdata "
-docker volume ls -q | grep openmaptiles 
+#
+# echo " "
+# echo "-------------------------------------------------------------------------------------"
+# echo "====> : (disk space) We have created this new docker volume for PostgreSQL data:"
+# echo "      : Hint: you can remove with : docker volume rm openmaptiles_pgdata "
+# docker volume ls -q | grep openmaptiles
 
 echo " "
 echo "-------------------------------------------------------------------------------------"
@@ -273,7 +286,7 @@ echo "--------------------------------------------------------------------------
 echo "The ./quickstart.sh $osm_area  is finished! "
 echo "It takes $(($ENDTIME - $STARTTIME)) seconds to complete"
 echo "We saved the log file to $log_file  ( for debugging ) You can compare with the travis log !"
-echo " " 
+echo " "
 echo "Start experimenting !  And check the QUICKSTART.MD file !"
 echo "  "
 echo "Hints for testing other areas"
@@ -283,17 +296,23 @@ echo "  "
 echo "Hints for designers:"
 echo "  ....                                 # start Maputnik "
 echo "  ....                                 # start Tileserver-gl-light"
-echo "  make start-mapbox-studio             # start Mapbox Studio  "
+echo "  make start-mapbox-studio             # start Mapbox Studio"
 echo "  "
 echo "Hints for developers:"
 echo "  make download-geofabrik area=albania # download OSM data from geofabrik area=albania"
 echo "  make psql                            # start PostgreSQL console "
+echo "  make psql-list-tables                # list all PostgreSQL tables "
 echo "  make import-sql-dev                  # start import-sql  /bin/bash terminal "
 echo "  make import-osm-dev                  # start import-osm  /bin/bash terminal (imposm3)"
-echo "  ....                                 # start lukasmartinelli/postgis-editor"
+echo "  make clean-docker                    # remove docker containers, PG data volume "
+echo "  make forced-clean-sql                # drop all PostgreSQL tables for clean environment "
+echo "  make refresh-docker-images           # refresh openmaptiles docker images from Docker HUB"
+echo "  make remove-docker-images            # remove openmaptiles docker images"
 echo "  cat  .env                            # list PG database and MIN_ZOOM and MAX_ZOOM informations"
-echo "  cat quickstart.log                   # backup ./quickstart.log for Technical Support :) "
+echo "  cat ./quickstart.log                 # backup  of the last ./quickstart.sh "
+echo "  ....                                 # start lukasmartinelli/postgis-editor"
+echo "  "
 echo "-------------------------------------------------------------------------------------"
 echo " Acknowledgments "
-echo " Thanks to all free, open source software developers and Open Data Contributors !    "  
+echo " Thanks to all free, open source software developers and Open Data Contributors !    "
 echo "-------------------------------------------------------------------------------------"