aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-11-17 21:30:25 +0000
committerGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-11-17 21:30:25 +0000
commit6fdb9dfef2c10696fc38a3ad860e014782b7d698 (patch)
tree0869bd773375520a3238a6885f9a6662b860d26b
parent8ddb49cefd01b220ad5e1d2f0060b2a0ad54efdb (diff)
- Added GTMLightweightProxy
- Added installer for the spotlight importers.
-rw-r--r--Foundation/GTMLightweightProxy.h46
-rw-r--r--Foundation/GTMLightweightProxy.m112
-rw-r--r--Foundation/GTMLightweightProxyTest.m77
-rw-r--r--GTM.xcodeproj/project.pbxproj12
-rw-r--r--GTMiPhone.xcodeproj/project.pbxproj10
-rw-r--r--ReleaseNotes.txt2
-rw-r--r--SpotlightPlugins/Installer/ApplescriptInstallerPost.sh17
-rw-r--r--SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh19
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript-contents.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject-contents.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder-contents.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder.xml1
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/index.xml4
-rw-r--r--SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj275
-rw-r--r--SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh17
-rw-r--r--SpotlightPlugins/Installer/License.rtf13
-rw-r--r--SpotlightPlugins/Installer/Welcome.rtf11
-rw-r--r--SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh17
20 files changed, 638 insertions, 0 deletions
diff --git a/Foundation/GTMLightweightProxy.h b/Foundation/GTMLightweightProxy.h
new file mode 100644
index 0000000..2e2a748
--- /dev/null
+++ b/Foundation/GTMLightweightProxy.h
@@ -0,0 +1,46 @@
+//
+// GTMLightweightProxy.h
+//
+// Copyright 2006-2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy
+// of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+//
+
+#import <Foundation/Foundation.h>
+
+//
+// GTMLightweightProxy
+//
+// An object which does nothing but stand in for another object and forward
+// messages (other than basic NSObject messages) to it, suitable for breaking
+// retain cycles. It does *not* retain the represented object, so the
+// represented object must be set to nil when that object is deallocated.
+//
+// Messages sent to a GTMLightweightProxy with no represented object set will
+// be silently discarded.
+//
+@interface GTMLightweightProxy : NSProxy {
+ @private
+ __weak id representedObject_;
+}
+
+// Initializes the object to represent |object|.
+- (id)initWithRepresentedObject:(id)object;
+
+// Gets the object that the proxy represents.
+- (id)representedObject;
+
+// Changes the proxy to represent |object|
+- (void)setRepresentedObject:(id)object;
+
+@end
diff --git a/Foundation/GTMLightweightProxy.m b/Foundation/GTMLightweightProxy.m
new file mode 100644
index 0000000..ad7e0a1
--- /dev/null
+++ b/Foundation/GTMLightweightProxy.m
@@ -0,0 +1,112 @@
+//
+// GTMLightweightProxy.m
+//
+// Copyright 2006-2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy
+// of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+//
+
+#import "GTMLightweightProxy.h"
+
+
+@implementation GTMLightweightProxy
+
+- (id)initWithRepresentedObject:(id)object {
+ // it's weak, we don't retain
+ representedObject_ = object;
+ return self;
+}
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+// -[NSProxy finalize] is only in 10.5 or later
+- (void)finalize {
+ representedObject_ = nil;
+ [super finalize];
+}
+#endif
+
+- (void)dealloc {
+ // it's weak, we don't release
+ representedObject_ = nil;
+ [super dealloc];
+}
+
+- (id)representedObject {
+ // Use a local variable to avoid a bogus compiler warning.
+ id repObject = nil;
+ @synchronized(self) {
+ // Even though we don't retain this object, we hang it on the lifetime
+ // of the calling threads pool so it's lifetime is safe for at least that
+ // long.
+ repObject = [[representedObject_ retain] autorelease];
+ }
+ return repObject;
+}
+
+- (void)setRepresentedObject:(id)object {
+ @synchronized(self) {
+ representedObject_ = object;
+ }
+}
+
+// Passes any unhandled method to the represented object if it responds to that
+// method.
+- (void)forwardInvocation:(NSInvocation*)invocation {
+ id target = [self representedObject];
+ // Silently discard all messages when there's no represented object
+ if (!target)
+ return;
+
+ SEL aSelector = [invocation selector];
+ if ([target respondsToSelector:aSelector])
+ [invocation invokeWithTarget:target];
+}
+
+// Gets the represented object's method signature for |selector|; necessary for
+// forwardInvocation.
+- (NSMethodSignature*)methodSignatureForSelector:(SEL)selector {
+ id target = [self representedObject];
+ if (target) {
+ return [target methodSignatureForSelector:selector];
+ } else {
+ // Apple's underlying forwarding code crashes if we return nil here.
+ // Since we are not going to use the invocation being constructed
+ // if there's no representedObject, a random valid NSMethodSignature is fine.
+ return [NSObject methodSignatureForSelector:@selector(alloc)];
+ }
+}
+
+// Prevents exceptions from unknown selectors if there is no represented
+// object, and makes the exception come from the right place if there is one.
+- (void)doesNotRecognizeSelector:(SEL)selector {
+ id target = [self representedObject];
+ if (target)
+ [target doesNotRecognizeSelector:selector];
+}
+
+// Checks the represented object's selectors to allow clients of the proxy to
+// do respondsToSelector: tests.
+- (BOOL)respondsToSelector:(SEL)selector {
+ if ([super respondsToSelector:selector] ||
+ selector == @selector(initWithRepresentedObject:) ||
+ selector == @selector(representedObject) ||
+ selector == @selector(setRepresentedObject:))
+ {
+ return YES;
+ }
+
+ id target = [self representedObject];
+ return target && [target respondsToSelector:selector];
+}
+
+@end
diff --git a/Foundation/GTMLightweightProxyTest.m b/Foundation/GTMLightweightProxyTest.m
new file mode 100644
index 0000000..ad0961e
--- /dev/null
+++ b/Foundation/GTMLightweightProxyTest.m
@@ -0,0 +1,77 @@
+//
+// GTMLightweightProxyTest.m
+//
+// Copyright 2006-2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy
+// of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+//
+
+#import "GTMSenTestCase.h"
+#import "GTMLightweightProxy.h"
+
+@interface GTMLightweightProxyTest : GTMTestCase
+- (BOOL)returnYes;
+@end
+
+// Declare a non-existent method that we can call without compiler warnings.
+@interface GTMLightweightProxyTest (GTMLightweightProxyTestMadeUpMethodDeclaration)
+- (void)someMadeUpMethod;
+@end
+
+@implementation GTMLightweightProxyTest
+
+- (void)testProxy {
+ id proxy = [[GTMLightweightProxy alloc] initWithRepresentedObject:self];
+ STAssertEqualObjects(self, [proxy representedObject], @"Represented object setup failed");
+
+ // Check that it identifies itself as a proxy.
+ STAssertTrue([proxy isProxy], @"Should identify as a proxy");
+ // Check that it passes class requests on
+ STAssertTrue([proxy isMemberOfClass:[self class]], @"Should pass class requests through");
+
+ // Check that it claims to respond to its selectors.
+ STAssertTrue([proxy respondsToSelector:@selector(initWithRepresentedObject:)],
+ @"Claims not to respond to initWithRepresentedObject:");
+ STAssertTrue([proxy respondsToSelector:@selector(representedObject)],
+ @"Claims not to respond to representedObject:");
+ STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
+ @"Claims not to respond to setRepresentedObject:");
+ // Check that it responds to its represented object's selectors
+ STAssertTrue([proxy respondsToSelector:@selector(returnYes)],
+ @"Claims not to respond to returnYes");
+ // ... but not to made up selectors.
+ STAssertThrows([proxy someMadeUpMethod], @"Calling a bogus method should throw");
+
+ // Check that callthrough works.
+ STAssertTrue([proxy returnYes],
+ @"Calling through to the represented object failed");
+
+ // Check that nilling out the represented object works.
+ [proxy setRepresentedObject:nil];
+ STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
+ @"Claims not to respond to setRepresentedObject: after nilling out represented object");
+ STAssertFalse([proxy respondsToSelector:@selector(returnYes)],
+ @"Claims to respond to returnYes after nilling out represented object");
+ // Calling through once the represented object is nil should fail silently
+ STAssertNoThrow([proxy returnYes],
+ @"Calling through without a represented object should fail silently");
+ // ... even when they are made up.
+ STAssertNoThrow([proxy someMadeUpMethod], @"Calling a bogus method on a nilled proxy should not throw");
+}
+
+// Simple method to test calling through the proxy.
+- (BOOL)returnYes {
+ return YES;
+}
+
+@end
diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj
index 6d7c854..745f920 100644
--- a/GTM.xcodeproj/project.pbxproj
+++ b/GTM.xcodeproj/project.pbxproj
@@ -136,6 +136,9 @@
F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */ = {isa = PBXBuildFile; fileRef = F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */; };
F41390920D75F64D00F72B31 /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */; };
+ F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */; };
+ F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */; };
F41A6F820E02EC3600788A6C /* GTMSignalHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41A6F830E02EC3600788A6C /* GTMSignalHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */; };
F41A6F850E02EC4D00788A6C /* GTMSignalHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */; };
@@ -391,6 +394,9 @@
F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Path.h"; sourceTree = "<group>"; };
F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Path.m"; sourceTree = "<group>"; };
F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+PathTest.m"; sourceTree = "<group>"; };
+ F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLightweightProxy.h; sourceTree = "<group>"; };
+ F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxy.m; sourceTree = "<group>"; };
+ F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxyTest.m; sourceTree = "<group>"; };
F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSignalHandler.h; sourceTree = "<group>"; };
F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSignalHandler.m; sourceTree = "<group>"; };
F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSignalHandlerTest.m; sourceTree = "<group>"; };
@@ -761,6 +767,9 @@
F4BC1C860DDDD45D00108B7D /* GTMHTTPServer.h */,
F4BC1C870DDDD45D00108B7D /* GTMHTTPServer.m */,
F4BC1E8C0DE1FC4A00108B7D /* GTMHTTPServerTest.m */,
+ F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */,
+ F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */,
+ F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */,
F98680AF0E2C15C300CEE8BF /* GTMLogger.h */,
F98680B00E2C15C300CEE8BF /* GTMLogger.m */,
F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */,
@@ -958,6 +967,7 @@
7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */,
8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */,
8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */,
+ F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1294,6 +1304,7 @@
F427EFC40E4023DD00ADD2AA /* GTMProgressMonitorInputStreamTest.m in Sources */,
8B1B49260E5F97C800A08972 /* GTMExceptionalInlinesTest.m in Sources */,
8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */,
+ F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1344,6 +1355,7 @@
8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */,
7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */,
8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */,
+ F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/GTMiPhone.xcodeproj/project.pbxproj b/GTMiPhone.xcodeproj/project.pbxproj
index 1d573cd..9c548ec 100644
--- a/GTMiPhone.xcodeproj/project.pbxproj
+++ b/GTMiPhone.xcodeproj/project.pbxproj
@@ -73,6 +73,8 @@
8BDA25140E759A6500C9769D /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */; };
8BE839890E89C74B00C611B0 /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */; };
8BE83A660E8B059A00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */; };
+ F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */; };
+ F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */; };
F418AF990E7558EC004FB565 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */; };
F418AF9A0E7558EC004FB565 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */; };
F418AFA50E7559C7004FB565 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA30E7559C7004FB565 /* GTMLogger.m */; };
@@ -191,6 +193,9 @@
8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidation.m; sourceTree = "<group>"; };
8BE839880E89C74A00C611B0 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugThreadValidation.h; sourceTree = "<group>"; };
8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidationTest.m; sourceTree = "<group>"; };
+ F41711570ECDFF0400B9B276 /* GTMLightweightProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLightweightProxy.h; sourceTree = "<group>"; };
+ F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxy.m; sourceTree = "<group>"; };
+ F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxyTest.m; sourceTree = "<group>"; };
F418AF6D0E755732004FB565 /* GTMiPhone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GTMiPhone-Info.plist"; sourceTree = "<group>"; };
F418AF910E755893004FB565 /* xcconfigs-readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xcconfigs-readme.txt"; sourceTree = "<group>"; };
F418AF930E7558DC004FB565 /* GTMExceptionalInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMExceptionalInlines.h; sourceTree = "<group>"; };
@@ -335,6 +340,9 @@
8B3AA91F0E033624007E31B5 /* GTMHTTPServer.h */,
8B3AA9200E033624007E31B5 /* GTMHTTPServer.m */,
8B3AA9210E033624007E31B5 /* GTMHTTPServerTest.m */,
+ F41711570ECDFF0400B9B276 /* GTMLightweightProxy.h */,
+ F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */,
+ F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */,
F418AFA20E7559C7004FB565 /* GTMLogger.h */,
F418AFA30E7559C7004FB565 /* GTMLogger.m */,
F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */,
@@ -616,6 +624,8 @@
F4E3B3E20EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m in Sources */,
F4EF8AD70EBFF814008DD6DA /* GTMStackTrace.m in Sources */,
F4EF8AD80EBFF814008DD6DA /* GTMStackTraceTest.m in Sources */,
+ F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */,
+ F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
index 1fdd464..45ec5dc 100644
--- a/ReleaseNotes.txt
+++ b/ReleaseNotes.txt
@@ -161,6 +161,8 @@ Changes since 1.5.1
- GTMStackTrace support for building a trace from the call stack in an
NSException (for 10.5+ and iPhone).
+- GTMLightweightProxy for breaking retain cycles.
+
Release 1.5.1
Changes since 1.5.0
diff --git a/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh b/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh
new file mode 100644
index 0000000..f58c5b0
--- /dev/null
+++ b/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Copyright 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy
+# of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+#
+
+su ${USER} -c "/usr/bin/mdimport -r '/Applications/AppleScript/Script Editor.app/Contents/Library/Spotlight/AppleScript.mdimporter'"
diff --git a/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh b/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh
new file mode 100644
index 0000000..65ff80d
--- /dev/null
+++ b/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Copyright 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy
+# of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+#
+
+# Set up the spotlight importer directory for Script Editor.
+
+mkdir -m 775 -p "/Applications/AppleScript/Script Editor.app/Contents/Library/Spotlight"
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript-contents.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript-contents.xml
new file mode 100644
index 0000000..279dca0
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript-contents.xml
@@ -0,0 +1 @@
+<pkg-contents spec="1.12"><f n="AppleScript.mdimporter" o="root" g="admin" p="16893" pt="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/AppleScript/build/Release/AppleScript.mdimporter" m="true" t="file"><f n="Contents" o="root" g="admin" p="16893"><f n="Info.plist" o="root" g="admin" p="33204"/><f n="MacOS" o="root" g="admin" p="16893"><f n="AppleScript" o="root" g="admin" p="33277"/></f><f n="Resources" o="root" g="admin" p="16893"><f n="English.lproj" o="root" g="admin" p="16893"><f n="InfoPlist.strings" o="root" g="admin" p="33204"/></f><f n="schema.xml" o="root" g="admin" p="33204"/></f></f></f></pkg-contents> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript.xml
new file mode 100644
index 0000000..f91a279
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/01applescript.xml
@@ -0,0 +1 @@
+<pkgref spec="1.12" uuid="C6188D1C-765E-4880-A5BC-F5BF85374870"><config><identifier>com.google.spotlightimporters.developer.developerSpotlightImporters.applescript.pkg</identifier><version>1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true" includeRoot="true">../AppleScript/build/Release/AppleScript.mdimporter</installFrom><installTo mod="true">/Applications/AppleScript/Script Editor.app/Contents/Library/Spotlight</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo</mod><mod>requireAuthorization</mod><mod>scripts.postinstall.isRelativeType</mod><mod>postInstall</mod><mod>extraFiles</mod><mod>version</mod><mod>scripts.preinstall.isRelativeType</mod><mod>installFrom.path</mod><mod>identifier</mod><mod>installFrom.isRelativeType</mod></config><scripts><preinstall relative="true" mod="true">ApplescriptInstallerPreflight.sh</preinstall><postinstall relative="true" mod="true">ApplescriptInstallerPost.sh</postinstall><scripts-element><preinstall-element>./preinstall</preinstall-element><postinstall-element>./postinstall</postinstall-element></scripts-element></scripts><contents><file-list>01applescript-contents.xml</file-list><component id="com.google.spotlightimporter.AppleScript" path="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/AppleScript/build/Release/AppleScript.mdimporter" version="1.0"/><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject-contents.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject-contents.xml
new file mode 100644
index 0000000..9f45666
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject-contents.xml
@@ -0,0 +1 @@
+<pkg-contents spec="1.12"><f n="XcodeProject.mdimporter" o="root" g="admin" p="16893" pt="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/build/Release/XcodeProject.mdimporter" m="true" t="file"><f n="Contents" o="root" g="admin" p="16893"><f n="Info.plist" o="root" g="admin" p="33204"/><f n="MacOS" o="root" g="admin" p="16893"><f n="XcodeProject" o="root" g="admin" p="33277"/></f><f n="Resources" o="root" g="admin" p="16893"><f n="English.lproj" o="root" g="admin" p="16893"><f n="InfoPlist.strings" o="root" g="admin" p="33204"/></f><f n="ReadMe.rtf" o="root" g="admin" p="33204"><mod>mode</mod></f><f n="schema.xml" o="root" g="admin" p="33204"/></f></f></f></pkg-contents> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject.xml
new file mode 100644
index 0000000..d1ed47d
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/02xcodeproject.xml
@@ -0,0 +1 @@
+<pkgref spec="1.12" uuid="10945E5D-2423-4268-A4DA-7E96B687937A"><config><identifier>com.google.spotlightimporters.developer.developerSpotlightImporters.xcodeproject.pkg</identifier><version>1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true" includeRoot="true">../XcodeProject/build/Release/XcodeProject.mdimporter</installFrom><installTo>/Library/Spotlight</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>requireAuthorization</mod><mod>scripts.postinstall.isRelativeType</mod><mod>postInstall</mod><mod>extraFiles</mod><mod>version</mod><mod>installFrom.isRelativeType</mod><mod>installFrom.path</mod><mod>installTo</mod><mod>identifier</mod></config><scripts><postinstall relative="true" mod="true">XcodeProjectInstallerPost.sh</postinstall><scripts-element/></scripts><contents><file-list>02xcodeproject-contents.xml</file-list><component id="com.google.spotlightimporter.XcodeProject" path="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/build/Release/XcodeProject.mdimporter" version="1.0"/><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder-contents.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder-contents.xml
new file mode 100644
index 0000000..915d5d4
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder-contents.xml
@@ -0,0 +1 @@
+<pkg-contents spec="1.12"><f n="InterfaceBuilder.mdimporter" o="root" g="admin" p="16893" pt="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/build/Release/InterfaceBuilder.mdimporter" m="true" t="file"><f n="Contents" o="root" g="admin" p="16893"><f n="Info.plist" o="root" g="admin" p="33204"><mod>mode</mod></f><f n="MacOS" o="root" g="admin" p="16893"><f n="InterfaceBuilder" o="root" g="admin" p="33277"><mod>mode</mod></f><mod>mode</mod></f><f n="Resources" o="root" g="admin" p="16893"><f n="English.lproj" o="root" g="admin" p="16893"><f n="InfoPlist.strings" o="root" g="admin" p="33204"><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod></f></pkg-contents> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder.xml
new file mode 100644
index 0000000..8b7a24b
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/03interfacebuilder.xml
@@ -0,0 +1 @@
+<pkgref spec="1.12" uuid="0F9A00D0-ACA3-4A65-8558-F5D99C16ABA4"><config><identifier>com.google.spotlightimporters.developer.developerSpotlightImporters.interfacebuilder.pkg</identifier><version>1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true" includeRoot="true">../InterfaceBuilder/build/Release/InterfaceBuilder.mdimporter</installFrom><installTo>/Library/Spotlight</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>requireAuthorization</mod><mod>scripts.postinstall.isRelativeType</mod><mod>postInstall</mod><mod>extraFiles</mod><mod>version</mod><mod>installFrom.isRelativeType</mod><mod>installFrom.path</mod><mod>installTo</mod><mod>identifier</mod></config><scripts><postinstall relative="true" mod="true">InterfaceBuilderInstallerPost.sh</postinstall><scripts-element/></scripts><contents><file-list>03interfacebuilder-contents.xml</file-list><component id="com.google.spotlightimporter.InterfaceBuilder" path="/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/build/Release/InterfaceBuilder.mdimporter" version="1.0"/><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/index.xml b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/index.xml
new file mode 100644
index 0000000..27cc9d5
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.pmdoc/index.xml
@@ -0,0 +1,4 @@
+<pkmkdoc spec="1.12"><properties><title>Developer Spotlight Importers</title><build>/Users/dmaclach/src/googlemac/opensource/google-toolbox-for-mac/SpotlightPlugins/Installer/Developer Spotlight Importers.pkg</build><organization>com.google.spotlightimporters.developer</organization><userSees ui="both"/><min-target os="3"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>Spotlight importers for Xcode projects, AppleScripts (.scpt and .scptd), and Interface Builder files (nibs and xibs).
+
+Part of the Google Toolbox For Mac project.
+http://code.google.com/p/google-toolbox-for-mac/</description><contents><choice title="AppleScript" id="choice0" description="This is a spotlight importer for AppleScripts. It imports the description and the code of an AppleScript to make them easily searchable. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.google.spotlightimporters.developer.developerSpotlightImporters.applescript.pkg"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Applications/AppleScript/Script Editor.app</file></requirement></choice-reqs></choice><choice title="XcodeProject" id="choice4" description="This is a spotlight importer for Xcode Projects. Makes it easy for you to search xcode project for specific files they include or text in the project comments." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.google.spotlightimporters.developer.developerSpotlightImporters.xcodeproject.pkg"/></choice><choice title="InterfaceBuilder" id="choice5" description="This is a spotlight importer for nibs and xibs. Makes it easy for you to search nibs and xibs for classes they use. Class names, bindings, outlets, actions and localizable strings are added to the text content attribute. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.google.spotlightimporters.developer.developerSpotlightImporters.interfacebuilder.pkg"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/usr/bin/ibtool</file></requirement></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource relative="true" type="license">License.rtf</resource><resource relative="true" type="welcome">Welcome.rtf</resource></locale></resources><flags/><extra-files/><item type="file">01applescript.xml</item><item type="file">02xcodeproject.xml</item><item type="file">03interfacebuilder.xml</item><mod>properties.customizeOption</mod><mod>extraFiles</mod><mod>properties.title</mod><mod>description</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc> \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b957315
--- /dev/null
+++ b/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj
@@ -0,0 +1,275 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 8BDF62EC0ED0092A006AF1EF /* Build DeveloperSpotlightImporters */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 8BDF62F60ED00932006AF1EF /* Build configuration list for PBXAggregateTarget "Build DeveloperSpotlightImporters" */;
+ buildPhases = (
+ 8BDF633B0ED00E50006AF1EF /* ShellScript */,
+ );
+ dependencies = (
+ 8BDF63110ED00993006AF1EF /* PBXTargetDependency */,
+ 8BDF633D0ED00E75006AF1EF /* PBXTargetDependency */,
+ 8BDF63130ED00993006AF1EF /* PBXTargetDependency */,
+ 8BDF633F0ED00E79006AF1EF /* PBXTargetDependency */,
+ 8BDF63150ED00993006AF1EF /* PBXTargetDependency */,
+ 8BDF63410ED00E7C006AF1EF /* PBXTargetDependency */,
+ );
+ name = "Build DeveloperSpotlightImporters";
+ productName = DeveloperSpotlightImporters;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXContainerItemProxy section */
+ 8BDF63000ED00972006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D576316048677EA00EA77CD;
+ remoteInfo = AppleScriptSpotlightPlugin;
+ };
+ 8BDF63070ED0097D006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D576316048677EA00EA77CD;
+ remoteInfo = InterfaceBuilderSpotlightPlugin;
+ };
+ 8BDF630E0ED00983006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D576316048677EA00EA77CD;
+ remoteInfo = XcodeProjectSpotlightPlugin;
+ };
+ 8BDF63100ED00993006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8D57630D048677EA00EA77CD;
+ remoteInfo = InterfaceBuilderSpotlightPlugin;
+ };
+ 8BDF63120ED00993006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8D57630D048677EA00EA77CD;
+ remoteInfo = AppleScriptSpotlightPlugin;
+ };
+ 8BDF63140ED00993006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8D57630D048677EA00EA77CD;
+ remoteInfo = XcodeProjectSpotlightPlugin;
+ };
+ 8BDF633C0ED00E75006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8BF156AA0E5BA66300D28B05;
+ remoteInfo = RunAllUnitTests;
+ };
+ 8BDF633E0ED00E79006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8BF1560D0E5B8C7A00D28B05;
+ remoteInfo = RunAllUnitTests;
+ };
+ 8BDF63400ED00E7C006AF1EF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 8BF157070E5BAC8600D28B05;
+ remoteInfo = RunAllUnitTests;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AppleScript.xcodeproj; path = ../AppleScript/AppleScript.xcodeproj; sourceTree = SOURCE_ROOT; };
+ 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = InterfaceBuilder.xcodeproj; path = ../InterfaceBuilder/InterfaceBuilder.xcodeproj; sourceTree = SOURCE_ROOT; };
+ 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XcodeProject.xcodeproj; path = ../XcodeProject/XcodeProject.xcodeproj; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXGroup section */
+ 8BDF62CC0ED008D2006AF1EF = {
+ isa = PBXGroup;
+ children = (
+ 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */,
+ 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */,
+ 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */,
+ );
+ sourceTree = "<group>";
+ };
+ 8BDF62FC0ED00972006AF1EF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8BDF63010ED00972006AF1EF /* AppleScript.mdimporter */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 8BDF63030ED0097D006AF1EF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8BDF63080ED0097D006AF1EF /* InterfaceBuilder.mdimporter */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 8BDF630A0ED00983006AF1EF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8BDF630F0ED00983006AF1EF /* XcodeProject.mdimporter */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXProject section */
+ 8BDF62CE0ED008D2006AF1EF /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 8BDF62D10ED008D2006AF1EF /* Build configuration list for PBXProject "DeveloperSpotlightImporters" */;
+ compatibilityVersion = "Xcode 3.1";
+ hasScannedForEncodings = 0;
+ mainGroup = 8BDF62CC0ED008D2006AF1EF;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = 8BDF62FC0ED00972006AF1EF /* Products */;
+ ProjectRef = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */;
+ },
+ {
+ ProductGroup = 8BDF63030ED0097D006AF1EF /* Products */;
+ ProjectRef = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */;
+ },
+ {
+ ProductGroup = 8BDF630A0ED00983006AF1EF /* Products */;
+ ProjectRef = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ 8BDF62EC0ED0092A006AF1EF /* Build DeveloperSpotlightImporters */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ 8BDF63010ED00972006AF1EF /* AppleScript.mdimporter */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = AppleScript.mdimporter;
+ remoteRef = 8BDF63000ED00972006AF1EF /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 8BDF63080ED0097D006AF1EF /* InterfaceBuilder.mdimporter */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = InterfaceBuilder.mdimporter;
+ remoteRef = 8BDF63070ED0097D006AF1EF /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 8BDF630F0ED00983006AF1EF /* XcodeProject.mdimporter */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = XcodeProject.mdimporter;
+ remoteRef = 8BDF630E0ED00983006AF1EF /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 8BDF633B0ED00E50006AF1EF /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "# shell script goes here\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DeveloperSpotlightImporters.pkg\"\n/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -d \"${SRCROOT}/DeveloperSpotlightImporters.pmdoc\" -o \"${BUILT_PRODUCTS_DIR}/DeveloperSpotlightImporters.pkg\"";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 8BDF63110ED00993006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = InterfaceBuilderSpotlightPlugin;
+ targetProxy = 8BDF63100ED00993006AF1EF /* PBXContainerItemProxy */;
+ };
+ 8BDF63130ED00993006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = AppleScriptSpotlightPlugin;
+ targetProxy = 8BDF63120ED00993006AF1EF /* PBXContainerItemProxy */;
+ };
+ 8BDF63150ED00993006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = XcodeProjectSpotlightPlugin;
+ targetProxy = 8BDF63140ED00993006AF1EF /* PBXContainerItemProxy */;
+ };
+ 8BDF633D0ED00E75006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = RunAllUnitTests;
+ targetProxy = 8BDF633C0ED00E75006AF1EF /* PBXContainerItemProxy */;
+ };
+ 8BDF633F0ED00E79006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = RunAllUnitTests;
+ targetProxy = 8BDF633E0ED00E79006AF1EF /* PBXContainerItemProxy */;
+ };
+ 8BDF63410ED00E7C006AF1EF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = RunAllUnitTests;
+ targetProxy = 8BDF63400ED00E7C006AF1EF /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 8BDF62D00ED008D2006AF1EF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ };
+ name = Release;
+ };
+ 8BDF62EE0ED0092A006AF1EF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = DeveloperSpotlightImporters;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 8BDF62D10ED008D2006AF1EF /* Build configuration list for PBXProject "DeveloperSpotlightImporters" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8BDF62D00ED008D2006AF1EF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 8BDF62F60ED00932006AF1EF /* Build configuration list for PBXAggregateTarget "Build DeveloperSpotlightImporters" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8BDF62EE0ED0092A006AF1EF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 8BDF62CE0ED008D2006AF1EF /* Project object */;
+}
diff --git a/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh b/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh
new file mode 100644
index 0000000..2850a6c
--- /dev/null
+++ b/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copyright 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy
+# of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+#
+
+su ${USER} -c "/usr/bin/mdimport -r '/Library/Spotlight/InterfaceBuilder.mdimporter'"
diff --git a/SpotlightPlugins/Installer/License.rtf b/SpotlightPlugins/Installer/License.rtf
new file mode 100644
index 0000000..33fbacf
--- /dev/null
+++ b/SpotlightPlugins/Installer/License.rtf
@@ -0,0 +1,13 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh8400\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
+
+\f0\fs24 \cf0 Copyright 2008 {\field{\*\fldinst{HYPERLINK "http://www.google.com"}}{\fldrslt Google Inc.}}\
+\
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\
+\
+{\field{\*\fldinst{HYPERLINK "http://www.apache.org/licenses/LICENSE-2.0"}}{\fldrslt http://www.apache.org/licenses/LICENSE-2.0}}\
+ \
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.} \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/Welcome.rtf b/SpotlightPlugins/Installer/Welcome.rtf
new file mode 100644
index 0000000..74f8854
--- /dev/null
+++ b/SpotlightPlugins/Installer/Welcome.rtf
@@ -0,0 +1,11 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh8400\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
+
+\f0\fs24 \cf0 Finding source can be difficult. These are importers to help you index your various source files. Included in the package are importers for Xcode projects, AppleScript files, and Interface Builder files.\
+\
+These importers are part of the Google Toolbox For Mac project. Check it out at:\
+\
+{\field{\*\fldinst{HYPERLINK "http://code.google.com/p/google-toolbox-for-mac/"}}{\fldrslt http://code.google.com/p/google-toolbox-for-mac/}}} \ No newline at end of file
diff --git a/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh b/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh
new file mode 100644
index 0000000..db9bfdb
--- /dev/null
+++ b/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copyright 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy
+# of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+#
+
+su ${USER} -c "/usr/bin/mdimport -r '/Library/Spotlight/XcodeProject.mdimporter'"