#!/bin/bash # parameters and default values ARCH='i686' DESC='i686 only' OUTPUT_DIR="${HOME}/archisos" DATE=$(date +%Y.%m.%d) ISO="archlinux32-${DATE}-${ARCH}.iso" mirror_dir='/mnt/archlinux32' website_dir='/usr/src/archlinux32/archweb32' # fail on first error set -e base_dir=$( readlink -e "${0%/*}" ) usage() { >&2 echo '' >&2 echo 'update-website: update download, torrent, magnet links on' >&2 echo ' the Arch32 website' >&2 echo '' >&2 echo 'possible options:' >&2 echo ' -h|--help: Show this help and exit.' >&2 echo ' --magnet-i686 $link:' >&2 echo ' Set archiso-i686 magnet link to $link.' >&2 echo ' --magnet-dual $link:' >&2 echo ' Set archiso-dual magnet link to $link.' >&2 echo ' --torrent-seed-i686 $link:' >&2 echo ' Set archiso-i686 torrent link to $link.' >&2 echo ' --torrent-seed-dual $link:' >&2 echo ' Set archiso-dual torrent link to $link.' >&2 echo ' --website-dir $dir:' >&2 echo ' Set website-dir to $dir.' >&2 echo ' --mirror-dir $dir:' >&2 echo ' Set mirror-dir to $dir.' >&2 echo ' --update-mirrors:' >&2 echo ' regenerate mirror list and country flags.' >&2 echo ' --update-iso update information about ISO, too.' >&2 echo " --iso name of ISO to be checked, default is '${ISO}'." >&2 echo " --output-dir where to write the isos, default is '${OUTPUT_DIR}." >&2 echo " --arch architecture of the ISO to update, default '$ARCH'." >&2 echo " --desc description of the ISO to update, default '$DESC'." [ -z "$1" ] && exit 1 || exit "$1" } eval set -- "$( getopt -o h \ --long help \ --long magnet-i686: \ --long magnet-dual: \ --long torrent-seed-i686: \ --long torrent-seed-dual: \ --long mirror-dir: \ --long website-dir: \ --long update-mirrors \ --long update-iso \ --long iso: \ --long arch: \ --long desc: \ -n "$(basename "$0")" -- "$@" || \ echo usage )" # cleanup hook tmp_dir="$(mktemp -d)" cleanup() { if mountpoint -q "${tmp_dir}"; then sudo umount "${tmp_dir}" fi rm -rf --one-file-system "${tmp_dir}" } trap cleanup EXIT arch="${ARCH}" desc="${DESC}" iso="${ISO}" while [ $# -gt 0 ]; do case "$1" in '--magnet-i686') if [ -s "${tmp_dir}/magnet.i686" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift echo "$1" | \ tr -d '\n' > \ "${tmp_dir}/magnet.i686" ;; '--magnet-dual') if [ -s "${tmp_dir}/magnet.dual" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift echo "$1" | \ tr -d '\n' > \ "${tmp_dir}/magnet.dual" ;; '--torrent-seed-i686') if [ -s "${tmp_dir}/torrent-seed.i686" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift echo "$1" | \ tr -d '\n' > \ "${tmp_dir}/torrent-seed.i686" ;; '--torrent-seed-dual') if [ -s "${tmp_dir}/torrent-seed.dual" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift echo "$1" | \ tr -d '\n' > \ "${tmp_dir}/torrent-seed.dual" ;; '--mirror-dir') if [ -s "${tmp_dir}/mirror_dir.set" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift mirror_dir="$1" echo "$mirror_dir" > "${tmp_dir}/mirror_dir.set" ;; '--website-dir') if [ -s "${tmp_dir}/website_dir.set" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi shift website_dir="$1" echo "$website_dir" > "${tmp_dir}/website_dir.set" ;; '--update-mirrors') if [ -s "${tmp_dir}/update_mirrors.set" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi echo "true" > "${tmp_dir}/update_mirrors.set" ;; '--update-iso') if [ -s "${tmp_dir}/update_iso.set" ]; then printf 'Option %s given multiple times.\n' "$1" usage fi echo "true" > "${tmp_dir}/update_iso.set" ;; '--iso') shift iso="$1" ;; '--arch') shift arch="$1" ;; '--desc') shift desc="$1" ;; '--help'|'-h') usage 0 ;; '--') shift break ;; *) >&2 printf 'Whoops, option "%s" is not yet implemented!\n' "$1" exit 42 ;; esac shift done if [ $# -gt 0 ]; then >&2 echo 'Too many arguments.' exit 2 fi # generate list of download mirrors if [ -s "${tmp_dir}/update_mirrors.set" ]; then ( printf '