#!/bin/bash set -x # Function to check if a directory exists and create it if not ensure_directory_exists() { local dir_path="$1" local output_file="$2" echo "*** adding mkdir -p $dir_path to the conf_print file" echo -e "\nmkdir -p debian/$(basename $dir_path)\n" >>"$output_file" echo "calling generate_functions() on $dir_path" generate_functions "$dir_path" "$output_file" } # Function to generate functions for text files in a directory generate_functions() { local directory=$1 local output_file=$2 for item in "$directory"/*; do # Use the file command to determine the type of the item item_type=$(file --mime-type -b "$item") if [[ "$item_type" =~ directory ]]; then # If the item is a directory, recursively call generate_functions on it ensure_directory_exists "$item" "$output_file" elif [[ "$item_type" =~ ^text/.* ]]; then # If the item is a text file, proceed with generating functions local filename=$(basename "$item") local function_name="conf_print_$(echo "$filename" | tr -c '[:alnum:]' '_')" function_name=${function_name%_} local heredoc=$( cat <<-EOF $function_name() { cat <<-'FOE' $(cat "$item") FOE } EOF ) echo "$heredoc" >>"$output_file" echo "# $function_name | tee $directory/$filename >/dev/null" >>"$output_file" fi done } # Main script execution if [ "$#" -ne 2 ]; then echo "Usage: $0 " exit 1 fi directory=$1 output_file=$2 if [[ -f ${output_file} ]]; then echo "Appending to ${output_file}" else echo "Creating ${output_file}" echo -e "#!/usr/bin/env bash\n" >${output_file} tree -L 6 ${directory} | while read -r line; do echo "# $line"; done >>${output_file} fi # Generate functions for the directory generate_functions "$directory" "$output_file" echo "Functions generated and appended to $output_file"