59 lines
2.1 KiB
Bash
Executable File
59 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Directory containing the files
|
|
input_directory="Resources"
|
|
|
|
# Output C++ header file for variable declarations
|
|
output_header="Nuake/src/Resource/StaticResources.h"
|
|
|
|
# Output C++ source file for data storage
|
|
output_source="Nuake/src/Resource/StaticResources.cpp"
|
|
|
|
# Remove existing header and source files (if any)
|
|
rm -f "$output_header" "$output_source"
|
|
|
|
# Create the C++ header file with an initial guard
|
|
echo "#ifndef FILES_DATA_H" >> "$output_header"
|
|
echo "#define FILES_DATA_H" >> "$output_header"
|
|
|
|
echo "#include <string> " >> "$output_header"
|
|
|
|
echo "namespace Nuake { " >> "$output_header"
|
|
echo " namespace StaticResources { " >> "$output_header"
|
|
|
|
# Create the C++ source file
|
|
echo "#include \"StaticResources.h\"" >> "$output_source"
|
|
|
|
echo "namespace Nuake { " >> "$output_source"
|
|
echo " namespace StaticResources { " >> "$output_source"
|
|
# Use find to search for files in the directory and its subdirectories
|
|
find "$input_directory" -type f -print0 | while IFS= read -r -d $'\0' file_path; do
|
|
# Get the relative path of the file within the input_directory
|
|
relative_path="${file_path/}"
|
|
|
|
# Sanitize the relative path to make it suitable for C++ variable names
|
|
sanitized_path="${relative_path//[^[:alnum:]_]/_}"
|
|
|
|
# Generate C++ variable declarations for file path and size
|
|
echo "extern const std::string ${sanitized_path}_path;" >> "$output_header"
|
|
echo "extern unsigned int ${sanitized_path}_len;" >> "$output_header"
|
|
echo "extern unsigned char ${sanitized_path}[];" >> "$output_header"
|
|
|
|
# Append C++ code to the source file for storing file data
|
|
echo -e "\n// Data for file: ${sanitized_path}_path" >> "$output_source"
|
|
echo "const std::string ${sanitized_path}_path = R\"(${relative_path})\";" >> "$output_source"
|
|
|
|
xxd -i "$file_path" | sed -e 's/^/ /' >> "$output_source"
|
|
done
|
|
|
|
echo " }" >> "$output_source"
|
|
echo "}">> "$output_source"
|
|
|
|
echo " }" >> "$output_header"
|
|
echo "}">> "$output_header"
|
|
|
|
# Close the header file guard
|
|
echo "#endif // FILES_DATA_H" >> "$output_header"
|
|
|
|
echo "Header file '$output_header' generated with variable declarations."
|
|
echo "Source file '$output_source' generated with file data." |