mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 16:43:36 +00:00
concat of code
This commit is contained in:
76
paper/concat_code.sh
Executable file
76
paper/concat_code.sh
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/bin/bash
|
||||
# Script to concatenate all code from source directories for LaTeX inclusion
|
||||
|
||||
OUTPUT_FILE="paper/build/concatenated_code.tex"
|
||||
PROJECT_ROOT="/home/velocitatem/Documents/Projects/PHANTOM"
|
||||
|
||||
# Create output directory if it doesn't exist
|
||||
mkdir -p "$(dirname "$OUTPUT_FILE")"
|
||||
|
||||
# Clear the output file
|
||||
> "$OUTPUT_FILE"
|
||||
|
||||
# Function to add a file to the concatenated output
|
||||
add_file() {
|
||||
local filepath="$1"
|
||||
local relpath="${filepath#$PROJECT_ROOT/}"
|
||||
|
||||
# Get file extension
|
||||
local ext="${filepath##*.}"
|
||||
|
||||
# Map extensions to listings language
|
||||
case "$ext" in
|
||||
py) lang="Python" ;;
|
||||
js|jsx|ts|tsx) lang="JavaScript" ;;
|
||||
sh) lang="bash" ;;
|
||||
yml|yaml) lang="Python" ;;
|
||||
Dockerfile) lang="bash" ;;
|
||||
*) lang="" ;;
|
||||
esac
|
||||
|
||||
# Add section header and code listing
|
||||
echo "\\subsection{${relpath}}" >> "$OUTPUT_FILE"
|
||||
if [ -n "$lang" ]; then
|
||||
echo "\\begin{lstlisting}[language=${lang},caption={${relpath}}]" >> "$OUTPUT_FILE"
|
||||
else
|
||||
echo "\\begin{lstlisting}[caption={${relpath}}]" >> "$OUTPUT_FILE"
|
||||
fi
|
||||
cat "$filepath" >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
echo "\\end{lstlisting}" >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
}
|
||||
|
||||
# Add header
|
||||
cat >> "$OUTPUT_FILE" << 'EOF'
|
||||
% Auto-generated code concatenation
|
||||
% DO NOT EDIT MANUALLY - Generated by concat_code.sh
|
||||
|
||||
\section{Source Code}
|
||||
|
||||
EOF
|
||||
|
||||
# Process each directory
|
||||
echo "Concatenating code from source directories..."
|
||||
|
||||
# Backend
|
||||
find "$PROJECT_ROOT/backend" -type f \( -name "*.py" -o -name "*.js" -o -name "*.sh" -o -name "*.yml" -o -name "*.yaml" \) | sort | while read -r file; do
|
||||
add_file "$file"
|
||||
done
|
||||
|
||||
# Experiments
|
||||
find "$PROJECT_ROOT/experiments" -type f \( -name "*.py" -o -name "*.js" -o -name "*.sh" -o -name "*.yml" -o -name "*.yaml" \) | sort | while read -r file; do
|
||||
add_file "$file"
|
||||
done
|
||||
|
||||
# Docker
|
||||
find "$PROJECT_ROOT/docker" -type f \( -name "*.py" -o -name "*.sh" -o -name "*.yml" -o -name "*.yaml" -o -name "Dockerfile*" \) | sort | while read -r file; do
|
||||
add_file "$file"
|
||||
done
|
||||
|
||||
# Web/src
|
||||
find "$PROJECT_ROOT/web/src" -type f \( -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" \) | sort | while read -r file; do
|
||||
add_file "$file"
|
||||
done
|
||||
|
||||
echo "Code concatenation complete: $OUTPUT_FILE"
|
||||
Reference in New Issue
Block a user