Pulled in changes from other version I wrote.
+Added refs to flashing +new mocking functions +new menu options.
This commit is contained in:
parent
6771cbadf6
commit
3cfab2eb77
1 changed files with 102 additions and 16 deletions
116
otto.sh
116
otto.sh
|
@ -26,7 +26,6 @@ format_source_code () {
|
||||||
echo "Applying Formating standard!"
|
echo "Applying Formating standard!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
add_compile_commands () {
|
add_compile_commands () {
|
||||||
if [ -f ./compile_commands.json ]; then
|
if [ -f ./compile_commands.json ]; then
|
||||||
echo "compile_commands.json already exists!\n"
|
echo "compile_commands.json already exists!\n"
|
||||||
|
@ -52,6 +51,16 @@ does_module_exist () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
does_mock_exist () {
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
if [ -d "mocks/${basename}" ]; then
|
||||||
|
echo "1"
|
||||||
|
else
|
||||||
|
echo "0"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
add_module_to_cmakes () {
|
add_module_to_cmakes () {
|
||||||
local basename="$1"
|
local basename="$1"
|
||||||
|
@ -60,7 +69,7 @@ add_module_to_cmakes () {
|
||||||
|
|
||||||
# Tests cmake file needs to be edited in place.
|
# 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_DIRS.*$/# TEST_DIRS\r\nadd_subdirectory(${basename})/g" ./tests/CMakeLists.txt
|
||||||
sed -i'' "s/# TEST_LINKS.*$/# TEST_LINKS\r\n\t${basename}/g" ./tests/CMakeLists.txt
|
sed -i'' "s/# TEST_LINKS.*$/# TEST_LINKS\r\n\ttest_${basename}/g" ./tests/CMakeLists.txt
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_module_from_cmakes () {
|
remove_module_from_cmakes () {
|
||||||
|
@ -68,7 +77,7 @@ remove_module_from_cmakes () {
|
||||||
|
|
||||||
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt
|
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt
|
||||||
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt
|
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt
|
||||||
sed -i'' "s/^.*${basename}.*$//g" ./tests/CMakeLists.txt
|
sed -i'' "s/^.*test_${basename}.*$//g" ./tests/CMakeLists.txt
|
||||||
}
|
}
|
||||||
|
|
||||||
git_add_module () {
|
git_add_module () {
|
||||||
|
@ -116,6 +125,50 @@ git_remove_module () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
add_mock_module () {
|
||||||
|
read -p "Enter the name of the module:" modname
|
||||||
|
result=$(does_mock_exist "$modname")
|
||||||
|
|
||||||
|
if [ "${result}" -eq "1" ]; then
|
||||||
|
echo "Module already exists!"
|
||||||
|
echo "Exiting without changing anything"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
|
||||||
|
modsrc_dir="./mocks/${modname}"
|
||||||
|
modtest_dir="./tests/${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
|
||||||
|
|
||||||
|
# Add the module to the cmake lists files.
|
||||||
|
add_module_to_cmakes "${modname}"
|
||||||
|
|
||||||
|
echo "Resulting files/dirs:"
|
||||||
|
tree -L 2 $modsrc_dir
|
||||||
|
tree -L 2 $modtest_dir
|
||||||
|
|
||||||
|
# Now we add the new files to the git tracked files
|
||||||
|
git_add_module "${modname}"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
add_new_module () {
|
add_new_module () {
|
||||||
read -p "Enter the name of the module:" modname
|
read -p "Enter the name of the module:" modname
|
||||||
|
|
||||||
|
@ -177,11 +230,8 @@ cross_compile () {
|
||||||
|
|
||||||
build_release() {
|
build_release() {
|
||||||
clear_cmake_cache
|
clear_cmake_cache
|
||||||
CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE}"
|
cmake -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||||
CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${WCH_TC}"
|
make
|
||||||
|
|
||||||
cmake ${CMAKE_ARGS} ../
|
|
||||||
make main
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build_main () {
|
build_main () {
|
||||||
|
@ -190,19 +240,50 @@ build_main () {
|
||||||
make main
|
make main
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_hex () {
|
||||||
|
clear_cmake_cache
|
||||||
|
|
||||||
|
CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE}"
|
||||||
|
CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${WCH_TC}"
|
||||||
|
|
||||||
|
cmake ${CMAKE_ARGS} ../
|
||||||
|
make all
|
||||||
|
make hex
|
||||||
|
}
|
||||||
|
|
||||||
|
build_hex_optimized () {
|
||||||
|
clear_cmake_cache
|
||||||
|
|
||||||
|
CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE}"
|
||||||
|
CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${WCH_TC}"
|
||||||
|
|
||||||
|
cmake ${CMAKE_ARGS} ../
|
||||||
|
make all
|
||||||
|
make hex-release
|
||||||
|
}
|
||||||
|
|
||||||
|
flash_microcontroller () {
|
||||||
|
build_hex_optimized
|
||||||
|
make upload
|
||||||
|
}
|
||||||
|
|
||||||
run_c_tests () {
|
run_c_tests () {
|
||||||
format_source_code
|
format_source_code
|
||||||
clear_cmake_cache
|
clear_cmake_cache
|
||||||
cmake -DUNIT_TESTING=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
cmake -DUNIT_TESTING=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||||
make AllTests && ./tests/AllTests -c -v
|
make AllTests
|
||||||
|
make Mock_Tests
|
||||||
|
./tests/AllTests -v -c
|
||||||
|
./tests/Mock_Tests -v -c
|
||||||
}
|
}
|
||||||
|
|
||||||
print_menu () {
|
print_menu () {
|
||||||
echo "BUILD MENU:"
|
echo "BUILD MENU:"
|
||||||
|
echo "0. Add Mock Module"
|
||||||
echo "1. Run Tests"
|
echo "1. Run Tests"
|
||||||
echo "2. Build Project"
|
echo "2. Build Project(hex)"
|
||||||
echo "3. Build for release"
|
echo "3. Build for release(hex)"
|
||||||
echo "4. cross compile for XXXXXX"
|
echo "4. Flash to MicroController"
|
||||||
echo "5. Add new module to project"
|
echo "5. Add new module to project"
|
||||||
echo "6. Delete module from project"
|
echo "6. Delete module from project"
|
||||||
echo "7. Exit"
|
echo "7. Exit"
|
||||||
|
@ -218,6 +299,11 @@ main() {
|
||||||
read -p "Enter your choice: " choice
|
read -p "Enter your choice: " choice
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
|
0)
|
||||||
|
echo "You selected Option 0"
|
||||||
|
valid_choice=true
|
||||||
|
add_mock_module
|
||||||
|
;;
|
||||||
1)
|
1)
|
||||||
echo "You selected Option 1"
|
echo "You selected Option 1"
|
||||||
valid_choice=true
|
valid_choice=true
|
||||||
|
@ -226,17 +312,17 @@ main() {
|
||||||
2)
|
2)
|
||||||
echo "You selected Option 2"
|
echo "You selected Option 2"
|
||||||
valid_choice=true
|
valid_choice=true
|
||||||
build_main
|
build_hex
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
echo "You selected Option 3"
|
echo "You selected Option 3"
|
||||||
valid_choice=true
|
valid_choice=true
|
||||||
build_release
|
build_hex_optimized
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
echo "You selected Option 4"
|
echo "You selected Option 4"
|
||||||
valid_choice=true
|
valid_choice=true
|
||||||
cross_compile
|
flash_microcontroller
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
echo "You selected Option 5"
|
echo "You selected Option 5"
|
||||||
|
|
Loading…
Add table
Reference in a new issue