|  | #!/bin/bash | 
|  | # Compress doc artifacts and name them based on the commit, or the date if | 
|  | # commit is not available. | 
|  |  | 
|  | set -euox pipefail | 
|  |  | 
|  | # Try to get short commit hash, fallback to date | 
|  | if [ -n "$HEAD_SHA" ]; then | 
|  | short_rev=$(echo "${HEAD_SHA}" | cut -c1-8) | 
|  | else | 
|  | short_rev=$(git rev-parse --short HEAD || date -u +'%Y-%m-%dT%H%M%SZ') | 
|  | fi | 
|  |  | 
|  | # Try to get branch, fallback to none | 
|  | branch=$(git branch --show-current || echo) | 
|  |  | 
|  | if [ -n "$branch" ]; then | 
|  | # Strip automation/bors/ prefix if present | 
|  | branch="${branch#automation/bors/}-" | 
|  | fi | 
|  |  | 
|  | if [ "${GITHUB_EVENT_NAME:=none}" = "pull_request" ]; then | 
|  | pr_num=$(echo "$GITHUB_REF_NAME" | cut -d'/' -f1) | 
|  | name="doc-${pr_num}-${short_rev}" | 
|  | else | 
|  | name="doc-${branch}${short_rev}" | 
|  | fi | 
|  |  | 
|  |  | 
|  | if [ -d "obj/staging/doc" ]; then | 
|  | mkdir -p obj/artifacts/doc | 
|  |  | 
|  | # Level 12 seems to give a good tradeoff of time vs. space savings | 
|  | ZSTD_CLEVEL=12 ZSTD_NBTHREADS=4 \ | 
|  | tar --zstd -cf "obj/artifacts/doc/${name}.tar.zst" -C obj/staging/doc . | 
|  |  | 
|  | ls -lh obj/artifacts/doc | 
|  | fi | 
|  |  | 
|  | # Set this environment variable for future use if running in CI | 
|  | if [ -n "$GITHUB_ENV" ]; then | 
|  | echo "DOC_ARTIFACT_NAME=${name}" >> "$GITHUB_ENV" | 
|  | fi |