chiark / gitweb /
ubuntu-daily: new script, cobbled together from bits and pieces of other scripts
authorColin Watson <cjwatson@chiark.greenend.org.uk>
Thu, 9 Sep 2010 17:22:34 +0000 (18:22 +0100)
committerColin Watson <cjwatson@chiark.greenend.org.uk>
Thu, 9 Sep 2010 17:22:34 +0000 (18:22 +0100)
ubuntu-daily [new file with mode: 0755]

diff --git a/ubuntu-daily b/ubuntu-daily
new file mode 100755 (executable)
index 0000000..d114322
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/sh
+
+PROJECT=
+CURRENT_DIST=maverick
+DIST="$CURRENT_DIST"
+BASE=antimony:cdimage/www/full
+RSYNC=false
+
+usage () {
+       cat <<EOF
+Usage: $0 [options] image_type architecture
+
+Options:
+  -f|--flavour FLAVOUR         Flavour (default: ubuntu).
+  -d|--dist DIST               Distribution (default: maverick).
+  -a|--anonymous               Don't use privileged access.
+  -r|--rsync                   Force rsync.
+EOF
+}
+
+eval set -- "$(getopt -o f:d:ar -l help,flavour:,dist:,anonymous,rsync -- "$@")" || { usage >&2; exit 2; }
+while :; do
+       case $1 in
+               --help)
+                       usage
+                       exit 0
+                       ;;
+               -f|--flavour)
+                       PROJECT="$2"
+                       if [ "$PROJECT" = ubuntu ]; then
+                               PROJECT=
+                       fi
+                       shift 2
+                       ;;
+               -d|--dist)
+                       DIST="$2"
+                       shift 2
+                       ;;
+               -a|--anonymous)
+                       BASE=cdimage.ubuntu.com::cdimage
+                       shift
+                       ;;
+               -r|--rsync)
+                       RSYNC=:
+                       shift
+                       ;;
+               --)     shift; break ;;
+               *)      usage >&2; exit 2;
+       esac
+done
+
+case $2 in
+       hppa*|ia64*|lpia*|powerpc*|sparc*)
+               PREFIX=ports/
+               ;;
+       *)
+               PREFIX=
+               ;;
+esac
+if [ "$DIST" != "$CURRENT_DIST" ]; then
+       PREFIX="$DIST/$PREFIX"
+fi
+case $1 in
+       server)
+               PREFIX="ubuntu-server/$PREFIX"
+               ;;
+       jeos)
+               PREFIX="jeos/$PREFIX"
+               ;;
+       mid)
+               PREFIX="ubuntu-mid/$PREFIX"
+               ;;
+esac
+case $1 in
+       live|desktop|mid)
+               IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}daily-live}
+               ;;
+       dvd)
+               IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}dvd}
+               ;;
+       *)
+               IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}daily}
+               ;;
+esac
+case $1 in
+       mid)
+               EXTENSION=img
+               ;;
+       *)
+               EXTENSION=iso
+               ;;
+esac
+
+case $1 in
+       install|alternate|server|addon|serveraddon|dvd) ;;
+       *)
+               RSYNC=:
+               ;;
+esac
+
+LOCAL="./${PROJECT:+$PROJECT-}$DIST-$1-$2"
+REMOTE="$BASE/${PROJECT:+$PROJECT/}$IMAGE_TYPE/current/$DIST-$1-$2"
+
+if $RSYNC; then
+       ionice -c2 -n7 rsync -avP "$REMOTE.$EXTENSION" "$LOCAL.$EXTENSION"
+else
+       rsync -avP "$REMOTE.jigdo" "$LOCAL.jigdo"
+       if [ "$PROJECT" ]; then
+               sed -i "s/=$DIST-$1-$2/=$PROJECT-$DIST-$1-$2/g" "$LOCAL.jigdo"
+       fi
+       rsync -avP "$REMOTE.template" "$LOCAL.template"
+       EXISTING=false
+       if [ -e "$LOCAL.iso" ]; then
+               EXISTING=:
+               mv "$LOCAL.iso" "$LOCAL.iso.old"
+               mkdir -p "old-$2"
+               sudo mount -o loop "$LOCAL.iso.old" "old-$2"
+       fi
+       ionice -c2 -n7 jigdo-lite "$LOCAL.jigdo"
+       if $EXISTING; then
+               sudo umount "old-$2" || true
+               rm -f "$LOCAL.iso.old"
+       fi
+fi