Skip to content

Commit

Permalink
Updated, but not yet tested script
Browse files Browse the repository at this point in the history
  • Loading branch information
PilnyTomas authored and me-no-dev committed Oct 5, 2023
1 parent dba0e5b commit b547648
Showing 1 changed file with 138 additions and 62 deletions.
200 changes: 138 additions & 62 deletions tools/add_lib.sh
Original file line number Diff line number Diff line change
@@ -1,72 +1,148 @@
#!/bin/bash
LIBRARY=""
HELP="This script help to add library when using arduino-esp32 as an ESP-IDF component
The script accepts up to three arguments:
-n NEW: URL address to new library on GIThub (cannot be combined with -e)
-l LOCAL: Path to the project where the library should be placed locally
-e EXISTING: path to existing libary- this will simply skip the download (cannot be combined with -n)
#TODO project library: -p path_to/project
Examples:
./add_lib.sh -n https://github.com/me-no-dev/ESPAsyncWebServer
./add_lib.sh -l ~/esp/esp-idf/examples/your_project
./add_lib.sh -e ~/Arduino/libraries/existing_library
./add_lib.sh -n https://github.com/me-no-dev/ESPAsyncWebServer -l ~/esp/esp-idf/examples/your_project
./add_lib.sh -e ~/Arduino/libraries/existing_library -l ~/esp/esp-idf/examples/your_project"

# this is for new lib: [-n <git-link>]
# Get the directory name where this script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

# Construct the absolute path to libraries folder
LIBS_PATH="$SCRIPT_DIR/../libraries"

# Use $LIBS_PATH variable to clone new lib, regardless of where the script is run from.
echo "Cloning: git clone --recursive $1 $LIBS_PATH/Firebase-ESP32"
git clone --recursive $1 $LIBS_PATH/Firebase-ESP32

LIBRARY=$LIBS_PATH/Firebase-ESP32




# get the CMakelists right

ARDUINO_LIBS_PATH="$SCRIPT_DIR/../libraries"

# Define the default values for the parameters
e_param=""
l_param=""
n_param=""

# Parse the command-line arguments using getopts
while getopts "he:l:n:" opt; do
case $opt in
h)
echo "$HELP"
exit 0
;;
e)
#e_param="$OPTARG"
e_param="${OPTARG/#~/$HOME}"
;;
l)
#l_param="$OPTARG"
l_param="${OPTARG/#~/$HOME}"
;;
n)
n_param=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
echo $HELP
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
echo $HELP
exit 1
;;
esac
done

# Debug Print the parameters
echo "e_param: $e_param"
echo "l_param: $l_param"
echo "n_param: $n_param"

# No parameter check
if [[ -z "$e_param" ]] && [[ -z "$e_param" ]] && [[ -z "$e_param" ]]; then
echo "Error: No parameters" >&2
echo "$HELP"
exit 1

# Invalid combination check
if [[ ! -z $e_param ]] && [[ ! -z $n_param ]]; then
echo "ERROR: Cannot combine -n with -e" >&2
echo "$HELP"
exit 1
fi
fi

# Check existing lib
if [[ ! -z "$e_param" ]]; then
echo "DEBUG: existing lib parameter supplied"
if [[ ! -d "${e_param/#~/$HOME}" ]]; then # this works!
echo "Error: existing library parameter - path does not exist" >&2
exit 1
fi
fi

exit # Script is not yet finished and tested - use at your own risk!

LIBRARY=""







