#!@@SHELL@@ # # 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 . . @@LIBDIR@@/opkhelper/messages 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 oh_info 'Installing files for package "%s"...' "${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 dest/${pattern}; do # Ensure that the full directory path of the pattern exists in the # package staging area. dir=$(dirname ${file#dest/}) mkdir -p ${1}.data/${dir} || exit 1 # Move any matching files from the installation destination to the # package staging area. mv ${file} ${1}.data/${dir} || exit 1 done done < ../${1}.pkg/install shift done # TODO: This should be part of some kind of warnings/lint framework/script and # allow the user to drop to a debug shell before cleanup. if [ "$(find dest -type f | wc -l)" -gt 0 ]; then oh_warn 'Files remain in installation directory' fi # Reset the IFS. IFS="${OLDIFS}"