# 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 archive= local changes= local size= local file= local pkg= local binver= local arch= local plat= local component= local source_l= local pool_dir= local pool_dist_db= local feed= archive='archive' 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}" component='main' source_l="$(printf '%s\n' "${cmd_include_source}" | \ sed 's/\(.\).*/\1/')" pool_dir="pool/${component}/${source_l}/${cmd_include_source}" pool_dist_db="${archive}/${pool_dir}/.db" pool_dist_db="${pool_dist_db}/${cmd_include_distribution}" mkdir -p "${pool_dist_db}" printf '%s\n' "${cmd_include_version}" \ >"${pool_dist_db}/version" printf '%s\n' "${pool_dir}/${file}" \ >>"${pool_dist_db}/files" cp -p "$(dirname "${changes}")/${file}" \ "${archive}/${pool_dir}/${file}" feed="${conf_incoming_channel}/${cmd_include_distribution}" feed="${feed}/${component}/${plat}/${arch}" mkdir -p "${archive}/dists/${feed}/.db/" printf '%s\n' "${plat}/${arch}" \ >>"${pool_dist_db}/feeds" tar -xzOf "${archive}/${pool_dir}/${file}" 'control.tar.gz' | \ tar -xzO './control' \ >"${archive}/dists/${feed}/.db/${pkg}.control" printf 'Filename: %s\nSize: %s\nMD5sum: %s\n' \ "../../../../../../${pool_dir}/${file}" "${size}" \ "$(md5sum "$(dirname "${changes}")/${file}" | \ sed 's/ .*$//')" \ >>"${archive}/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 }