#!/bin/bash set -e if [[ $# -lt 2 ]]; then echo "Missing arguments" exit -1 fi RELEASE_DIR="$(realpath "$1")" shift mkdir -p "$RELEASE_DIR" rm -rf repack_dir mkdir repack_dir trap "rm -rf repack_dir" EXIT while [[ $# -gt 0 ]]; do INPUT="$1" shift ( set -e REPACK_DIR="repack_dir/$BASHPID" rm -rf "$REPACK_DIR" mkdir "$REPACK_DIR" if [[ $INPUT == *.zip ]]; then unzip "$INPUT" -d "$REPACK_DIR" elif [[ $INPUT == *.tar.xz ]]; then tar xvaf "$INPUT" -C "$REPACK_DIR" else echo "Unknown input file type: $INPUT" exit 1 fi cd "$REPACK_DIR" INAME="$(echo ffmpeg-*)" TAGNAME="$(cut -d- -f2 <<<"$INAME")" if [[ $TAGNAME == N ]]; then TAGNAME="master" elif [[ $TAGNAME == n* ]]; then TAGNAME="$(sed -re 's/([0-9]+\.[0-9]+).*/\1/' <<<"$TAGNAME")" fi if [[ "$INAME" =~ -[0-9]+-g ]]; then ONAME="ffmpeg-$TAGNAME-latest-$(cut -d- -f5- <<<"$INAME")" else ONAME="ffmpeg-$TAGNAME-latest-$(cut -d- -f3- <<<"$INAME")" fi mv "$INAME" "$ONAME" if [[ $INPUT == *.zip ]]; then zip -9 -r "$RELEASE_DIR/$ONAME.zip" "$ONAME" elif [[ $INPUT == *.tar.xz ]]; then tar cvJf "$RELEASE_DIR/$ONAME.tar.xz" "$ONAME" fi rm -rf "$REPACK_DIR" ) & while [[ $(jobs | wc -l) -gt 3 ]]; do wait %1 done done while [[ $(jobs | wc -l) -gt 0 ]]; do wait %1 done rm -rf repack_dir