67 lines
1.9 KiB
Bash
Executable File
67 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
|
if [[ "$*" = *--view* ]]; then
|
|
VIEW_ONLY=1
|
|
fi
|
|
|
|
: ${WORKFLOW:=npm-publish.yml}
|
|
: ${JOB:=publish-npm}
|
|
: ${BRANCH:=github-workflows}
|
|
: ${VERSION:="minor (x.y+1.0, new functionality)"}
|
|
WORKFLOW_FILE="$SCRIPT_DIR/../.github/workflows/$WORKFLOW_FILE"
|
|
|
|
function echo-var {
|
|
echo "$1=${!1}"
|
|
}
|
|
|
|
function upload-changes {
|
|
git diff --quiet "$WORKFLOW_FILE"
|
|
if [ $? -eq 1 ]; then
|
|
echo "Uploading changes"
|
|
git add "$WORKFLOW_FILE"
|
|
git commit -m "Update $WORKFLOW_FILE"
|
|
# git push origin "$BRANCH"
|
|
git push origin "$BRANCH" -f
|
|
fi
|
|
}
|
|
|
|
function run-workflow {
|
|
LAST_RUN_ID=$(gh run list --workflow="$WORKFLOW" --json number,databaseId --jq 'sort_by(.number) | .[-1] | .databaseId')
|
|
if [ -n "$WORKFLOW_ARGS" ]; then
|
|
WORKFLOW_ARGS=($WORKFLOW_ARGS)
|
|
else
|
|
if [ "$WORKFLOW" = "npm-publish.yml" ]; then
|
|
WORKFLOW_ARGS=(-f "version=$VERSION")
|
|
fi
|
|
fi
|
|
gh workflow run "$WORKFLOW" --ref "$BRANCH" "${WORKFLOW_ARGS[@]}"
|
|
RUN_ID="$LAST_RUN_ID"
|
|
}
|
|
|
|
function view-workflow {
|
|
while [ "$RUN_ID" = "$LAST_RUN_ID" ]; do
|
|
MOST_RECENT_RUN=$(gh run list --workflow="$WORKFLOW" --json number,databaseId,status --jq 'sort_by(.number) | .[-1] | "\(.databaseId);\(.status)"')
|
|
RUN_ID=${MOST_RECENT_RUN%;*}
|
|
RUN_STATUS=${MOST_RECENT_RUN#*;}
|
|
done
|
|
|
|
if [ "$RUN_STATUS" != "completed" ]; then
|
|
gh run watch $RUN_ID
|
|
fi
|
|
gh run view $RUN_ID --log | grep "$JOB" | grep -v '@v'
|
|
if [ $? -ne 0 ]; then
|
|
# xargs is only used for trimming
|
|
ANNOTATION=$(curl "https://github.com/aadsm/jschardet/actions/runs/$RUN_ID" 2>/dev/null | grep 'annotation-message.annotationContainer' -A 1 | tail -n 1 | xargs)
|
|
ANNOTATION=${ANNOTATION##<div>}
|
|
ANNOTATION=${ANNOTATION%%</div>}
|
|
echo "Annotation: $ANNOTATION"
|
|
fi
|
|
}
|
|
|
|
if [ -z $VIEW_ONLY ]; then
|
|
upload-changes
|
|
run-workflow
|
|
fi
|
|
view-workflow
|