# pro-archman # lib/cmd/include.sh # "include" command # # Copyright (C) 2013 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 . use control CMD_INCLUDE_CHANGES_FIELDS='Format Source Binary Version Architecture Platform Distribution Maintainer Changed-By Date Description Changes Files' cmd_include_source= cmd_include_version= cmd_include_distribution= cmd_include_files= cmd_include_main() { local changes= local size= local file= local pkg= local binver= local arch= local plat= local feed= local filename= for changes in "${@}"; do parse_control "${changes}" cmd_include_changes_field \ "${CMD_INCLUDE_CHANGES_FIELDS}" '' done printf 'Including %s (%s) into %s:\n' "${cmd_include_source}" \ "${cmd_include_version}" "${cmd_include_distribution}" while read -r size file; do if [ "x$(echo ${file})" = 'x' ]; then continue fi IFS='_' read -r pkg binver arch plat <<-EOF ${file%.opk} EOF printf ' %s:\n' "${file}" printf ' Package: %s\n' "${pkg}" printf ' Version: %s\n' "${binver}" printf ' Architecture: %s\n' "${arch}" printf ' Platform: %s\n' "${plat}" printf ' Size: %s\n' "${size}" feed="${conf_incoming_channel}/${cmd_include_distribution}" feed="${feed}/main/${plat}/${arch}" mkdir -p "dists/${feed}/.db/" tar -xzOf "$(dirname "${changes}")/${file}" 'control.tar.gz' | \ tar -xzO './control' >"dists/${feed}/.db/${pkg}.control" filename="../../../../../pool/main/$(printf '%s\n' \ "${cmd_include_source}" | \ sed 's/\(.\).*/\1/')/${cmd_include_source}/${file}" printf 'Filename: %s\nSize: %s\nMD5sum: %s\n' \ "${filename}" "${size}" \ "$(md5sum "$(dirname "${changes}")/${file}" | \ sed 's/ .*$//')" \ >>"dists/${feed}/.db/${pkg}.control" done <<-EOF ${cmd_include_files} EOF } cmd_include_changes_field() { local name="${1}" local value="${2}" case "${name}" in 'Source') cmd_include_source="${value}" ;; 'Version') cmd_include_version="${value}" ;; 'Distribution') cmd_include_distribution="${value}" ;; 'Files') cmd_include_files="${value}" ;; esac }