#!/usr/bin/env bash SCRIPT_PATH="$(cd "$(dirname "$0")" && pwd)" GENERATOR_NAME="cuckoonator" GENERATOR_PATH="$SCRIPT_PATH/$GENERATOR_NAME" GREP_OPTIONS="" echo "Script path: $SCRIPT_PATH" echo "Generator path: $GENERATOR_PATH" function download_generator { echo "Downloading generator version $1..." if [[ ! -z "$GITHUB_ACCESS_TOKEN" ]]; then CURL_OPTIONS=(-H "Authorization: token $GITHUB_ACCESS_TOKEN") fi URL="https://api.github.com/repos/Brightify/Cuckoo/releases/tags/$1" DOWNLOAD_URL=$(curl "${CURL_OPTIONS[@]}" "$URL" | grep -oe '"browser_download_url":\s*"[^" ]*"' | grep -oe 'http[^" ]*' | grep "$GENERATOR_NAME" | head -1) if [[ -z "$DOWNLOAD_URL" ]]; then echo "Error: Failed to fetch download URL for the Cuckoo Generator." exit 1 else echo "Downloading Cuckoo Generator from URL: $DOWNLOAD_URL" curl "${CURL_OPTIONS[@]}" -Lo "$GENERATOR_PATH" "$DOWNLOAD_URL" fi chmod +x "$GENERATOR_NAME" } function get_generator { pushd "$SCRIPT_PATH" if [[ ! -z "$DOWNLOAD" ]]; then download_generator "$LIB_VERSION" else if [[ -d "$SCRIPT_PATH/Generator" ]]; then echo "Building generator..." ./build_generator if [[ "$?" -ne 0 ]]; then echo "Build seems to have failed for some reason. Please file an issue on GitHub." exit 1 fi mv "$SCRIPT_PATH/Generator/bin/$GENERATOR_NAME" "$GENERATOR_PATH" else echo "Couldn't build generator – source code not found. (expected in the 'Generator' directory)" echo "Pass the --download option to fetch the binary from GitHub." exit 1 fi fi popd } # Source: https://stackoverflow.com/a/58333404/11558478 function ver_cmp { local IFS=. local V1=($1) V2=($2) I for ((I=0 ; I<${#V1[*]} || I<${#V2[*]} ; I++)) ; do [[ ${V1[$I]:-0} -lt ${V2[$I]:-0} ]] && echo -1 && return [[ ${V1[$I]:-0} -gt ${V2[$I]:-0} ]] && echo 1 && return done echo 0 } function ver_lt { [[ $(ver_cmp "$1" "$2") -eq -1 ]] } # parse arguments POSITIONAL=() while [[ $# -gt 0 ]]; do case $1 in -d|--download) DOWNLOAD=1 shift ;; -c|--clean) CLEAN=1 echo 'Performing clean generator build.' shift ;; *) POSITIONAL+=("$1") shift ;; esac; done set -- "${POSITIONAL[@]}" LIB_VERSION=$(