#!/bin/bash # Get full user name of current user # E.g. "Robbie Hanson" full1=$(osascript -e "tell application \"System Events\"" -e "get the full name of the current user" -e "end tell") #echo $full1 # Convert to lower case # E.g. "robbie hanson" full2=$(echo $full1 | awk '{print tolower($0)}') #echo $full2 # Replace spaces with underscores # E.g. "robbie_hanson" full3=$(echo ${full2// /_}) #echo $full3 # Remove any characters that are illegal in a macro name full4=$(echo $full3 | sed 's/[^0-9a-zA-Z_]*//g') #echo $full4 # If blank, set the name to an anonymous user if [ "$full4" == "" ] then full4='anonymous_user' fi # If we output directly to our intended file, even when nothing has changed, # then we'll essentially be doing a touch on the file. # The compiler will see this, and recompile any files that include the header. # This may mean recompiling every single source file, every single time we do a build! # So instead we're going to output to a temporary file, and use diff to detect changes. temp_filepath="${SRCROOT}/PerUserLogLevels/LumberjackUser.temp.h" final_filepath="${SRCROOT}/PerUserLogLevels/LumberjackUser.h" echo "// This file is automatically generated" > ${temp_filepath} echo "#define $full4 1" >> ${temp_filepath} if [ -a ${final_filepath} ] then DIFF=$(diff ${temp_filepath} ${final_filepath}) if [ "$DIFF" != "" ] then cp -f ${temp_filepath} ${final_filepath} fi else cp -f ${temp_filepath} ${final_filepath} fi