diff options
-rwxr-xr-x | repoctl | 129 |
1 files changed, 129 insertions, 0 deletions
@@ -0,0 +1,129 @@ +#!/bin/bash + +. ./functions + +function usage_cmd() +{ + case "$1" in + mvpkg) + cat <<EOF +Usage: repoctl mvpkg [options] --srcrepo distribution:section:sectionrepo \ + --dstrepo distribution:section:sectionrepo \ + --srcpkg|--binpkg name + +Options: + --dry-run : don't do anything, but show what would have been done. + --no-genhdlists : don't regenerate hdlists + --srcpkg name : name of a source package. All the binary packages + generated by this source package will also be moved. + --binpkg name : name of a binary package. + +Example : + Move emacs packages from 1/core/updates_testing to 1/core/updates : + repoctl mvpkg --srcrepo 1:core:updates_testing --dstrepo 1:core:updates \ + --srcpkg emacs +EOF + ;; + esac +} + +function mvpkg() +{ + args=$(getopt -o hn -l srcrepo:,dstrepo:,dry-run,help,no-genhdlists,no-mirror,srcpkg:,binpkg: -- "$@") + [ $? -ne 0 ] && usage_cmd mvpkg && exit 1 + eval set -- "$args" + [ $# -lt 1 ] && exit 1 + while [ $# -gt 0 ] + do + case $1 in + -h|--help) + usage_cmd mvpkg + exit 0 + ;; + -n|--dry-run) + dryrun=echo + shift;; + --no-genhdlists) + nogenhdlists=1 + shift;; + --no-mirror) + nomirror=1 + shift;; + --srcrepo) + IFS=':' read -ra srcrepo <<< "$2" + shift;shift;; + --dstrepo) + IFS=':' read -ra dstrepo <<< "$2" + shift;shift;; + --srcpkg) + srcpkg="$2" + shift;shift;; + --binpkg) + binpkg="$2" + shift;shift;; + --) + shift;break;; + -*) + usage + exit 1 + ;; + *) + break + ;; + esac + done + if [ -z "$srcrepo" -o -z "$dstrepo" -o \( -z "$srcpkg" -a -z "$binpkg" \) ] + then + usage + exit 1 + fi + if [ -n "$srcpkg" ] + then + move_pkg "${srcrepo[0]}" "${srcrepo[1]}" "${srcrepo[2]}" \ + "${dstrepo[0]}" "${dstrepo[1]}" "${dstrepo[2]}" \ + "$srcpkg" "/dev/stdout" + if [ -z "$nogenhdlists" ] + then + update_hdlists "${srcrepo[0]}" "${srcrepo[1]}" "${srcrepo[2]}" + update_hdlists "${dstrepo[0]}" "${dstrepo[1]}" "${dstrepo[2]}" + if [ -z "$nomirror" ] + then + mirror_repository "${srcrepo[0]}" + [ "${srcrepo[0]}" != "${dstrepo[0]}" ] && + mirror_repository "${dstrepo[0]}" + fi + fi + else + echo "The --binpkg option is not supported yet" + fi +} + +function usage() +{ + cat <<EOF + Usage: repoctl COMMAND [COMMAND ARGUMENTS] + + Useful commands : + mvpkg + lnpkg + rmpkg + genhdlists + mirror + + For more infos about a command, use : + repoctl COMMAND --help + +EOF +} + +case "$1" in + mvpkg) + shift + mvpkg $@ + ;; + *) + usage + exit 1 + ;; +esac + |