From efa3cb27ec7ec7c9414d725fb4454a70d71c85ba Mon Sep 17 00:00:00 2001
From: nd <git@notandy.de>
Date: Sat, 31 Jul 2021 16:53:15 +0200
Subject: [PATCH] add maintainer scripts to .deb

---
 .gitlab-ci.yml             | 29 +++++++++++++++++++----------
 MANIFEST.in                |  1 +
 debian/control             |  1 +
 debian/{uffd.dirs => dirs} |  0
 debian/install             |  3 +++
 debian/links               |  1 +
 debian/postinst            | 28 ++++++++++++++++++++++++++++
 debian/postrm              | 20 ++++++++++++++++++++
 debian/uffd.cfg            |  2 ++
 debian/uffd.install        |  2 --
 debian/uffd.links          |  1 -
 uwsgi.ini                  |  1 +
 12 files changed, 76 insertions(+), 13 deletions(-)
 rename debian/{uffd.dirs => dirs} (100%)
 create mode 100644 debian/install
 create mode 100644 debian/links
 create mode 100755 debian/postinst
 create mode 100755 debian/postrm
 create mode 100644 debian/uffd.cfg
 delete mode 100644 debian/uffd.install
 delete mode 100644 debian/uffd.links

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fdee7040..e1b703fa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,8 +13,11 @@ before_script:
   - python3 -m coverage --version
   - echo "${CI_COMMIT_TAG}" | grep -qE "v[0-9]+[.][0-9]+[.][0-9]+.*" && export UFFD_PACKAGE_VERSION="${CI_COMMIT_TAG#v}" || export UFFD_PACKAGE_VERSION="${CI_COMMIT_SHA}"
 
-build:pip:
+.build:
   stage: build
+
+build:pip:
+  extends: .build
   script:
   - pip3 install build
   - PACKAGE_VERSION="${UFFD_PACKAGE_VERSION}" python3 -m build
@@ -23,7 +26,7 @@ build:pip:
       - dist/*
 
 build:apt:
-  stage: build
+  extends: .build
   script:
     - apt update
     - apt-get install -y python3-all debhelper python3-pip git-buildpackage
@@ -91,12 +94,17 @@ html5validator:
     - pages
     - html5validator.log
 
-trans_de:
+.trans:
   stage: test
   script:
-  - ./update_translations.sh de
+  - ./update_translations.sh $TRANSLATION_LANGUAGE
   coverage: '/^TOTAL.*\s+(\d+\%)$/'
 
+trans_de:
+  extends: .trans
+  variables:
+    TRANSLATION_LANGUAGE: de
+
 test:package:pip:
   stage: test
   script:
@@ -111,22 +119,23 @@ test:package:apt:
   dependencies:
   - build:apt
 
-publish:pip:
+.publish:
   stage: deploy
+  rules:
+    - if: '$CI_COMMIT_TAG =~ /v[0-9]+[.][0-9]+[.][0-9]+.*/'
+
+publish:pip:
+  extends: .publish
   script:
   - pip3 install twine
   - TWINE_USERNAME="${GITLABPKGS_USERNAME}" TWINE_PASSWORD="${GITLABPKGS_PASSWORD}" python3 -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
   - TWINE_USERNAME="${PYPI_USERNAME}" TWINE_PASSWORD="${PYPI_PASSWORD}" python3 -m twine upload dist/*
   dependencies:
   - build:pip
-  rules:
-    - if: '$CI_COMMIT_TAG =~ /v[0-9]+[.][0-9]+[.][0-9]+.*/'
 
 publish:apt:
-  stage: deploy
+  extends: .publish
   script:
   - exit 0
   dependencies:
   - build:apt
-  rules:
-    - if: '$CI_COMMIT_TAG =~ /v[0-9]+[.][0-9]+[.][0-9]+.*/'
diff --git a/MANIFEST.in b/MANIFEST.in
index 76b04db4..7e8a1c8a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,5 @@
 include setup.py
