Skip to content

Add Async helper with tick-based interleaving #7

Add Async helper with tick-based interleaving

Add Async helper with tick-based interleaving #7

Workflow file for this run

name: Deploy docs to Pages
on:
push:
branches:
- main
paths:
- '**.roc'
release:
types:
- created
workflow_dispatch:
# this cancels workflows currently in progress if you start a new one
concurrency:
group: "pages"
cancel-in-progress: true
# Do not add permissions here! Configure them at the job level!
permissions:
contents: read
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-24.04
permissions:
pages: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- uses: roc-lang/setup-roc@39c354a6a838a0089eea9068a0414f49b62c5c08
with:
# Note: nightly hashes are not verified because they are updated regularly.
version: nightly
- run: roc version
- name: Create temp directory for docs
run: mkdir -p ./temp_docs
- name: Download and extract docs for each release
run: |
# Get all releases (include prereleases so dev can be used as latest)
releases=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/releases" | jq -c '.')
echo "$releases" | jq -c '.[]' | while read -r release; do
release_name=$(echo $release | jq -r '.tag_name')
assets_url=$(echo $release | jq -r '.assets_url')
# Get assets for this release
assets=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "${assets_url}")
# Look for docs.tar.gz asset
download_url=$(echo $assets | jq -r '.[] | select(.name=="docs.tar.gz") | .browser_download_url')
if [ ! -z "$download_url" ]; then
echo "Processing release ${release_name}, downloading from ${download_url}"
# Create directory for this release
mkdir -p "./temp_docs/${release_name}"
# Download and extract
curl -sL "${download_url}" -o ./temp_docs/temp.tar.gz
tar -xzf ./temp_docs/temp.tar.gz -C "./temp_docs/${release_name}" --strip-components=1
rm ./temp_docs/temp.tar.gz
else
echo "Error: docs.tar.gz not found for release ${release_name}"
fi
done
# fix URLs
find ./temp_docs -type f -exec sed -i 's/\/packages\/basic-cli\//\/basic-cli\//g' {} +
# Prefer dev prerelease if present, otherwise latest release
latest_release=$(echo "${releases}" | jq -r 'map(select(.tag_name=="dev")) | .[0].tag_name // .[0].tag_name // "main"')
if [ -f "./docs/index.html" ]; then
# Copy the index.html and replace LATESTVERSION with actual latest release
cat ./docs/index.html | sed "s/LATESTVERSION/${latest_release}/g" > ./temp_docs/index.html
echo "Created index.html with latest version: ${latest_release}"
else
echo "Error: index.html not found in docs folder"
exit 1
fi
- name: Add docs for main branch
env:
ROC_DOCS_URL_ROOT: /basic-cli/main
run: |
roc docs ./platform/main.roc
mkdir -p "./temp_docs/main"
mv ./generated-docs/* ./temp_docs/main
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload the processed docs folder
path: "./temp_docs"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4