aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Vigier <boklm@mageia.org>2011-10-19 23:41:06 +0000
committerNicolas Vigier <boklm@mageia.org>2011-10-19 23:41:06 +0000
commitf721498c97f291f128f336e038dcb5c9df1419d0 (patch)
tree58c75a1f4ae0cd1e2839649416c0bbd810f4e0ec
parentb7da855ab53225b529e0be5307adbd4fe833bd6c (diff)
downloadrepoctl-f721498c97f291f128f336e038dcb5c9df1419d0.tar
repoctl-f721498c97f291f128f336e038dcb5c9df1419d0.tar.gz
repoctl-f721498c97f291f128f336e038dcb5c9df1419d0.tar.bz2
repoctl-f721498c97f291f128f336e038dcb5c9df1419d0.tar.xz
repoctl-f721498c97f291f128f336e038dcb5c9df1419d0.zip
add repoctl script
-rwxr-xr-xrepoctl129
1 files changed, 129 insertions, 0 deletions
diff --git a/repoctl b/repoctl
new file mode 100755
index 0000000..f527f24
--- /dev/null
+++ b/repoctl
@@ -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
+