branch-names/action.yml
2022-08-21 10:59:36 -06:00

105 lines
4.0 KiB
YAML

name: Branch Names
description: Retrieve giithub branch or tag information without the /ref/* prefix
author: tj-actions
inputs:
strip_tag_prefix:
description: 'The prefix that should be stripped from the tag e.g `v0.0.1` -> `(strip v)` -> `0.0.1`'
default: ''
required: false
outputs:
is_default:
value: ${{ steps.default.outputs.is_default }}
description: 'Returns `"true"` if the current branch is the default else `"false"`.'
is_tag:
value: ${{ steps.tag.outputs.is_tag }}
description: 'Returns `"true"` if the current branch is a tag else `"false"`.'
default_branch:
value: ${{ steps.default.outputs.default_branch }}
description: 'The default branch name e.g `main` OR `master`'
current_branch:
value: ${{ steps.current_branch.outputs.current_branch }}
description: 'The current branch name regardless of event_type e.g `main`, `feature/test`, `v0.0.1`.'
base_ref_branch:
value: ${{ steps.branch.outputs.base_ref_branch }}
description: 'The target branch of a pull request e.g `main`'
head_ref_branch:
value: ${{ steps.branch.outputs.head_ref_branch }}
description: 'The source branch of a pull request e.g `feature/test`'
ref_branch:
value: ${{ steps.branch.outputs.ref_branch }}
description: 'The branch that triggered the workflow run. e.g `1/merge`, `main`'
tag:
value: ${{ steps.tag.outputs.tag }}
description: 'The tag that triggered the workflow run. e.g `v0.0.1`, `0.0.1`'
runs:
using: "composite"
steps:
- id: branch
run: |
# "Set branch names..."
if [[ "${{ github.ref }}" != "refs/tags/"* ]]; then
BASE_REF=$(printf "%q" "${{ github.base_ref }}")
HEAD_REF=$(printf "%q" "${{ github.head_ref }}")
REF=$(printf "%q" "${{ github.ref }}")
BASE_REF=${BASE_REF/refs\/heads\//}
HEAD_REF=${HEAD_REF/refs\/heads\//}
echo "::set-output name=base_ref_branch::$(eval printf "%s" "$BASE_REF")"
echo "::set-output name=head_ref_branch::$(eval printf "%s" "$HEAD_REF")"
REF_BRANCH=${REF/refs\/pull\//}
REF_BRANCH=${REF_BRANCH/refs\/heads\//}
echo "::set-output name=ref_branch::$(eval printf "%s" "$REF_BRANCH")"
fi
shell: bash
- id: current_branch
run: |
# "Set the current branch name..."
if [[ "${{ github.ref }}" != "refs/tags/"* ]]; then
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
echo "::set-output name=current_branch::${{ steps.branch.outputs.head_ref_branch }}"
else
echo "::set-output name=current_branch::${{ steps.branch.outputs.ref_branch }}"
fi
else
REF=$(printf "%q" "${{ github.ref }}")
REF_BRANCH=${REF/refs\/tags\/${{ inputs.strip_tag_prefix }}/}
echo "::set-output name=current_branch::$(eval printf "%s" "$REF_BRANCH")"
fi
shell: bash
- id: default
run: |
# "Set the default branch name..."
if [[ "${{ github.ref }}" != "refs/tags/"* ]]; then
if [[ "${{ steps.current_branch.outputs.current_branch }}" == "${{ github.event.repository.default_branch }}" ]]; then
echo "::set-output name=is_default::true"
echo "::set-output name=default_branch::${{ github.event.repository.default_branch }}"
else
echo "::set-output name=is_default::false"
echo "::set-output name=default_branch::${{ github.event.repository.default_branch }}"
fi
fi
shell: bash
- id: tag
run: |
# "Set the tag name..."
if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
REF=$(printf "%q" "${{ github.ref }}")
TAG=${REF/refs\/tags\/${{ inputs.strip_tag_prefix }}/}
echo "::set-output name=tag::$(eval printf "%s" "$TAG")"
echo "::set-output name=is_tag::true"
else
echo "::set-output name=is_tag::false"
fi
shell: bash
branding:
icon: git-branch
color: white