#! /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 . 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 for file in ${pattern}; do # Ensure that the full directory path of the pattern exists in the # package staging area. dir=$(dirname ${file}) mkdir -p ${1}.data/${dir} || exit 1 # Move any matching files from the installation destination to the # package staging area. mv dest/${file} ${1}.data/${dir} || exit 1 done done < ../${1}.pkg/install shift done # Reset the IFS. IFS="${OLDIFS}"