#!/bin/bash readonly OUT_DIR=$1 readonly IMG_NAME=$2 readonly PKGLIST=$(readlink -f $3 2> /dev/null || true) readonly OUT_DIRNAME=$(basename ${OUT_DIR} 2> /dev/null || true) readonly THIS_DIR=$(readlink -f "$(dirname $0)") # if an optional .torrent file is desired, see ./TORRENT_METADATA.sample source "${THIS_DIR}/TORRENT_METADATA" 2> /dev/null || true which mktorrent &> /dev/null && readonly HAS_MKTORRENT=1 || readonly HAS_MKTORRENT=0 which rhash &> /dev/null && readonly HAS_RHASH=1 || readonly HAS_RHASH=0 [[ -n "${TORRENT_ANNOUNCE_URL}" ]] && readonly SHOULD_MKTORRENT=${HAS_MKTORRENT} || \ readonly SHOULD_MKTORRENT=0 [[ -n "${ISOS_URL}" ]] && readonly SIG_URL=${ISOS_URL}/${OUT_DIRNAME}/${IMG_NAME}.sig [[ -n "${ISOS_URL}" ]] && readonly SIGURL_MSG="GPG signature is expected to be at: ${SIG_URL}" readonly ISO_HOST_PATH=$(echo "${OUT_DIRNAME}/${IMG_NAME}" | sed 's|\s|%20|') readonly WEBSEEDS_CSV=$(echo $urls | sed -E "s|([^ ]+)|\1${ISO_HOST_PATH}|g" | tr ' ' ',') readonly SHA512SUMS_SUCCESS_MSG="\t=> SHA512SUMS appended" readonly WHIIRLPOOLSUMS_SUCCESS_MSG="\t=> WHIRLPOOLSUMS appended" readonly MAGNET_SUCCESS_MSG="\t=> ${IMG_NAME}.magnet saved" readonly TORRENT_SUCCESS_MSG="\t=> ${IMG_NAME}.torrent saved\n${SIGURL_MSG}" readonly PKGLIST_SUCCESS_MSG="\t=> copied $(basename ${PKGLIST} 2> /dev/null)" MakeMetadata() { # copy package lists and create checksums and optional torrent file rhash --sha512 "${IMG_NAME}" >> SHA512SUMS && echo -e ${SHA512SUMS_SUCCESS_MSG} rhash --whirlpool "${IMG_NAME}" >> WHIRLPOOLSUMS && echo -e ${WHIIRLPOOLSUMS_SUCCESS_MSG} rhash --magnet "${IMG_NAME}" > "${IMG_NAME}.magnet" && echo -e ${MAGNET_SUCCESS_MSG} (( ${SHOULD_MKTORRENT} )) && MakeTorrent && echo -e ${TORRENT_SUCCESS_MSG} [[ -f "${PKGLIST}" ]] && cp ${PKGLIST} . && echo -e ${PKGLIST_SUCCESS_MSG} sort SHA512SUMS --key=2 --output=SHA512SUMS sort WHIRLPOOLSUMS --key=2 --output=WHIRLPOOLSUMS } MakeTorrent() { # create torrent file mktorrent --announce=${TORRENT_ANNOUNCE_URL} \ --comment="${TORRENT_COMMENT}${SIG_URL}" \ $([[ -n "${WEBSEEDS_CSV}" ]] && echo "--web-seed=${WEBSEEDS_CSV}") \ --piece-length=20 --no-date --verbose \ "${IMG_NAME}" } if ! (( ${HAS_RHASH} )) then echo "[mkmetadata]: rhash is not installed - metadata files will not be created" elif [[ -d "${OUT_DIR}" ]] && [[ -f "${OUT_DIR}/${IMG_NAME}" ]] then echo "[mkmetadata]: creating metadata files" pushd ${OUT_DIR} > /dev/null MakeMetadata popd > /dev/null fi