158 lines
3.7 KiB
Bash
Executable File
158 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#region globalvars
|
|
option=$1
|
|
abort=false
|
|
currentVersion=''
|
|
newVersion=''
|
|
currentDateTime=$(date +"%Y-%m-%d %T")
|
|
currentDate=$(date +"%Y-%m-%d")
|
|
|
|
#region functions
|
|
|
|
function showHelp {
|
|
echo 'Parameter invalid / missing.'
|
|
echo ''
|
|
echo 'usage:'
|
|
echo ''
|
|
echo ' bump_version [patch|minor|major]'
|
|
echo ''
|
|
}
|
|
|
|
function checkParameters {
|
|
# check if parameter provided
|
|
if [ -z $option ];
|
|
then
|
|
showHelp
|
|
abort=true
|
|
else
|
|
case $option in
|
|
patch)
|
|
# echo "patch"
|
|
;;
|
|
minor)
|
|
# echo "minor"
|
|
;;
|
|
major)
|
|
# echo "major"
|
|
;;
|
|
*)
|
|
showHelp
|
|
abort=true
|
|
return
|
|
;;
|
|
esac
|
|
echo "bump ${option} version"
|
|
fi
|
|
}
|
|
|
|
# use package.json as the source of truth
|
|
function read_current_version {
|
|
currentVersion=$(echo "$var1" | (grep version package.json | sed 's/.*"version": "\(.*\)".*/\1/'))
|
|
echo "currentVersion=${currentVersion}"
|
|
}
|
|
|
|
function get_new_version {
|
|
local currentMajor=$(echo "$var1" | (echo "${currentVersion}" | awk -F'.' '{print $1}'))
|
|
local currentMinor=$(echo "$var1" | (echo "${currentVersion}" | awk -F'.' '{print $2}'))
|
|
local currentPatch=$(echo "$var1" | (echo "${currentVersion}" | awk -F'.' '{print $3}'))
|
|
|
|
echo "${currentMajor} ${currentMinor} ${currentPatch}"
|
|
case $option in
|
|
patch)
|
|
let "newPatch = $currentPatch + 1"
|
|
newVersion="${currentMajor}.${currentMinor}.${newPatch}"
|
|
echo "newVersion=${newVersion}"
|
|
;;
|
|
minor)
|
|
let "newMinor = $currentMinor + 1"
|
|
newVersion="${currentMajor}.${newMinor}.0"
|
|
echo "newVersion=${newVersion}"
|
|
;;
|
|
major)
|
|
let "newMajor = $currentMajor + 1"
|
|
newVersion="${newMajor}.0.0"
|
|
echo "newVersion=${newVersion}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function search_replace_in_file {
|
|
local file=$1
|
|
local search=$2
|
|
local replace=$3
|
|
|
|
sed -i "" "s/${search}/${replace}/g" $file
|
|
}
|
|
|
|
function write_new_version {
|
|
|
|
echo ""
|
|
echo "Update files to ${newVersion} (${currentDateTime}):"
|
|
|
|
echo " package.json"
|
|
local line="\"version\": \".*\""
|
|
local rep="\"version\": \"${newVersion}\""
|
|
sed -i "" "s/${line}/${rep}/g" package.json
|
|
|
|
# in package-lock.json we only want to replace the very first occurence
|
|
echo " package-lock.json"
|
|
sed -e "/${line}/{s//${rep}/;:a" -e '$!N;$!ba' -e '}' package-lock.json > tmp && mv tmp package-lock.json
|
|
|
|
|
|
# TODO: update last_update
|
|
echo " web-app-manifest.json"
|
|
sed -i "" "s/${line}/${rep}/g" web-app-manifest.json
|
|
|
|
# TODO: update last_update
|
|
echo " manifest.json"
|
|
sed -i "" "s/${line}/${rep}/g" manifest.json
|
|
|
|
# TODO: update last_update
|
|
echo " pacman-canvas.webapp"
|
|
sed -i "" "s/${line}/${rep}/g" pacman-canvas.webapp
|
|
|
|
echo " cache.manifest"
|
|
local line="# Pacman .*"
|
|
local rep="# Pacman ${newVersion} ${currentDateTime}"
|
|
sed -i "" "s/${line}/${rep}/g" cache.manifest
|
|
|
|
echo " index.htm"
|
|
local line="<span class=\"app-version\">.*<\/span>"
|
|
local rep="<span class=\"app-version\">${newVersion} (${currentDate})<\/span>"
|
|
sed -i "" "s/${line}/${rep}/g" index.htm
|
|
|
|
echo ""
|
|
echo "All files up to date. New Version ${newVersion} (${currentDateTime})."
|
|
echo "Don't forget to update README.md and to set the git tag."
|
|
}
|
|
|
|
function run {
|
|
# local option="${1}"
|
|
|
|
echo "run ${option}"
|
|
|
|
checkParameters
|
|
|
|
if [[ ${abort} == true ]];
|
|
then
|
|
return
|
|
fi
|
|
|
|
echo "bump version $option"
|
|
|
|
read_current_version
|
|
get_new_version
|
|
|
|
# TODO: user confirmation
|
|
|
|
write_new_version
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region main
|
|
|
|
run
|
|
|
|
#endregion |