cdcec22e60
* Version compiled FW with hash Auto generates a macro to type out version info, local and github compilation now includes commit hash and timestamp in final uf2 files * Fix local builds makefile doesn't like the script returning the macro, directed to null for local builds as version.dtsi file accessible
58 lines
1.8 KiB
Bash
Executable File
58 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Get the date, first 4 chars of branch name and short commit hash
|
|
date=$(date -u +"%Y%m%d")
|
|
branch=${1:-$(git rev-parse --abbrev-ref HEAD | cut -c1-4)}
|
|
commit=${2:-$(git rev-parse --short HEAD)}
|
|
|
|
# Function to transform characters to ZMK key behaviours
|
|
transform_char() {
|
|
local char=$1
|
|
if [[ $char =~ [A-Za-z] ]]; then
|
|
echo "<&kp ${char^^}>, "
|
|
elif [[ $char =~ [0-9] ]]; then
|
|
echo "<&kp N${char}>, "
|
|
elif [ "$char" = "." ]; then
|
|
echo "<&kp DOT>, "
|
|
fi
|
|
}
|
|
|
|
# Iterate over the date and format characters
|
|
formatted_date=""
|
|
for ((i = 0; i < ${#date}; i++)); do
|
|
formatted_date+=$(transform_char "${date:$i:1}")
|
|
done
|
|
|
|
# Insert separator between date and branch
|
|
formatted_date+="<&kp MINUS>, "
|
|
|
|
# Iterate over the branch and format characters
|
|
formatted_branch=""
|
|
for ((i = 0; i < ${#branch}; i++)); do
|
|
formatted_branch+=$(transform_char "${branch:$i:1}")
|
|
done
|
|
|
|
# Insert separator between branch and commit hash
|
|
formatted_branch+="<&kp MINUS>, "
|
|
|
|
# Iterate over the commit hash and format characters
|
|
formatted_commit=""
|
|
for ((i = 0; i < ${#commit}; i++)); do
|
|
formatted_commit+=$(transform_char "${commit:$i:1}")
|
|
done
|
|
|
|
# Combine the formatted string, add trailing carriage return
|
|
formatted_result="$formatted_date$formatted_branch$formatted_commit"
|
|
formatted_result+="<&kp RET>"
|
|
|
|
echo $formatted_result
|
|
# Create new macro to define version, overwrite previous one
|
|
|
|
echo '#define VERSION_MACRO' > "config/version.dtsi"
|
|
echo 'macro_ver: macro_ver {' >> "config/version.dtsi"
|
|
echo 'compatible = "zmk,behavior-macro";' >> "config/version.dtsi"
|
|
echo 'label = "macro_ver";' >> "config/version.dtsi"
|
|
echo '#binding-cells = <0>;' >> "config/version.dtsi"
|
|
echo "bindings = $formatted_result;" >> "config/version.dtsi"
|
|
echo '};' >> "config/version.dtsi"
|