# local:
#Modify your main\CMakeLists.txt to this:
#
#idf_component_register(
# SRC_DIRS "."
# "libraries/Firebase-ESP32/src"
# "libraries/Firebase-ESP32/src/addons"
# "libraries/Firebase-ESP32/src/json"
# "libraries/Firebase-ESP32/src/json/extras/print"
# "libraries/Firebase-ESP32/src/json/MB_JSON"
# "libraries/Firebase-ESP32/src/mbfs"
# "libraries/Firebase-ESP32/src/rtdb"
# "libraries/Firebase-ESP32/src/rtdb/stream"
# "libraries/Firebase-ESP32/src/session"
# "libraries/Firebase-ESP32/src/signer"
# "libraries/Firebase-ESP32/src/sslclient/esp32"
# "libraries/Firebase-ESP32/src/wcs"
# "libraries/Firebase-ESP32/src/wcs/base"
# "libraries/Firebase-ESP32/src/wcs/custom"
# "libraries/Firebase-ESP32/src/wcs/esp32"
#
#
# INCLUDE_DIRS "."
# "libraries/Firebase-ESP32/src"
# "libraries/Firebase-ESP32/src/addons"
# "libraries/Firebase-ESP32/src/json"
# "libraries/Firebase-ESP32/src/json/extras/print"
# "libraries/Firebase-ESP32/src/json/MB_JSON"
# "libraries/Firebase-ESP32/src/mbfs"
# "libraries/Firebase-ESP32/src/rtdb"
# "libraries/Firebase-ESP32/src/rtdb/stream"
# "libraries/Firebase-ESP32/src/session"
# "libraries/Firebase-ESP32/src/signer"
# "libraries/Firebase-ESP32/src/sslclient/esp32"
# "libraries/Firebase-ESP32/src/wcs"
# "libraries/Firebase-ESP32/src/wcs/base"
# "libraries/Firebase-ESP32/src/wcs/custom"
# "libraries/Firebase-ESP32/src/wcs/esp32"
#)

# Install new lib
if [ ! -z $n_param ]; then
INSTALL_TARGET=""
if [ -z $l_param ]; then
# If local path for project is not supplied - use as INSTALL_TARGET Arduino libraries path
INSTALL_TARGET=$($ARDUINO_LIBS_PATH/$(basename "$n_param"))
else
INSTALL_TARGET=$l_param/components/$(basename "$n_param")
fi

# clone the new lib
echo "Cloning: git clone --recursive $n_param $INSTALL_TARGET"
git clone --recursive $n_param $INSTALL_TARGET
LIBRARY=$INSTALL_TARGET
fi

# Copy existing lib to local project
if [[ ! -z $e_param ]] && [[ ! -z $l_param ]]; then
echo "Copy from $e_param to $l_param"
echo "cp -r $e_param $l_param/components/$(basename "$e_param")"
cp -r $e_param $l_param/components/$(basename "$e_param")
LIBRARY=$l_param/components/$(basename "$e_param")
fi

# If Local target was supplied use that path, otherwise use Arduino path
#if [ ! -z $l_param ]; then
# echo "DEBUG: Local lib path"
# if [ ! -z $e_param ]; then
# echo "DEBUG: from existing"
# LIBRARY=$l_param/components/$(basename "$e_param")
# elif [ ! -z $n_param ]; then
# echo "DEBUG: from new"
#LIBRARY=$INSTALL_TARGET
# fi
#else
# echo "DEBUG: Arduino lib path"
# LIBRARY=$($ARDUINO_LIBS_PATH/$(basename "$n_param"))
#fi

echo "DEBUG: LIBRARY: $LIBRARY"


if [ -z LIBRARY ]; then
echo "ERROR: No library -e" >&2
exit 1
fi

# Generate CMakeLists.txt

# 1. get the source list:
FILES=$(find $LIBRARY -name '*.c' -o -name '*.cpp' | xargs -I{} basename {})
echo "DEBUG: source files:"
echo "$FILES"

rm $LIBRARY/CMakeLists.txt # Fresh start
echo "idf_component_register(SRCS $(echo $FILES | sed -e 's/ /" "/g' | sed -e 's/^/"/' -e 's/$/"/')" >> $LIBRARY/CMakeLists.txt
echo " INCLUDE_DIRS \".\"" >> $LIBRARY/CMakeLists.txt
echo " REQUIRES \"arduino-esp32\"" >> $LIBRARY/CMakeLists.txt
echo " )" >> $LIBRARY/CMakeLists.txt

0 comments on commit b547648

Please sign in to comment.