fixed and tested otto script on FreeBSD

This commit is contained in:
Jake Goodwin 2025-12-22 19:27:00 -08:00
parent fd03292660
commit 56140d0bba

63
otto.sh
View file

@ -8,6 +8,7 @@ CMAKE_VERBOSE="ON"
CROSS_COMPILE=1
TEMPLATE_FILES=".template_files"
MODULE_DIR="${TEMPLATE_FILES}/modules"
TEST_MODULE_DIR="${TEMPLATE_FILES}/test_module"
CHIP="ch32v003"
generate_tags_file () {
@ -86,12 +87,12 @@ does_mock_exist () {
add_module_to_cmakes () {
local basename="$1"
echo "add_module_to_cmakes()"
echo "add_subdirectory(${basename})" >> ./src/CMakeLists.txt
# Tests cmake file needs to be edited in place.
sed -i'' "s/# TEST_DIRS.*$/# TEST_DIRS\r\nadd_subdirectory(${basename})/g" ./tests/CMakeLists.txt
sed -i'' "s/# TEST_LINKS.*$/# TEST_LINKS\r\n\ttest_${basename}/g" ./tests/CMakeLists.txt
sed -i '' -e "s|# TEST_DIRS.*$|# TEST_DIRS\nadd_subdirectory(${basename})|" ./tests/CMakeLists.txt
sed -i '' -e "s|# TEST_LINKS.*$|# TEST_LINKS\ntest_${basename}|" ./tests/CMakeLists.txt
}
remove_module_from_cmakes () {
@ -157,7 +158,8 @@ add_mock_module () {
exit
fi
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
# modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
modname_cap="${modname}"
modsrc_dir="./mocks/${modname}"
modtest_dir="./tests/${modname}"
@ -167,17 +169,19 @@ add_mock_module () {
#copy the template files.
echo "copying & customizing template files..."
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c
sed -i'' "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
sed -i'' "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h
echo "Creating src files..."
sed "s/module_name/${modname}/g" "${MODULE_DIR}/module_name.c" > ${modsrc_dir}/${modname}.c
sed -i'' "3s/todays_date/$(date +%Y)/" "${modsrc_dir}/${modname}.c"
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
sed "s/module_name/${modname_cap}/g" "${MODULE_DIR}/module_name.h" > ${modsrc_dir}/${modname}.h
sed -i'' "3s/todays_date/$(date +%Y)/" "${modsrc_dir}/${modname}.h"
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.cpp > $modtest_dir/test_${modname}.cpp
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
sed "s/module_name/${modname}/g" "${MODULE_DIR}/CMakeLists.txt" > ${modsrc_dir}/CMakeLists.txt
echo "Creating test files..."
sed "s/module_name/${modname}/g" "${MODULE_DIR}/test_module_name.cpp" > ${modtest_dir}/test_${modname}.cpp
sed "s/module_name/${modname}/g" "$MODULE_DIR/TestCMakeLists.txt" > ${modtest_dir}/CMakeLists.txt
# Add the module to the cmake lists files.
add_module_to_cmakes "${modname}"
@ -202,28 +206,39 @@ add_new_module () {
exit
fi
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
#modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
modname_cap="${modname}"
modsrc_dir="./src/${modname}"
modtest_dir="./tests/${modname}"
echo "modname_cap: ${modname_cap}"
echo "modname: ${modname}"
echo "creating: ${modsrc_dir}, ${modtest_dir}"
mkdir $modsrc_dir
mkdir $modtest_dir
#copy the template files.
echo "copying & customizing template files..."
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c
sed -i'' "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
sed -i'' "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.cpp > $modtest_dir/test_${modname}.cpp
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
echo "Creating src files..."
sed -e "s/module_name/${modname}/g" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c
sed -i '' -e "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c
sed -e "s/module_name/${modname_cap}/g" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
sed -i '' -e "5s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h
sed -e "s/module_name/${modname}/" ${MODULE_DIR}/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
echo "Creating test files..."
sed -e "s/module_name/${modname}/g" ${TEST_MODULE_DIR}/test_module_name.cpp > ${modtest_dir}/test_${modname}.cpp
sed -e "s/module_name/${modname}/g" ${TEST_MODULE_DIR}/CMakeLists.txt > ${modtest_dir}/CMakeLists.txt
cp -r ${TEST_MODULE_DIR}/mocks ${modtest_dir}/
cp -r ${TEST_MODULE_DIR}/fakes ${modtest_dir}/
cp -r ${TEST_MODULE_DIR}/stubs ${modtest_dir}/
# Add the module to the cmake lists files.
add_module_to_cmakes "${modname}"