name: 'Setup Cairn CLI' description: 'Downloads and caches the Cairn CLI tool' inputs: version: description: 'Cairn CLI version' required: false default: 'latest' server_url: description: 'Cairn server URL (exported as CAIRN_SERVER_URL)' required: false runs: using: 'composite' steps: - name: Setup Cairn CLI shell: sh env: CAIRN_VERSION: ${{ inputs.version }} CAIRN_SERVER_URL: ${{ inputs.server_url }} run: | set -eu CACHE_DIR="${RUNNER_TOOL_CACHE:-/tmp/cairn-tool-cache}" TOOL_DIR="${CACHE_DIR}/cairn/${CAIRN_VERSION}/x64" CAIRN_URL="${{ github.server_url }}/api/packages/${{ github.repository_owner }}/generic/cairn/${CAIRN_VERSION}/cairn-x86_64-linux" download_cairn() { if command -v curl >/dev/null 2>&1; then curl -sfL "${CAIRN_URL}" -o "${TOOL_DIR}/cairn" return 0 fi if command -v wget >/dev/null 2>&1; then wget -qO "${TOOL_DIR}/cairn" "${CAIRN_URL}" return 0 fi if command -v apt-get >/dev/null 2>&1; then apt-get update -qq apt-get install -y -qq curl >/dev/null 2>&1 curl -sfL "${CAIRN_URL}" -o "${TOOL_DIR}/cairn" return 0 fi echo "ERROR: no supported downloader found (curl/wget/apt-get)" return 1 } if [ -f "${TOOL_DIR}/cairn" ] && [ -f "${TOOL_DIR}/.complete" ]; then echo "Cairn CLI ${CAIRN_VERSION} found in tool cache" else echo "Downloading Cairn CLI ${CAIRN_VERSION}..." mkdir -p "${TOOL_DIR}" download_cairn chmod +x "${TOOL_DIR}/cairn" touch "${TOOL_DIR}/.complete" echo "Cairn CLI ${CAIRN_VERSION} installed" fi echo "${TOOL_DIR}" >> "${GITHUB_PATH}" if [ -n "${CAIRN_SERVER_URL}" ]; then echo "CAIRN_SERVER_URL=${CAIRN_SERVER_URL}" >> "${GITHUB_ENV}" fi