nginx-ui/version.sh
2025-02-24 10:37:40 +08:00

56 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
# Version validation regex pattern
VALID_VERSION_REGEX='^v?[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9\.]+)?$'
# Prompt for version input
while true; do
read -p "Enter version number: " VERSION
# Remove 'v' prefix for validation
if [[ "${VERSION#v}" =~ $VALID_VERSION_REGEX ]]; then
# Show confirmation prompt with original input
echo "You entered version: ${VERSION}"
read -p "Is this correct? [Y/n] " confirm
case ${confirm,,} in
y|yes|"") break ;;
n|no)
echo "Restarting version input..."
continue
;;
*)
echo "Invalid input, please answer Y/n"
continue
;;
esac
else
echo "Error: Invalid version format. Please use semantic versioning (e.g. 2.0.0, v2.0.1-beta.1)"
fi
done
# Cross-platform compatible sed command
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s/\"version\": \".*\"/\"version\": \"${VERSION#v}\"/" app/package.json
else
sed -i "s/\"version\": \".*\"/\"version\": \"${VERSION#v}\"/" app/package.json
fi
echo "Updated package.json to version ${VERSION#v}"
# Build app
echo "Building app..."
cd app && pnpm build
if [ $? -ne 0 ]; then
echo "Error: Build failed"
exit 1
fi
cd ..
# Run go generate
echo "Generating Go code..."
go generate ./...
if [ $? -ne 0 ]; then
echo "Error: go generate failed"
exit 1
fi
echo "Version update and generation completed successfully"