whops
parent
75fb079e46
commit
1c4312596e
|
@ -1,346 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#BASEDIR=$(dirname "$0")
|
||||
#cd "$BASEDIR"
|
||||
|
||||
# Set the IDF_PATH environment variable to point to the ESP-IDF installation
|
||||
export IDF_PATH=~/esp/esp-idf
|
||||
|
||||
version_file="version.txt"
|
||||
initial_version="1.0"
|
||||
initProject="false"
|
||||
|
||||
firmware_server_path="./firmwareserver"
|
||||
|
||||
# Function to translate text using translate-shell
|
||||
translate() {
|
||||
text="$1"
|
||||
lang="$2"
|
||||
translation=$(trans -b :"$lang" "$text")
|
||||
echo "$translation"
|
||||
}
|
||||
|
||||
# check if backup file exists and restore it
|
||||
if [ -f "$version_file.backup" ]; then
|
||||
mv "$version_file.backup" "$version_file"
|
||||
fi
|
||||
|
||||
# Check if version file exists
|
||||
if [ -f "$version_file" ]; then
|
||||
current_version=$(cat "$version_file")
|
||||
else
|
||||
echo ""
|
||||
echo ""
|
||||
read -p "Version file not found. Create version.txt with initial version $initial_version? (y/n) " create_new
|
||||
if [ "$create_new" = "y" ]; then
|
||||
echo "$initial_version" >"$version_file"
|
||||
current_version="$initial_version"
|
||||
initProject="true"
|
||||
else
|
||||
echo "Cancelling script."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# check if project is initialized
|
||||
if [ "$initProject" = "true" ]; then
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "Project initialized with version $initial_version"
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
|
||||
else
|
||||
|
||||
# create backup file from version.txt
|
||||
cp "$version_file" "$version_file.backup"
|
||||
|
||||
# Ask user for input
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
read -p "Is this a bugfix update (y/n)? [y]" bug_fixes
|
||||
|
||||
if [ "$bug_fixes" = "y" ] || [ "$bug_fixes" = "" ]; then
|
||||
new_version=$(echo "$current_version + 0.1" | bc)
|
||||
|
||||
else
|
||||
echo ""
|
||||
echo ""
|
||||
read -p "Are there major changes (y/n)? [n]" major_changes
|
||||
|
||||
# Determine the version increment based on user input
|
||||
if [ "$major_changes" = "y" ]; then
|
||||
new_version=$(echo "$current_version + 1.1" | bc)
|
||||
else
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "No version change needed."
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update version in the file
|
||||
echo "$new_version" >"$version_file"
|
||||
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "Update and publish firmware to version: $new_version ..."
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "building project..."
|
||||
echo ""
|
||||
|
||||
. ${IDF_PATH}/export.sh >/dev/null 2>&1
|
||||
|
||||
# Clean the build directory
|
||||
|
||||
#check if passing --clean to script
|
||||
if [ "$1" = "--clean" ]; then
|
||||
echo "cleaning project..."
|
||||
echo ""
|
||||
"$IDF_PATH/tools/idf.py" fullclean
|
||||
fi
|
||||
"$IDF_PATH/tools/idf.py" build
|
||||
|
||||
# Check if the build was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
|
||||
# get project name in cmake file but the file contains multiple project texts
|
||||
project_name=$(grep -oP '(?<=project\().*(?=\))' CMakeLists.txt)
|
||||
|
||||
echo "project name: $project_name"
|
||||
|
||||
# check if project_name.bin file in ./build directory exists
|
||||
if [ -f "./build/$project_name.bin" ]; then
|
||||
echo "firmware file found: $project_name.bin"
|
||||
else
|
||||
echo "firmware file not found: $project_name.bin"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# git get current branch name
|
||||
branch_name=$(git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
# check if folder firmware_server_path exists and create if not exists
|
||||
if [ ! -d "$firmware_server_path" ]; then
|
||||
# promt user to create folder otherwise exit 1
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "Folder $firmware_server_path does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
# check if folder exists and create if not exist in firmware_server_path / project_name
|
||||
if [ ! -d "$firmware_server_path/$project_name" ]; then
|
||||
# promt user to create folder otherwise exit 1
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
read -p "Device $project_name does not exist! Create it? (y/n) " create_folder
|
||||
if [ "$create_folder" = "y" ]; then
|
||||
mkdir -p "$firmware_server_path/$project_name"
|
||||
else
|
||||
echo "Cancelling script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# check if folder exists and create if not exist in firmware_server_path / project_name / branch_name
|
||||
if [ ! -d "$firmware_server_path/$project_name/$branch_name" ]; then
|
||||
# promt user to create folder otherwise exit 1
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
read -p "Branch $branch_name does not exist! Create it? (y/n) " create_folder
|
||||
if [ "$create_folder" = "y" ]; then
|
||||
mkdir -p "$firmware_server_path/$project_name/$branch_name"
|
||||
else
|
||||
echo "Cancelling script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# copy firmware file to firmware_server_path / project_name / branch_name
|
||||
cp "./build/$project_name.bin" "$firmware_server_path/$project_name/$branch_name/firmware$new_version.bin"
|
||||
|
||||
# check if file exists and create one firmware_server_path / project_name / branch_name / info.json
|
||||
if [ ! -f "$firmware_server_path/$project_name/$branch_name/info.json" ]; then
|
||||
# promt user to create folder otherwise exit 1
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
read -p "File info.json does not exist! Create it? (y/n) " create_file
|
||||
if [ "$create_file" = "y" ]; then
|
||||
echo "creating file..."
|
||||
echo ""
|
||||
echo "{" >"$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
echo " \"version\": \"$new_version\"," >>"$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
echo " \"date\": \"$(date)\"" >>"$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
echo "}" >>"$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
else
|
||||
echo "Cancelling script."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# check if ./changelog_en.txt exists If not exists create empty file
|
||||
if [ ! -f "./changelog_en.txt" ]; then
|
||||
echo "creating changelog_en.txt..."
|
||||
echo "" >"./changelog_en.txt"
|
||||
fi
|
||||
|
||||
# read changelog_en.txt
|
||||
changes_en=$(cat "./changelog_en.txt")
|
||||
|
||||
# check if changes_en is empty or contains no letters or numbers
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
|
||||
if [ -z "$changes_en" ] || [ ! -n "$(echo "$changes_en" | sed -e 's/[[:space:]]//g')" ]; then
|
||||
|
||||
echo "Enter quick changes:"
|
||||
echo ""
|
||||
read -p "English: " changes_en
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
else
|
||||
changesFromFile="true"
|
||||
fi
|
||||
|
||||
echo "English changes:"
|
||||
echo "$changes_en"
|
||||
|
||||
changes_de=$(translate "$changes_en" de)
|
||||
echo ""
|
||||
echo "German changes:"
|
||||
echo "$changes_de"
|
||||
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
|
||||
# check if var "changesFromFile" is true
|
||||
|
||||
if [ "$changesFromFile" = "true" ]; then
|
||||
# ask to agree or edit changes
|
||||
read -p "Do you agree with the changes? (y/n) [y]" agree_changes
|
||||
if [ "$agree_changes" != "y" ] && [ "$agree_changes" != "" ]; then
|
||||
echo "Enter changes:"
|
||||
echo ""
|
||||
read -p "English: " changes_en
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "English changes:"
|
||||
echo "$changes_en"
|
||||
echo ""
|
||||
changes_de=$(translate "$changes_en" de)
|
||||
|
||||
echo "German changes:"
|
||||
echo "$changes_de"
|
||||
echo ""
|
||||
changesFromFile="false"
|
||||
fi
|
||||
fi
|
||||
|
||||
# if changes entered ask to agree or discard
|
||||
if [ ! -z "$changes_de" ] || [ ! -z "$changes_en" ]; then
|
||||
if [ "$changesFromFile" != "true" ]; then
|
||||
read -p "Do you agree with the changes? (y/n) " agree_changes
|
||||
fi
|
||||
|
||||
if [ "$changesFromFile" = "true" ] || [ "$agree_changes" = "y" ]; then
|
||||
|
||||
# escape to json in $changes_de and $changes_en
|
||||
changes_de_escaped=$(echo "$changes_de" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
changes_en_escaped=$(echo "$changes_en" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
|
||||
# check if file exists and create one firmware_server_path / project_name / branch_name / changelog.json
|
||||
if [ ! -f "$firmware_server_path/$project_name/$branch_name/changelog.json" ]; then
|
||||
# create file with content {}
|
||||
echo "{}" >"$firmware_server_path/$project_name/$branch_name/changelog.json"
|
||||
fi
|
||||
|
||||
# update version in changelog.json: add {version:{"de": "changes", "en": "changes"}} to the root {}
|
||||
echo "updating changelog.json..."
|
||||
|
||||
new_entry="{\"de\": \"$changes_de_escaped\", \"en\": \"$changes_en_escaped\"}"
|
||||
jq --arg new_version "$new_version" --argjson new_entry "$new_entry" \
|
||||
'. * {($new_version): $new_entry}' \
|
||||
"$firmware_server_path/$project_name/$branch_name/changelog.json" >output.json
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
mv output.json "$firmware_server_path/$project_name/$branch_name/changelog.json"
|
||||
|
||||
#create changelogs folder if not exists
|
||||
if [ ! -d "./changelogs" ]; then
|
||||
mkdir "./changelogs"
|
||||
fi
|
||||
|
||||
if [ "$changesFromFile" = "true" ]; then
|
||||
|
||||
mv "changelog_en.txt" "./changelogs/$project_name-$new_version-en.txt"
|
||||
touch "changelog_en.txt"
|
||||
else
|
||||
# write changes_en to "./changelogs/$project_name-$new_version-en.txt"
|
||||
echo "$changes_en" >"./changelogs/$project_name-$new_version-en.txt"
|
||||
fi
|
||||
else
|
||||
rm output.json
|
||||
echo ""
|
||||
echo ""
|
||||
echo "Error updating changelog.json!!!!"
|
||||
fi
|
||||
|
||||
# translate changes_en to changes_de
|
||||
|
||||
else
|
||||
echo "Cancelling script."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# update version in info.json
|
||||
echo "updating info.json..."
|
||||
|
||||
sed -i "s/\"version\": \".*\"/\"version\": \"$new_version\"/g" "$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
sed -i "s/\"date\": \".*\"/\"date\": \"$(date)\"/g" "$firmware_server_path/$project_name/$branch_name/info.json"
|
||||
|
||||
#remove old version file
|
||||
rm "$version_file.backup"
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "Build successful :-) Firmware published!"
|
||||
|
||||
exit 0
|
||||
else
|
||||
# Restore the version file from backup
|
||||
mv "$version_file.backup" "$version_file"
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
echo ""
|
||||
echo "Build failed. Firmware will NOT be published!"
|
||||
echo ""
|
||||
echo "###############################################"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in New Issue