Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/actions/pana-score/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ publishing its status and summary.

- `score`: e.g. `98/100`.
- `state`: one of `success`, `failure`, `error`.
- `package-name`: resolved from the package's `pubspec.yaml` (or its directory
name), used to namespace the commit status context.
- `package-name`: resolved from the package's `pubspec.yaml` (falling back to
its directory name, then `unknown`), used to namespace the commit status
context. Always set, even if the score step itself fails.

## Required workflow permissions

Expand Down
28 changes: 21 additions & 7 deletions .github/actions/pana-score/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,18 @@ runs:
PACKAGE_PATH: ${{ inputs.path }}
run: |
set -euo pipefail # so tee doesn't mask a pana that fell over
pana --json "$PACKAGE_PATH" | tee "$RUNNER_TEMP/pana.json" || true

package_name="$(awk -F': *' '/^name:/{print $2; exit}' "$PACKAGE_PATH/pubspec.yaml" 2>/dev/null | tr -d "\"'")"
# resolved first and shielded from set -e so a later crash still reports a name
package_name="$(awk -F': *' '/^name:/{print $2; exit}' "$PACKAGE_PATH/pubspec.yaml" 2>/dev/null | tr -d "\"'")" || true
if [ -z "$package_name" ]; then
package_name="$(basename "$(cd "$PACKAGE_PATH" && pwd)" 2>/dev/null)" || true
fi
if [ -z "$package_name" ]; then
package_name="$(basename "$(cd "$PACKAGE_PATH" && pwd)")"
package_name="unknown"
fi
echo "package-name=$package_name" >> "$GITHUB_OUTPUT"

pana --json "$PACKAGE_PATH" | tee "$RUNNER_TEMP/pana.json" || true

granted="$(jq -r '.scores.grantedPoints // empty' "$RUNNER_TEMP/pana.json" 2>/dev/null || true)"
max="$(jq -r '.scores.maxPoints // empty' "$RUNNER_TEMP/pana.json" 2>/dev/null || true)"
Expand All @@ -74,7 +80,6 @@ runs:
echo "score=$score" >> "$GITHUB_OUTPUT"
echo "state=$state" >> "$GITHUB_OUTPUT"
echo "valid_score=$valid_score" >> "$GITHUB_OUTPUT"
echo "package-name=$package_name" >> "$GITHUB_OUTPUT"

{
echo "## pana score for $package_name: $score"
Expand Down Expand Up @@ -108,12 +113,21 @@ runs:
STATE: ${{ steps.score.outputs.state || 'error' }}
SCORE: ${{ steps.score.outputs.score || 'pana produced no score' }}
PACKAGE_NAME: ${{ steps.score.outputs.package-name }}
PACKAGE_PATH: ${{ inputs.path }}
TARGET_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
context="pana"
if [ -n "$PACKAGE_NAME" ]; then
context="pana ($PACKAGE_NAME)"
# re-resolved in case the score step was skipped entirely
package_name="$PACKAGE_NAME"
if [ -z "$package_name" ]; then
package_name="$(awk -F': *' '/^name:/{print $2; exit}' "$PACKAGE_PATH/pubspec.yaml" 2>/dev/null | tr -d "\"'")" || true
fi
if [ -z "$package_name" ]; then
package_name="$(basename "$(cd "$PACKAGE_PATH" && pwd)" 2>/dev/null)" || true
fi
if [ -z "$package_name" ]; then
package_name="unknown"
fi
context="pana ($package_name)"

gh api "repos/$GITHUB_REPOSITORY/statuses/$SHA" \
--silent \
Expand Down
Loading