44 lines
1.4 KiB
YAML
44 lines
1.4 KiB
YAML
name: get-latest-version
|
|
description: "Get the latest version of a package."
|
|
inputs:
|
|
versions:
|
|
description: "Newline-seperated list of package versions."
|
|
required: true
|
|
filter:
|
|
description: "String to filter by."
|
|
required: false
|
|
filterIsExpression:
|
|
description: "Is the first filter a Regular Expression? Values: true, false."
|
|
required: false
|
|
default: "false"
|
|
stripPrerelease:
|
|
description: "Whether or not to strip prerelease versions. Values: true, false."
|
|
required: false
|
|
default: "false"
|
|
outputs:
|
|
version:
|
|
description: "The latest version of the specified package."
|
|
value: ${{ steps.parse.outputs.version }}
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: "Get latest package."
|
|
id: parse
|
|
run: |
|
|
VERSIONS="${{ inputs.versions }}"
|
|
# Filter versions, sort them, and get the latest one
|
|
if [[ "${{ inputs.filterIsExpression }}" == "true" ]]; then
|
|
EXPRESSION_FLAG="-E"
|
|
fi
|
|
if [[ "${{ inputs.stripPrerelease }}" == "true" ]]; then
|
|
VERSIONS=$(echo "$VERSIONS" | grep -E "^(v)?[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?$")
|
|
fi
|
|
RESULT=$(echo "$VERSIONS" | grep $EXPRESSION_FLAG "${{ inputs.filter }}" || echo "error")
|
|
|
|
VERSION=$(echo "$RESULT" | sort -rV | head -1)
|
|
|
|
if [[ "$RESULT" != "error" ]]; then
|
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
# No error if no versions found.
|
|
shell: bash |