#!/usr/bin/env bash set -euo pipefail ESPVERSE_BASE_URL="${ESPVERSE_BASE_URL:-https://espverse.com}" ESPVERSE_STATUS="${ESPVERSE_STATUS:-draft}" ESPVERSE_FLASH_OFFSET="${ESPVERSE_FLASH_OFFSET:-0x0}" PLATFORMIO_ENV="${PLATFORMIO_ENV:-}" if [[ -z "${ESPVERSE_API_KEY:-}" ]]; then echo "ESPVERSE_API_KEY is required" >&2 exit 1 fi if [[ -z "${ESPVERSE_PROJECT:-}" || -z "${ESPVERSE_VERSION:-}" || -z "${ESPVERSE_BOARD:-}" || -z "${ESPVERSE_CHIP:-}" ]]; then echo "ESPVERSE_PROJECT, ESPVERSE_VERSION, ESPVERSE_BOARD, and ESPVERSE_CHIP are required" >&2 exit 1 fi if [[ -n "${PLATFORMIO_ENV}" ]]; then pio run -e "${PLATFORMIO_ENV}" FIRMWARE_PATH="${FIRMWARE_PATH:-.pio/build/${PLATFORMIO_ENV}/firmware.bin}" else pio run FIRMWARE_PATH="${FIRMWARE_PATH:-$(find .pio/build -name firmware.bin | head -n 1)}" fi if [[ ! -f "${FIRMWARE_PATH}" ]]; then echo "Firmware file not found: ${FIRMWARE_PATH}" >&2 exit 1 fi curl -fS "${ESPVERSE_BASE_URL}/api/v1/firmware/publish" \ -H "Authorization: Bearer ${ESPVERSE_API_KEY}" \ -F "project_slug=${ESPVERSE_PROJECT}" \ -F "version=${ESPVERSE_VERSION}" \ -F "board_slug=${ESPVERSE_BOARD}" \ -F "chip_family=${ESPVERSE_CHIP}" \ -F "flash_offset=${ESPVERSE_FLASH_OFFSET}" \ -F "status=${ESPVERSE_STATUS}" \ -F "firmware=@${FIRMWARE_PATH};type=application/octet-stream"