generated from Templates/Baseline
OCram85
ee1695329e
### 📖 Summary - adds basic upload step ### 📑 Test Plan ✅ CI pipeline tests (Default) ### 💬 Details _No response_ ### 📚 Additional Notes _No response_ Reviewed-on: #3
121 lines
3.2 KiB
Bash
Executable File
121 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
set -e
|
|
|
|
say() {
|
|
if [ -n "$2" ]; then
|
|
printf "🤖 \e[32mgitea-package\e[0m \e[36m[⚒️ %s]\e[0m: %s \n" "$2" "$1"
|
|
else
|
|
printf "🤖 \e[32mgitea-package\e[0m: %s \n" "$1"
|
|
fi
|
|
}
|
|
|
|
sayE() {
|
|
if [ -n "$2" ]; then
|
|
printf "🤖 \e[31mgitea-package\e[0m \e[36m[⚒️ %s]\e[0m: %s \n" "$2" "$1" 1>&2
|
|
else
|
|
printf "🤖 \e[31mgitea-package\e[0m: %s \n" "$1" 1>&2
|
|
fi
|
|
}
|
|
|
|
sayW() {
|
|
if [ -n "$2" ]; then
|
|
printf "🤖 \e[33mgitea-package\e[0m \e[36m[⚒️ %s]\e[0m: %s \n" "$2" "$1" 1>&2
|
|
else
|
|
printf "🤖 \e[33mgitea-package\e[0m: %s \n" "$1" 1>&2
|
|
fi
|
|
}
|
|
|
|
showHelp() {
|
|
cat << HELP
|
|
🤖 gitea-package Woodpecker-CI Plugin
|
|
|
|
Syntax:
|
|
HELP
|
|
}
|
|
|
|
showENV() {
|
|
env | sort
|
|
}
|
|
|
|
showSettings() {
|
|
say "PLUGIN_OWNER: $PLUGIN_OWNER" "showSettings"
|
|
say "PLUGIN_PACKAGE_NAME: $PLUGIN_PACKAGE_NAME" "showSettings"
|
|
say "PLUGIN_PACKAGE_VERSION: $PLUGIN_PACKAGE_VERSION" "showSettings"
|
|
say "PLUGIN_FILE_NAME: $PLUGIN_FILE_NAME" "showSettings"
|
|
say "PLUGIN_FILE_SOURCE: $PLUGIN_FILE_SOURCE" "showSettings"
|
|
say "PLUGIN_UPDATE: $PLUGIN_UPDATE" "showSettings"
|
|
}
|
|
|
|
testArtifact() {
|
|
tout=$(curl --silent --output /dev/null --write-out "%{http_code}" \
|
|
"$CI_FORGE_URL/api/packages/$PLUGIN_OWNER/generic/$PLUGIN_PACKAGE_NAME/$PLUGIN_PACKAGE_VERSION/$PLUGIN_FILE_NAME")
|
|
|
|
if [ "$tout" = "200" ]; then
|
|
echo "true"
|
|
else
|
|
echo "false"
|
|
fi
|
|
}
|
|
|
|
deleteArtifact() {
|
|
dout=$(curl --silent --output /dev/null --write-out "%{http_code}" \
|
|
--user "$PLUGIN_USER:$PLUGIN_PASSWORD" -X DELETE \
|
|
"$CI_FORGE_URL/api/packages/$PLUGIN_OWNER/generic/$PLUGIN_PACKAGE_NAME/$PLUGIN_PACKAGE_VERSION/$PLUGIN_FILE_NAME")
|
|
|
|
if [ "$dout" = "204" ]; then
|
|
say "Old package file deleted" "deleteArtifact"
|
|
elif [ "$dout" = "404" ]; then
|
|
sayE "The package or file was not found." "deleteArtifact"
|
|
exit 1
|
|
else
|
|
sayE "Unknown curl response! ($dout)" "deleteArtifact"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
uploadArtifact() {
|
|
say "Testing if the artifact already exists in give package version..." "uploadArtifact"
|
|
fexist=$(testArtifact)
|
|
if [ "$fexist" = "true" ]; then
|
|
if [ -n "$PLUGIN_UPDATE" ]; then
|
|
sayW "Given file already exists. Updating package file..." "uploadArtifact"
|
|
deleteArtifact
|
|
else
|
|
sayW "A file with the same name exist already in the package." "uploadArtifact"
|
|
exit 1
|
|
fi
|
|
fi
|
|
say "Starting file upload..." "uploadArtifact"
|
|
cout=$(curl --silent --output /dev/null --write-out "%{http_code}" \
|
|
--user "$PLUGIN_USER:$PLUGIN_PASSWORD" \
|
|
--upload-file "$PLUGIN_FILE_SOURCE" \
|
|
"$CI_FORGE_URL/api/packages/$PLUGIN_OWNER/generic/$PLUGIN_PACKAGE_NAME/$PLUGIN_PACKAGE_VERSION/$PLUGIN_FILE_NAME")
|
|
say "Curl output is: $cout" "uploadArtifact"
|
|
|
|
if [ "$cout" = "201" ]; then
|
|
say "Upload sucessfully finished." "uploadArtifact"
|
|
exit 0
|
|
elif [ "$cout" = "400" ]; then
|
|
sayE "Upload failed! (Bad Request)" "uploadArtifact"
|
|
exit 1
|
|
elif [ "$cout" = "409" ]; then
|
|
sayE "File already exists in package version!" "uploadArtifact"
|
|
else
|
|
sayE "Unknown upload response! ($cout)" "uploadArtifact"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
if [ -n "$PLUGIN_DEBUG" ]; then
|
|
sayW "Debug mode enabled."
|
|
showSettings
|
|
#sayW "Available ENV vars:"
|
|
#showENV
|
|
fi
|
|
uploadArtifact
|
|
}
|
|
|
|
main "$@"
|