summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authordakataca2023-11-26 22:47:28 -0500
committerdakataca2023-11-26 22:47:28 -0500
commit85a9c51c4bc75cbb24b11862c01ea9fcdfd10d7d (patch)
tree1f8f751c6a02173bf9fc9ea3a25e7d540659043a
downloadaur-85a9c51c4bc75cbb24b11862c01ea9fcdfd10d7d.tar.gz
Commit initial
-rw-r--r--.SRCINFO17
-rw-r--r--PKGBUILD140
2 files changed, 157 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..0eefc7f22339
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,17 @@
+pkgbase = pgadmin4
+ pkgdesc = Most popular and feature rich Open Source administration and development platform for PostgreSQL
+ pkgver = 7.8
+ pkgrel = 1
+ url = https://www.pgadmin.org/
+ arch = x86_64
+ license = GPL3
+ makedepends = python-pip
+ makedepends = python-build
+ makedepends = python-installer
+ makedepends = python-wheel
+ makedepends = python-authlib
+ depends = postgresql
+ depends = translate-shell
+ depends = openbsd-netcat
+
+pkgname = pgadmin4
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..f4592056fe99
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,140 @@
+# Maintainer: dakataca <🐬danieldakataca@gmail.com>
+
+pkgname=pgadmin4
+_pkgname=${pkgname%[0-9]*}
+pkgver=7.8
+pkgrel=1
+pkgdesc='Most popular and feature rich Open Source administration and development platform for PostgreSQL'
+url='https://www.pgadmin.org/'
+arch=(x86_64)
+license=(GPL3)
+makedepends=('python-pip' 'python-build' 'python-installer' 'python-wheel' 'python-authlib')
+depends=('postgresql' 'translate-shell' 'openbsd-netcat')
+
+# Alistar ficheros en el directorio de instalación.
+package() {
+ # pgadmin configs.
+ install -o $USER -g $USER -dvm 755 "$pkgdir/var/lib/$_pkgname/"
+ install -o $USER -g $USER -dvm 755 "$pkgdir/var/log/$_pkgname/"
+ install -dvm 755 "$pkgdir/opt/venvs/"
+
+ # Existe /var/lib/postgres/?
+ if [ ! -d "/var/lib/postgres/" ]; then
+ install -o postgres -g postgres -dvm 755 "$pkgdir/var/lib/postgres/"
+ fi
+ cd $pkgdir/opt/venvs/
+ python3 -m venv $pkgname
+ source $pkgname/bin/activate
+ pip install $pkgname
+
+ # Script de ejecución pgadmin4.
+ install -Dvm755 <(cat <<'EOF'
+#!/usr/bin/env bash
+
+translate_str() {
+ local -r lang=${LANG%_[A-Z][A-Z].UTF-8}
+ local str=""
+ if [[ $lang == en ]]; then
+ str=$1
+ elif [[ $lang == es ]]; then
+ str=$2
+ else
+ str=`trans -b :$lang "$str"`
+ fi
+ echo "$str"
+}
+
+open_server() {
+ sleep 1
+ while ! nc -z 127.0.0.1 5050; do
+ sleep 1
+ done
+ [ $? -eq 0 ] && xdg-open http://127.0.0.1:5050
+}
+
+validate_postgres_password() {
+ declare -r command="$1" level="$2"
+
+ while true; do
+ # Solicitar la contraseña
+ translate_str "Enter the postgres user's password at the $level" \
+ "Ingrese la contraseña del usuario postgres a nivel de $level:"
+ bash -c "$command"
+
+ # Validar el éxito del comando anterior
+ if (( $? == 0 )); then
+ translate_str "Valid password. Continuing..." "Contraseña válida. Continuando..."
+ break
+ else
+ translate_str "Incorrect password. Please try again." "Contraseña incorrecta. Inténtelo de nuevo."
+ fi
+ done
+}
+
+# Comprobar si el usuario es root.
+if [ "$EUID" -ne 0 ]; then
+ declare -r data=/var/lib/postgres/data \
+ pg_hba=/var/lib/postgres/data/pg_hba.conf \
+ postgres_config=/var/lib/postgres/data/postgresql.conf
+
+ # Existe fichero de configuración base de datos postgres?
+ if ! sudo test -f "$pg_hba"; then
+
+ sudo -iu postgres initdb -D $data --data-checksums
+
+ # Sistema de ficheros es BTRFS?
+ [ `stat -f -c %T $data` == btrfs ] && sudo chattr +C $data
+
+ # Restricts access rights to the database superuser by default.
+ sudo grep -E 'local +all +all +trust' $pg_hba || sudo sed -Ei.back \
+ "s/(host +all +)all +([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3}\/[0-9]{,2} +)trust$/\1postgres\t\2peer/ ; \
+ s/(local +all +all +)trust$/\1scram-sha-256/" $pg_hba
+
+ sudo grep -E "^listen_addresses = 'localhost'*" $postgres_config || sudo sed -i.back \
+ "/^#password_encryption =*/ s/^#// ; \
+ /listen_addresses = 'localhost'/ s/^#//" $postgres_config
+
+ [[ `systemctl is-active --quiet postgresql.service` ]] && sudo systemctl restart postgresql.service || sudo systemctl start postgresql.service
+
+ # Contraseña de usuario postgres a nivel de Base de Datos postgresql.
+ validate_postgres_password "sudo -u postgres psql -c '\password'" "postgresql"
+
+ # Contraseña de usuario postgres a nivel de Base de Datos postgresql.
+ translate_str "User password \"postgres\" at the level of ArchLinux Operating System:" "Contraseña de usuario \"postgres\" a nivel de Sistema Operativo ArchLinux:"
+
+ # Contraseña de usuario postgres a nivel de Sistema Operativo Linux.
+ validate_postgres_password "sudo passwd postgres" "S.O Archlinux"
+ fi
+
+ # Servicio postgresql.service está activo?
+ [[ `systemctl is-active --quiet postgresql.service` ]] && sudo systemctl restart postgresql.service || sudo systemctl start postgresql.service
+
+ # Activar entorno virtual pgadmin4.
+ source /opt/venvs/pgadmin4/bin/activate
+ open_server &
+ #[ $? -eq 0 ] && xdg-open http://127.0.0.1:5050
+ pgadmin4
+else
+ translate_str "Error: You can't perform this operation as a superuser."\
+ "Error: No puede realizar esta operación siendo superusuario."
+fi
+EOF
+) $pkgdir/usr/bin/$pkgname
+cd -
+}
+
+## References:
+# Support: pgadmin-support@lists.postgresql.org
+# Website: https://www.pgadmin.org/
+# Tracker: https://github.com/pgadmin-org/pgadmin4/issues https://www.pgadmin.org/
+
+## Test:
+# updpkgsums
+# makepkg --printsrcinfo > .SRCINFO
+
+## Clean:
+# sudo pacman -Rnsc pgadmin4 --noconfirm
+# sudo rm -rf /var/lib/p{ostgres,gadmin}/
+# git clean -dfx
+
+# 👤 Autor: https://t.me/dakataca 💻 🐬 #