5
error() { echo "$@" 1>&2; }
6
log() { error "$(date): ====== $1 ======" ; }
7
fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
9
[ -n "${TMPD}" -a -d "${TMPD}" ] || return 0;
10
echo "cleaning up ${TMPD}"
13
bad_Usage() { Usage 1>&2; [ $# -eq 0 ] || error "$@"; exit 1; }
16
Usage: ${0##*/} [ options ] tarfile bucket [arch]
18
register a UEC tarball (ie, per http://uec-images.ubuntu.com)
19
if arch is not provided, a name-based attempt is made to guess
22
-k | --kernel k use previously registered kernel with id 'k'
23
specify 'none' for no kernel
24
-K | --kernel-file f bundle, upload, use file 'f' as kernel
25
-r | --ramdisk r use previously registered ramdisk with id 'r'
26
specify 'none' for no ramdisk
27
-R | --ramdisk-file f bundle, upload, use file 'f' as ramdisk
30
- ${0##*/} lucid-uec-i386.tar.gz my-lucid-bucket i386
36
out=$(uec-publish-image "${@}") || return
42
short_opts="hk:K:r:R:"
43
long_opts="help,kernel:,kernel-file:,ramdisk:,ramdisk-file:"
44
getopt_out=$(getopt --name "${0##*/}" --shell sh \
45
--options "${short_opts}" --long "${long_opts}" -- "$@") &&
46
eval set -- "${getopt_out}" ||
56
while [ $# -ne 0 ]; do
60
-h|--help) Usage; exit 0;;
61
-k|--kernel) eki=${next}; shift;;
63
[ -f "${next}" ] && kernel=$(readlink -f "${next}") ||
64
fail "failed to get path to ${next}"
66
-r|--ramdisk) eri=${next}; shift;;
68
[ -f "${next}" ] && ramdisk=$(readlink -f "${next}") ||
69
fail "failed to get path to ${next}"
79
[ $# -eq 3 -o $# -eq 2 ] || bad_Usage
81
if [ -z "${arch}" ]; then
84
*amd64*|*x86_64*) arch=amd64;;
85
*) fail "unable to guess arch by tarball name. give 3rd arg";;
89
[ $arch = "amd64" ] && iarch=x86_64 || iarch=i386
91
[ -f "${tarball}" ] && tbf=$(readlink -f "${tarball}") ||
92
fail "bad tarball: ${tarball}";
94
TMPD=$(mktemp -d ${TEMPDIR:-/tmp}/${0##*/}.XXXXXX) || fail "failed make temp"
101
log "extracting image"
102
tar -S -xzf "${tbf}" || fail "failed extract ${tarball}"
107
[ -z "${kernel}" -a -z "${eki}" ] && kernel=${x};;
109
[ -z "${ramdisk}" -a -z "${eri}" ] && ramdisk=${x};;
114
[ -z "${image}" ] && fail "can't find image";
115
[ -n "${kernel}" -o -n "${eki}" ] ||
116
bad_Usage "can't find kernel. specify '--kernel none' to register none";
117
[ -n "${ramdisk}" -o -n "${eri}" ] || {
118
error "Warning: no ramdisk found, assuming '--ramdisk none'"
122
error "kernel : ${eki:-${kernel}}"
123
error "ramdisk: ${eri:-${ramdisk}}"
124
error "image : ${image##*/}"
126
tmp_rd=${TMPD}/tmp-ramdisk
127
tmp_kn=${TMPD}/tmp-kernel
128
tmp_im=${TMPD}/tmp-image
130
mkdir ${tmp_rd} ${tmp_kn} ${tmp_im}
132
if [ -n "${kernel}" ]; then
133
log "bundle/upload kernel"
134
upload_register --type kernel "${iarch}" "${kernel}" "${bucket}" ||
135
fail "failed to upload kernel"
139
if [ -n "${ramdisk}" ]; then
140
log "bundle/upload ramdisk"
141
upload_register --type ramdisk "${iarch}" "${ramdisk}" "${bucket}" ||
142
fail "failed ramdisk bundle/upload"
146
upload_register --type image "${iarch}" "${image}" "${bucket}" \
147
--kernel "${eki}" --ramdisk "${eri}" ||
148
fail "failed bundle/upload/register of image"
152
printf 'emi="%s"; eri="%s"; eki="%s";\n' "${emi}" "${eri}" "${eki}"