name: Check publish on: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: isdraft: uses: ./.github/workflows/reusable-isdraft.yml check-publish: runs-on: ubuntu-latest needs: isdraft steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7 - name: Check for publishable crates id: check-publishable run: | # Find crates that are publishable (don't have publish = false) PUBLISHABLE=$(find . -name "Cargo.toml" -exec grep -L 'publish = false' {} \; | grep -v target | head -20) if [ -z "$PUBLISHABLE" ]; then echo "No publishable crates found (all have publish = false)" echo "has_publishable=false" >> $GITHUB_OUTPUT else echo "Found publishable crates:" echo "$PUBLISHABLE" echo "has_publishable=true" >> $GITHUB_OUTPUT fi - name: Rust Cache if: steps.check-publishable.outputs.has_publishable == 'true' uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 with: save-if: ${{ github.ref == 'refs/heads/master' }} - name: Install pezkuwi-publish (when ready) if: steps.check-publishable.outputs.has_publishable == 'true' run: | echo "Publishable crates detected - publish checks will run when pezkuwi-publish tool is ready" # TODO: Replace with pezkuwi-publish when available # cargo install pezkuwi-publish --locked -q - name: Skip - all crates have publish = false if: steps.check-publishable.outputs.has_publishable == 'false' run: echo "All crates have publish = false, skipping publish checks"