Use gh CLI to make (verified) commit
This commit is contained in:
parent
0ad9a55048
commit
6f9fc6eab1
33
action.yml
33
action.yml
|
@ -9,6 +9,10 @@ inputs:
|
||||||
description: 'GITHUB_TOKEN or a `repo` scoped Personal Access Token (PAT)'
|
description: 'GITHUB_TOKEN or a `repo` scoped Personal Access Token (PAT)'
|
||||||
required: false
|
required: false
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
|
commit-with-token:
|
||||||
|
description: 'Set to true to produce a verified commit with token'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
commit-msg:
|
commit-msg:
|
||||||
description: 'The message provided with the commit'
|
description: 'The message provided with the commit'
|
||||||
required: false
|
required: false
|
||||||
|
@ -119,6 +123,35 @@ runs:
|
||||||
TARGETS: ${{ inputs.inputs }}
|
TARGETS: ${{ inputs.inputs }}
|
||||||
COMMIT_MSG: ${{ inputs.commit-msg }}
|
COMMIT_MSG: ${{ inputs.commit-msg }}
|
||||||
PATH_TO_FLAKE_DIR: ${{ inputs.path-to-flake-dir }}
|
PATH_TO_FLAKE_DIR: ${{ inputs.path-to-flake-dir }}
|
||||||
|
COMMIT_WITH_TOKEN: ${{ inputs.commit-with-token }}
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
if: ${{ inputs.commit-with-token == 'true' }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ inputs.token }}
|
||||||
|
FILE_TO_COMMIT: flake.lock
|
||||||
|
DESTINATION_BRANCH: ${{ inputs.branch }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
export CONTENT=$( base64 -i $FILE_TO_COMMIT )
|
||||||
|
export BASE=$DESTINATION_BRANCH
|
||||||
|
if gh api --method GET /repos/:owner/:repo/git/refs/heads/$DESTINATION_BRANCH; then
|
||||||
|
git fetch origin $DESTINATION_BRANCH
|
||||||
|
else
|
||||||
|
export BASE=$(gh repo view --json defaultBranchRef --template '{{ .defaultBranchRef.name }}' ${{github.repository}})
|
||||||
|
gh api --method POST /repos/:owner/:repo/git/refs \
|
||||||
|
--field ref=refs/heads/$DESTINATION_BRANCH \
|
||||||
|
--field sha=$BASE_SHA
|
||||||
|
fi
|
||||||
|
export BASE_SHA=$( git rev-parse origin/$BASE )
|
||||||
|
export SHA=$( git rev-parse origin/$BASE:$FILE_TO_COMMIT )
|
||||||
|
gh api --method PUT /repos/:owner/:repo/contents/$FILE_TO_COMMIT \
|
||||||
|
--field message="${{inputs.commit-msg}}" \
|
||||||
|
--field content="$CONTENT" \
|
||||||
|
--field encoding="base64" \
|
||||||
|
--field branch="$DESTINATION_BRANCH" \
|
||||||
|
--field sha="$SHA"
|
||||||
- name: Save PR Body as file
|
- name: Save PR Body as file
|
||||||
uses: DamianReeves/write-file-action@v1.1
|
uses: DamianReeves/write-file-action@v1.1
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -5,12 +5,18 @@ if [[ -n "$PATH_TO_FLAKE_DIR" ]]; then
|
||||||
cd "$PATH_TO_FLAKE_DIR"
|
cd "$PATH_TO_FLAKE_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
commitArg=""
|
||||||
|
|
||||||
|
if [[ "$COMMIT_WITH_TOKEN" != true ]]; then
|
||||||
|
commitArg="--commit-lock-file "
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -n "$TARGETS" ]]; then
|
if [[ -n "$TARGETS" ]]; then
|
||||||
inputs=()
|
inputs=()
|
||||||
for input in $TARGETS; do
|
for input in $TARGETS; do
|
||||||
inputs+=("--update-input" "$input")
|
inputs+=("--update-input" "$input")
|
||||||
done
|
done
|
||||||
nix flake lock "${inputs[@]}" --commit-lock-file --commit-lockfile-summary "$COMMIT_MSG"
|
nix flake lock "${inputs[@]}" $commitArg --commit-lockfile-summary "$COMMIT_MSG"
|
||||||
else
|
else
|
||||||
nix flake update --commit-lock-file --commit-lockfile-summary "$COMMIT_MSG"
|
nix flake update $commitArg --commit-lockfile-summary "$COMMIT_MSG"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue