# tinqs/ci/checkout — Tinqs Studio CI # Clones a repo from tinqs.com (self-hosted Gitea) using plain git. # Supports depth control, branch/tag selection, token auth, and sparse checkout. # Composite action — runs directly on the host, no Node.js runtime needed. # Author: Ozan + Claude Code — 2026-05-22 name: 'Tinqs Checkout' description: 'Clone a Gitea repository' inputs: repository: description: 'Repository (owner/repo)' default: '${{ github.repository }}' ref: description: 'Branch or tag to checkout' default: '${{ github.ref_name }}' depth: description: 'Clone depth (0 = full)' default: '1' path: description: 'Directory to clone into' default: '.' token: description: 'Gitea access token (for private repos)' default: '' sparse: description: 'Space-separated paths for sparse checkout (empty = full clone)' default: '' runs: using: 'composite' steps: - run: | REPO="${{ inputs.repository }}" REF="${{ inputs.ref }}" DEPTH="${{ inputs.depth }}" TARGET="${{ inputs.path }}" TOKEN="${{ inputs.token }}" SPARSE="${{ inputs.sparse }}" if [ "$DEPTH" = "0" ]; then DEPTH_FLAG="" else DEPTH_FLAG="--depth $DEPTH" fi if [ -n "$TOKEN" ]; then URL="https://token:${TOKEN}@tinqs.com/${REPO}.git" else URL="https://tinqs.com/${REPO}.git" fi if [ -n "$SPARSE" ]; then # Sparse checkout — only fetch specified paths mkdir -p "$TARGET" && cd "$TARGET" git init git remote add origin "$URL" git config core.sparseCheckout true for P in $SPARSE; do echo "$P" >> .git/info/sparse-checkout done # Also always include go.mod/go.sum for Go builds echo "go.mod" >> .git/info/sparse-checkout echo "go.sum" >> .git/info/sparse-checkout git fetch $DEPTH_FLAG origin "$REF" git checkout FETCH_HEAD echo "Sparse checkout ${REPO}@${REF} ($(echo $SPARSE | wc -w) paths)" else # Full clone if [ "$TARGET" = "." ]; then git clone $DEPTH_FLAG --branch "$REF" "$URL" . else git clone $DEPTH_FLAG --branch "$REF" "$URL" "$TARGET" fi echo "Checked out ${REPO}@${REF}" fi shell: bash