+recursive-include uffd *.py *.html *.js *.css *.txt *.po *.cfg
 graft uffd/migrations
 graft uffd/templates
 graft uffd/*/templates
diff --git a/debian/control b/debian/control
index 5d85a101..f0c914ef 100644
--- a/debian/control
+++ b/debian/control
@@ -24,6 +24,7 @@ Depends:
  python3-fido2,
  python3-flask-oauthlib,
  python3-flask-babel,
+Recommends:
  nginx,
  uwsgi,
  uwsgi-plugin-python3,
diff --git a/debian/uffd.dirs b/debian/dirs
similarity index 100%
rename from debian/uffd.dirs
rename to debian/dirs
diff --git a/debian/install b/debian/install
new file mode 100644
index 00000000..7d684bb9
--- /dev/null
+++ b/debian/install
@@ -0,0 +1,3 @@
+uwsgi.ini		/etc/uffd/
+nginx.include.conf	/etc/uffd/
+debian/uffd.cfg		/etc/uffd/
diff --git a/debian/links b/debian/links
new file mode 100644
index 00000000..21a45dcf
--- /dev/null
+++ b/debian/links
@@ -0,0 +1 @@
+/etc/uffd/uffd.cfg /usr/share/uffd/uffd/instance/config.cfg
diff --git a/debian/postinst b/debian/postinst
new file mode 100755
index 00000000..9615da0b
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+	configure)
+		getent group uffd >/dev/null 2>&1 || addgroup --system uffd
+		adduser --system --home /var/lib/uffd --quiet uffd --ingroup uffd || true
+
+		chown -R uffd:uffd /var/lib/uffd
+		chmod 0770 /var/lib/uffd
+
+		chown root:uffd /etc/uffd/uffd.cfg
+		chmod 0640 /etc/uffd/uffd.cfg
+	;;
+
+	abort-upgrade|abort-remove|abort-deconfigure)
+	;;
+
+	*)
+		echo "postinst called with unknown argument \`$1'" >&2
+		exit 1
+	;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/postrm b/debian/postrm
new file mode 100755
index 00000000..835109bc
--- /dev/null
+++ b/debian/postrm
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+	purge)
+		delgroup uffd || true
+		userdel uffd || true
+		rm -rf /var/lib/uffd
+	;;
+	remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+	;;
+	*)
+		echo "postrm called with unknown argument \`$1'" >&2
+		exit 1
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/uffd.cfg b/debian/uffd.cfg
new file mode 100644
index 00000000..f3740716
--- /dev/null
+++ b/debian/uffd.cfg
@@ -0,0 +1,2 @@
+FLASK_ENV=production
+SQLALCHEMY_DATABASE_URI=sqlite:///var/lib/uffd/db.sqlite
diff --git a/debian/uffd.install b/debian/uffd.install
deleted file mode 100644
index f58a61a6..00000000
--- a/debian/uffd.install
+++ /dev/null
@@ -1,2 +0,0 @@
-uwsgi.ini		/etc/uwsgi/apps-available/uffd.ini
-nginx.include.conf	/etc/nginx/snippets/uffd-locations.conf
diff --git a/debian/uffd.links b/debian/uffd.links
deleted file mode 100644
index d9fac40f..00000000
--- a/debian/uffd.links
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/uffd/uffd/instance/config.py /etc/uffd/config.py
diff --git a/uwsgi.ini b/uwsgi.ini
index 1ccf819f..2fc06205 100644
--- a/uwsgi.ini
+++ b/uwsgi.ini
@@ -3,6 +3,7 @@ plugin = python3
 env = PYTHONIOENCODING=UTF-8
 env = LANG=en_GB.utf8
 env = TZ=Europe/Berlin
+env = CONFIG_FILENAME=/etc/uffd/uffd.cfg
 manage-script-name = true
 chdir = /usr/share/uffd
 module = uffd:create_app()
-- 
GitLab