summaryrefslogtreecommitdiffstats
path: root/src/oh-installfiles.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/oh-installfiles.sh')
-rw-r--r--src/oh-installfiles.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/oh-installfiles.sh b/src/oh-installfiles.sh
new file mode 100644
index 0000000..ca52025
--- /dev/null
+++ b/src/oh-installfiles.sh
@@ -0,0 +1,59 @@
+#! /bin/sh
+#
+# opkhelper
+# src/oh-installfiles
+# Install files into a binary package staging area.
+#
+# Copyright (C) 2012 Patrick "P. J." McDermott
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+print_usage()
+{
+ printf 'Usage: %s pkgname...\n' "$1"
+}
+
+if [ ${#} -eq 0 ]; then
+ print_usage ${0} >&2
+ exit 1
+fi
+
+# Set the IFS to just the linebreak character to make the 'read' utility output
+# entire lines.
+OLDIFS="${IFS}"
+IFS='
+'
+
+# Iterate over packages.
+while [ ${#} -gt 0 ]; do
+ printf 'oh-installfiles: Installing files for package "%s"...\n' "${1}"
+
+ mkdir ${1}.data || exit 1
+ chmod 755 ${1}.data || exit 1
+
+ # Loop over lines in the 'install' file.
+ while read -r pattern; do
+ # Ensure that the full directory path of the pattern exists in the
+ # package staging area.
+ pattern_dir=$(dirname ${pattern})
+ mkdir -p ${1}.data/${pattern_dir} || exit 1
+ # Move any matching files from the installation destination to the
+ # package staging area.
+ mv dest/${pattern} ${1}.data/${pattern_dir} || exit 1
+ done < ../${1}.pkg/install
+ shift
+done
+
+# Reset the IFS.
+IFS="${OLDIFS}"