add missing file
authorIan Kelling <iank@fsf.org>
Sat, 22 Jun 2024 03:34:11 +0000 (23:34 -0400)
committerIan Kelling <iank@fsf.org>
Sat, 22 Jun 2024 03:34:11 +0000 (23:34 -0400)
fai/config/distro-install-common/bash-misc-funcs [new file with mode: 0644]

diff --git a/fai/config/distro-install-common/bash-misc-funcs b/fai/config/distro-install-common/bash-misc-funcs
new file mode 100644 (file)
index 0000000..af8a6af
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to change
+# to a recommended GPL license.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+#     http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# update file.
+#
+# sets $ur aka "u result" to true if file modified or false if not.
+# updates $reload to true if file updated is in /etc/systemd/system
+#
+u() {
+  local tmp tmpdir dest="$1"
+  local base="${dest##*/}"
+  local dir="${dest%/*}"
+  if [[ $dir != "$base" ]]; then
+    # dest has a directory component
+    mkdir -p "$dir"
+  fi
+  # shellcheck disable=SC2034 # see comment at top of function
+  ur=false # u result
+  tmpdir="$(mktemp -d)"
+  cat >$tmpdir/"$base"
+  tmp=$(rsync -ic $tmpdir/"$base" "$dest")
+  if [[ $tmp ]]; then
+    printf "%s\n" "$tmp"
+    # shellcheck disable=SC2034 # intentional
+    ur=true
+    if [[ $dest == /etc/systemd/system/* ]]; then
+      # shellcheck disable=SC2034 # intentional
+      reload=true
+    fi
+  fi
+  rm -rf $tmpdir
+}