Pass global #define at run time

This is the whole script.

It does a bunch of stuff:

  • generates the git tags for various sub projects, and exports the defines
  • builds all the web based material using gulp which also copies it to the data folder
  • goes through each parameter passed into the script to clean, build and copy the results to a server on my network that acts as the update gateway.
#!/bin/bash

CURRENT=$(pwd)
set -e

echo "PWD = $CURRENT"
MY_PATH=`dirname "$0"`
FULL_PATH=$PWD

BUILD_NAME_VARIABLE="MyMelvanimate"

pushd .

ver=`git describe --tags --always`
ver_define=`echo $ver | tr "[:lower:].-" "[:upper:]_"`
MYMELGIT="\"0x`git rev-parse --short=8 HEAD 2>/dev/null`\""
cd $FULL_PATH/lib/ESPmanager/src
MANGIT="\"0x`git rev-parse --short=8 HEAD 2>/dev/null`\""
cd $FULL_PATH/lib/Melvanimate/src
MELGIT="\"0x`git rev-parse --short=8 HEAD 2>/dev/null`\""
#pushd $MY_PATH
popd

echo $MYMELGIT $MANGIT $MELGIT

export PLATFORMIO_BUILD_FLAGS="-DMY_MELVANIMATE_GIT_TAG=$MYMELGIT -DESPMANAGER_GIT_TAG=$MANGIT -DMELVANIMATE_GIT_TAG=$MELGIT"

for var in "$@"
do
    rm -rf ./tmp.package
    mkdir -pv ./tmp.package
    echo "Building $var"
    platformio run -e $var -t clean
    platformio run -e $var -t idedata
    platformio run -e $var 
    cp -r -v $CURRENT/$BUILD_NAME_VARIABLE/data $CURRENT/tmp.package/data
    cp $CURRENT/.pioenvs/$var/firmware.bin $CURRENT/tmp.package/data
    python $CURRENT/buildmanifest.py $CURRENT/tmp.package/data ./tmp.package/manifest.json
    cp $CURRENT/.pioenvs/$var/firmware.elf $CURRENT/tmp.package/
    ssh  -p 22  -i ~/.ssh/travis travis@192.168.1.42 "rm -rf ~/projects/sticilface/local/$BUILD_NAME_VARIABLE/$var/"
    ssh  -p 22  -i ~/.ssh/travis travis@192.168.1.42 "mkdir -p ~/projects/sticilface/local/$BUILD_NAME_VARIABLE/$var/"
    scp  -P 22  -i ~/.ssh/travis -rp $CURRENT/tmp.package/. "travis@192.168.1.42:~/projects/sticilface/local/$BUILD_NAME_VARIABLE/$var/"
done

no experience with windows I’m afraid