qmk_userspace/build_all.sh

130 lines
6.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# Complete firmware builder for fingerpunch/sweeeeep with Liatris
# Builds three versions:
# 1. Regular firmware (for normal use after handedness is set)
# 2. LEFT handedness initialization firmware
# 3. RIGHT handedness initialization firmware
set -e # Exit on error
KEYBOARD="fingerpunch/sweeeeep"
KEYMAP="smathev"
OUTPUT_NAME="fingerpunch_sweeeeep_smathev"
QMK_USERSPACE_DIR="$HOME/git_dev/keyboards/qmk_userspace"
CONFIG_FILE="$HOME/git_dev/keyboards/qmk_userspace/keyboards/fingerpunch/sweeeeep/keymaps/smathev/config.h"
BACKUP_FILE="${CONFIG_FILE}.backup"
QMK_FIRMWARE_DIR="$HOME/git_dev/keyboards/qmk_firmware"
OUTPUT_DIR="$HOME/git_dev/keyboards/latest_firmware"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🔨 Building ALL firmware versions for $KEYBOARD"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "⚙️ Keyboard: $KEYBOARD"
echo "⚙️ Keymap: $KEYMAP"
echo "⚙️ Controller: Liatris (RP2040)"
echo ""
# Clean build
echo "🧹 Cleaning previous build..."
qmk clean > /dev/null 2>&1
echo ""
# ============================================================================
# 1. Build REGULAR firmware (for normal use)
# ============================================================================
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📦 [1/3] Building REGULAR firmware..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
if [ $? -eq 0 ]; then
cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}.uf2"
echo "✅ Regular firmware: ${OUTPUT_NAME}.uf2"
else
echo "❌ Regular firmware build failed!"
exit 1
fi
echo ""
# Backup original config for handedness builds
cp "$CONFIG_FILE" "$BACKUP_FILE"
# ============================================================================
# 2. Build LEFT handedness initialization firmware
# ============================================================================
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📍 [2/3] Building LEFT hand initialization firmware..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Add INIT_EE_HANDS_LEFT to config
sed -i '/^#define EE_HANDS/a #define INIT_EE_HANDS_LEFT' "$CONFIG_FILE"
qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
if [ $? -eq 0 ]; then
cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_LEFT.uf2"
echo "✅ LEFT hand firmware: ${OUTPUT_NAME}_LEFT.uf2"
else
echo "❌ LEFT hand build failed!"
cp "$BACKUP_FILE" "$CONFIG_FILE"
rm "$BACKUP_FILE"
exit 1
fi
# Restore config
cp "$BACKUP_FILE" "$CONFIG_FILE"
echo ""
# ============================================================================
# 3. Build RIGHT handedness initialization firmware
# ============================================================================
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📍 [3/3] Building RIGHT hand initialization firmware..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Add INIT_EE_HANDS_RIGHT to config
sed -i '/^#define EE_HANDS/a #define INIT_EE_HANDS_RIGHT' "$CONFIG_FILE"
qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
if [ $? -eq 0 ]; then
cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_RIGHT.uf2"
echo "✅ RIGHT hand firmware: ${OUTPUT_NAME}_RIGHT.uf2"
else
echo "❌ RIGHT hand build failed!"
cp "$BACKUP_FILE" "$CONFIG_FILE"
rm "$BACKUP_FILE"
exit 1
fi
# Restore original config
cp "$BACKUP_FILE" "$CONFIG_FILE"
rm "$BACKUP_FILE"
echo "removing $QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2"
rm "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2"
echo "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2 removed successfully"
echo "removing $QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2"
rm "$QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2"
echo "$QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2 removed successfully"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🎉 ALL FIRMWARE FILES BUILT SUCCESSFULLY!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📁 Files created:"
ls -lh "$OUTPUT_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_LEFT.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_RIGHT.uf2"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📝 USAGE GUIDE:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "🔧 FIRST-TIME SETUP (Set handedness in EEPROM):"
echo " 1. Flash ${OUTPUT_NAME}_LEFT.uf2 to LEFT keyboard half"
echo " 2. Flash ${OUTPUT_NAME}_RIGHT.uf2 to RIGHT keyboard half"
echo " 3. Only do this ONCE to initialize handedness"
echo ""
echo "🔄 REGULAR UPDATES (After handedness is set):"
echo " 1. Flash ${OUTPUT_NAME}.uf2 to BOTH keyboard halves"
echo " 2. Handedness is preserved in EEPROM"
echo " 3. Either half can be plugged in as master"
echo ""
echo "💡 TIP: To enter bootloader, double-tap RESET on Liatris"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"