[X2Go-Commits] [x2goclient] 12/19: debian/: new file "proprocess.sh".

git-admin at x2go.org git-admin at x2go.org
Wed May 12 19:28:23 CEST 2021


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goclient.

commit 1deec946d645fddfa6ba838dfb86ca47516d0460
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Fri May 7 09:01:27 2021 +0200

    debian/: new file "proprocess.sh".
    
    Used to apply replacement tokens and run our new preprocessor.
---
 debian/changelog     |  2 ++
 debian/preprocess.sh | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index d2dcc19..1b2ec99 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -62,6 +62,8 @@ x2goclient (4.1.2.3-0x2go1) UNRELEASED; urgency=medium
       Mike's changes.
     + New file "preprocessor.pl". Simple text file preprocessor supporting
       basic condition logic.
+    + New file "proprocess.sh". Used to apply replacement tokens and run our
+      new preprocessor.
 
   [ Mike Gabriel ]
   * New upstream version (4.1.2.3):
diff --git a/debian/preprocess.sh b/debian/preprocess.sh
new file mode 100755
index 0000000..b1cde04
--- /dev/null
+++ b/debian/preprocess.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+set -e
+
+typeset tmpfile="$('printf' 'mkstemp(template)\n' | 'm4' '-D' "template=${TMPDIR:-/tmp}/preprocTMPXXXXXXXXXXXXXXXX")"
+
+function cleanup () {
+  if [ -n "${tmpfile}" ] && [ -f "${tmpfile}" ]; then
+    'rm' '-fv' "${tmpfile}" >&'2'
+  fi
+}
+
+trap 'cleanup' 'EXIT' '6' 'BUS' 'ILL' 'KILL' 'QUIT' 'TERM' 'INT' 'PIPE' 'ALRM' 'USR1' 'USR2'
+
+function replace_kv () {
+  typeset key="${1:?'No key passed to replace_kv (), this is illegal.'}"
+  typeset value="${2:?'No value passed to replace_kv (), this is illegal.'}"
+
+  'sed' '-i' '-e' "s#@@${key}@@#${value}#g" "${tmpfile}"
+}
+
+function main () {
+  typeset in_file="${1:?'No input file passed to main (), this is illegal.'}"
+  typeset out_file="${in_file%'.in'}"
+
+  shift
+
+  # Check if temporary file is set up correctly.
+  if [ -z "${tmpfile}" ]; then
+    printf 'No temporary file to write to available, erroring out.\n' >&'2'
+    return '1'
+  fi
+
+  if ! [ -f "${tmpfile}" ]; then
+    printf 'Temporary file to write to "%s" not a regular file, erorring out.\n' "${tmpfile}" >&'2'
+    return '2'
+  fi
+
+  # Check if in_file ends on ".in".
+  if [ "${in_file}" = "${out_file}" ]; then
+    printf 'Input file "%s" does not end in ".in", this is unsupported.\n' "${in_file}" >&'2'
+    return '3'
+  fi
+
+  # Key-value pair arguments handling.
+  if [ '1' -gt "${#}" ]; then
+    printf 'At least one key-value pair must be provided.\n' >&'2'
+    return '4'
+  fi
+
+  # Copy file contents to temporary file.
+  'cp' "${in_file}" "${tmpfile}"
+
+  typeset kv_i=''
+  for kv_i in "${@}"; do
+    typeset key="${kv_i%%'='*}"
+    typeset value="${kv_i#*'='}"
+
+    if [ -z "${key}" ]; then
+      printf 'Key-value pair "%s" is invalid since it contains no key.\n' "${kv_i}" >&'2'
+      return '5'
+    fi
+
+    'replace_kv' "${key}" "${value}"
+  done
+
+  # Now that all key-value pairs have been replaced, run the real
+  # preprocessor.
+  # We'll assume that cwd is the top source directory. Any other method, like
+  # autodetection, would be difficult to pull off portably.
+  'debian/preprocessor.pl' "${tmpfile}"
+
+  # And, eventually, replace the actual file.
+  'cp' "${tmpfile}" "${out_file}"
+}
+
+'main' "${@}"

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git


More information about the x2go-commits mailing list