80 lines
2.0 KiB
Bash
80 lines
2.0 KiB
Bash
#!/bin/sh
|
|
|
|
# shmake_module.sh - Module creation for shmake
|
|
# Author: Emilia Marigold
|
|
|
|
add_module()
|
|
{
|
|
check_project_root
|
|
|
|
if [ $# -lt 1 ]; then
|
|
printf "Usage: %s module [name]\n" "$SCRIPT_NAME"
|
|
exit 1
|
|
fi
|
|
|
|
MODULE_NAME="$1"
|
|
MODULE_DIR="source_code/MODULE_${MODULE_NAME}"
|
|
MODULE_NAME_UPPER=$(printf "%s" "$MODULE_NAME" | tr '[:lower:]' '[:upper:]')
|
|
|
|
printf "Creating module '%s'...\n" "$MODULE_NAME"
|
|
|
|
mkdir -p "$MODULE_DIR"
|
|
mkdir -p "$MODULE_DIR/internal"
|
|
mkdir -p "$MODULE_DIR/tests"
|
|
|
|
cat > "$MODULE_DIR/${MODULE_NAME}.h" << EOF
|
|
#ifndef ${MODULE_NAME_UPPER}_H
|
|
#define ${MODULE_NAME_UPPER}_H
|
|
|
|
/* Function declarations */
|
|
|
|
#endif /* ${MODULE_NAME_UPPER}_H */
|
|
EOF
|
|
|
|
cat > "$MODULE_DIR/${MODULE_NAME}.c" << EOF
|
|
#include "${MODULE_NAME}.h"
|
|
|
|
/* Function implementations */
|
|
|
|
EOF
|
|
|
|
cat > "$MODULE_DIR/internal/${MODULE_NAME}_internal.h" << EOF
|
|
#ifndef ${MODULE_NAME_UPPER}_INTERNAL_H
|
|
#define ${MODULE_NAME_UPPER}_INTERNAL_H
|
|
|
|
/* Internal function declarations (not exposed in public header) */
|
|
|
|
#endif /* ${MODULE_NAME_UPPER}_INTERNAL_H */
|
|
EOF
|
|
|
|
cat > "$MODULE_DIR/internal/${MODULE_NAME}_internal.c" << EOF
|
|
#include "${MODULE_NAME}_internal.h"
|
|
#include "../${MODULE_NAME}.h"
|
|
|
|
/* Internal function implementations */
|
|
|
|
EOF
|
|
|
|
cat > "$MODULE_DIR/tests/${MODULE_NAME}_test.h" << EOF
|
|
#ifndef ${MODULE_NAME_UPPER}_TEST_H
|
|
#define ${MODULE_NAME_UPPER}_TEST_H
|
|
|
|
/* Test function declarations */
|
|
|
|
#endif /* ${MODULE_NAME_UPPER}_TEST_H */
|
|
EOF
|
|
|
|
cat > "$MODULE_DIR/tests/${MODULE_NAME}_test.c" << EOF
|
|
#include "${MODULE_NAME}_test.h"
|
|
#include "../${MODULE_NAME}.h"
|
|
|
|
/* Test implementations */
|
|
|
|
EOF
|
|
|
|
printf "Module '%s' created successfully!\n" "$MODULE_NAME"
|
|
printf " Location: %s\n" "$MODULE_DIR"
|
|
printf " Next: Add your implementation to the .c files.\n"
|
|
printf " Run 'shmake sync' after adding source files to update Makefile.\n"
|
|
}
|