67 lines
2.0 KiB
Bash
Executable File
67 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
ARCH=$(uname -m)
|
|
TEMP_DIR="${SCRIPT_DIR}/temp"
|
|
SOS="${TEMP_DIR}/sos"
|
|
PROJECT="dropshell"
|
|
|
|
echo "Publishing dropshell to getbin.xyz"
|
|
|
|
function die() {
|
|
echo "error: $1"
|
|
exit 1
|
|
}
|
|
|
|
[[ -n ${SOS_WRITE_TOKEN:-} ]] || die "SOS_WRITE_TOKEN not specified"
|
|
|
|
# clear output dir
|
|
rm -rf "${SCRIPT_DIR}/output"
|
|
mkdir -p "${SCRIPT_DIR}/output"
|
|
|
|
# build release version
|
|
export CMAKE_BUILD_TYPE="Release"
|
|
export INSTALL_LOCAL="false"
|
|
"${SCRIPT_DIR}/build.sh"
|
|
|
|
[ -f "${SCRIPT_DIR}/output/dropshell" ] || die "Build failed."
|
|
|
|
# Get version from the built binary (format: YYYY.MMDD.HHMM)
|
|
VERSION=$("${SCRIPT_DIR}/output/dropshell" version | tr -d '[:space:]')
|
|
[ -z "$VERSION" ] && die "Failed to get version from dropshell"
|
|
|
|
echo "Publishing dropshell version ${VERSION} for ${ARCH}"
|
|
|
|
# download the sos binary
|
|
mkdir -p "${TEMP_DIR}"
|
|
trap 'rm -rf "${TEMP_DIR}"' EXIT
|
|
|
|
curl -L -o "${SOS}" "https://getbin.xyz/sos"
|
|
chmod +x "${SOS}"
|
|
|
|
# Create metadata file with version information
|
|
METADATA_FILE="${TEMP_DIR}/metadata.json"
|
|
cat > "${METADATA_FILE}" <<EOF
|
|
{
|
|
"version": "${VERSION}",
|
|
"architecture": "${ARCH}",
|
|
"project": "${PROJECT}"
|
|
}
|
|
EOF
|
|
|
|
# upload arch-specific binary with metadata
|
|
# The sos tool should support --metadata flag or similar for version info
|
|
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/output/${PROJECT}" "${PROJECT}:latest-${ARCH}" \
|
|
--metadata "version=${VERSION}"
|
|
|
|
# Also upload with version-specific tag for direct version access
|
|
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/output/${PROJECT}" "${PROJECT}:${VERSION}-${ARCH}"
|
|
|
|
# upload generic install script
|
|
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/dropshell-install.sh" "dropshell-install:latest"
|
|
|
|
# upload server auto-setup script
|
|
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/dropshell-server-autosetup.sh" "dropshell-server-autosetup:latest"
|
|
|
|
echo "Successfully published dropshell:latest-${ARCH} (version ${VERSION}) to getbin.xyz" |