Browse Source

Improving per-user log levels example

Robbie Hanson 14 years ago
parent
commit
cef5295f2d

+ 4 - 0
.gitignore

@@ -22,3 +22,7 @@ Icon?
 # Files that might appear on external disk
 .Spotlight-V100
 .Trashes
+
+# Other
+Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.h
+Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.temp.h

+ 4 - 3
Xcode/PerUserLogLevels/PerUserLogLevels.xcodeproj/project.pbxproj

@@ -24,6 +24,7 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		DC28B92D15263ED00043126F /* LumberjackUser.bash */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = LumberjackUser.bash; path = Scripts/LumberjackUser.bash; sourceTree = SOURCE_ROOT; };
 		DC87A6F41525AEA3005A09B0 /* PerUserLogLevels.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PerUserLogLevels.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		DC87A6F81525AEA3005A09B0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 		DC87A6FB1525AEA3005A09B0 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -53,7 +54,6 @@
 		DC87A7241525AEB3005A09B0 /* DispatchQueueLogFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchQueueLogFormatter.m; sourceTree = "<group>"; };
 		DC87A7251525AEB3005A09B0 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; };
 		DC87A72E1525B051005A09B0 /* LumberjackUser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LumberjackUser.h; path = ../Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.h; sourceTree = "<group>"; };
-		DC87A7331525B191005A09B0 /* LumberjackUser.bash */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = LumberjackUser.bash; path = PerUserLogLevels/LumberjackUser.bash; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -163,7 +163,7 @@
 		DC87A7301525B10C005A09B0 /* LumberjackUser */ = {
 			isa = PBXGroup;
 			children = (
-				DC87A7331525B191005A09B0 /* LumberjackUser.bash */,
+				DC28B92D15263ED00043126F /* LumberjackUser.bash */,
 				DC87A72E1525B051005A09B0 /* LumberjackUser.h */,
 			);
 			name = LumberjackUser;
@@ -242,7 +242,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/bash;
-			shellScript = /Users/robbie/Programs/GitHub/CocoaLumberjack/Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.bash;
+			shellScript = "${PROJECT_DIR}/Scripts/LumberjackUser.bash";
 		};
 /* End PBXShellScriptBuildPhase section */
 
@@ -381,6 +381,7 @@
 				DC87A7141525AEA3005A09B0 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
 	};

+ 0 - 19
Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.bash

@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Get full user name of current user
-# E.g. "Robbie Hanson"
-full=$(osascript -e "tell application \"System Events\"" -e "get the full name of the current user" -e "end tell")
-#echo $full
-
-# Convert to lower case
-# E.g. "robbie hanson"
-full_lower=$(echo $full | awk '{print tolower($0)}')
-#echo $full_lower
-
-# Replace spaces with underscores
-# E.g. "robbie_hanson"
-full_lower_underscore=$(echo ${full_lower// /_})
-#echo $full_lower_underscore
-
-echo "// This file is automatically generated" > ${SRCROOT}/PerUserLogLevels/LumberjackUser.h
-echo "#define $full_lower_underscore 1" >> ${SRCROOT}/PerUserLogLevels/LumberjackUser.h

+ 0 - 2
Xcode/PerUserLogLevels/PerUserLogLevels/LumberjackUser.h

@@ -1,2 +0,0 @@
-// This file is automatically generated
-#define robbie_hanson 1

+ 42 - 0
Xcode/PerUserLogLevels/Scripts/LumberjackUser.bash

@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# Get full user name of current user
+# E.g. "Robbie Hanson"
+full=$(osascript -e "tell application \"System Events\"" -e "get the full name of the current user" -e "end tell")
+#echo $full
+
+# Convert to lower case
+# E.g. "robbie hanson"
+full_lower=$(echo $full | awk '{print tolower($0)}')
+#echo $full_lower
+
+# Replace spaces with underscores
+# E.g. "robbie_hanson"
+full_lower_underscore=$(echo ${full_lower// /_})
+#echo $full_lower_underscore
+
+echo "// This file is automatically generated" > ${SRCROOT}/PerUserLogLevels/LumberjackUser.h
+echo "#define $full_lower_underscore 1" >> ${SRCROOT}/PerUserLogLevels/LumberjackUser.h
+
+# 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 $full_lower_underscore 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