diff options
author | Dan McGee <dan@archlinux.org> | 2011-08-10 08:05:12 -0500 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-08-10 15:23:00 +0200 |
commit | 6ae2bc514f61d3e56d008cd1901d91bdbc6752d2 (patch) | |
tree | 1af7b7f65c50ba8bbe5c69a4dba6619f77177fa9 | |
parent | 9a79d2105e2dea9876883da65a00d245d475bed2 (diff) |
Add a upload directory transform script
This goes with the previous patch that moves uploads into segmented
subdirectories. To actually run, follow the DRYRUN instructions.
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rwxr-xr-x | scripts/uploadbuckets.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/scripts/uploadbuckets.sh b/scripts/uploadbuckets.sh new file mode 100755 index 0000000..3252692 --- /dev/null +++ b/scripts/uploadbuckets.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +DRYRUN=${DRYRUN:-1} + +source="$1" +dest="$2" + +if [[ -z $source || -z $dest ]]; then + echo 'usage: uploadbuckets.sh <source> <dest>' + echo 'Script runs in DRYRUN mode by default.' + echo 'To run for real, set DRYRUN=0 in your environment.' + exit 1 +fi + +if [[ ! -d $source ]]; then + echo 'error: source is not a directory' + exit 1 +fi + +if [[ -e $dest && ! -d $dest ]]; then + echo 'error: dest is not a directory' + exit 1 +fi + +if [[ $(readlink -e $dest) = $(readlink -e $source) ]]; then + echo 'error: source and dest cannot be the same. Rotate the result' + echo 'into place once the migration is complete.' + exit 1 +fi + +if [[ ! -d $dest ]]; then + mkdir $dest +fi + +shopt -s nullglob + +for package in "$source"/*; do + pkgname="${package##*/}" + newfolder="$dest/${pkgname:0:2}" + if [[ ! -d "$newfolder" ]]; then + if [[ $DRYRUN -gt 0 ]]; then + echo mkdir -p "$newfolder" + else + mkdir -p "$newfolder" + fi + fi + if [[ $DRYRUN -gt 0 ]]; then + echo mv "$source/$pkgname" "$newfolder/$pkgname" + else + mv "$source/$pkgname" "$newfolder/$pkgname" + fi +done + +if [[ $DRYRUN -gt 0 ]]; then + echo + echo 'DRYRUN mode was enabled.' + echo 'To run for real, set DRYRUN=0 in your environment.' +fi |