Talk given on NSLondon, April 2014
Alcatrazthe package manager for Xcode
View Slide
how does thiseven
~/Library/Application\ Support\/Developer/Shared/Xcode/Plug-ins
./Plug-insVVDocumenter.xcpluginBeginningOfLine.xcpluginOMColorSense.xcpluginBBUFullIssueNavigator.xcplugin
ZOMG !PLUGINS!!!!11!!<3 <3
+ (void)pluginDidLoad:(NSBundle *)plugin {!if ([currentApplicationName isEqual:@"Xcode"]) {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{sharedPlugin = [[self alloc] initWithBundle:plugin];});}!}
Everything’s terribleSincerely,FileMerge.app
aapl
I’ll need you tocome intommmmoroooow
and add theseDVTPlugInCompatibilityUUIDs
that’d beGRRREEEEEAT
Cou … l ..dn’tww we use.Semantic Versioning?
Oh,almost forgot…
I’ll need you tostop filling radars
andcrashing Xcode
otherwise we’lldisable pluginsentirely
THANKS
Xcode UUID5.0 640F884E-CE55-4B40-87C0-8869546CAB7A5.0.1 640F884E-CE55-4B40-87C0-8869546CAB7A5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED5.1.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID5.0 640F884E-CE55-4B40-87C0-8869546CAB7AYOUR PLUGIN5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID5.0 640F884E-CE55-4B40-87C0-8869546CAB7AYOUR PLUGIN5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED6.0 BASDSDII-JWM3-2987-KKHH-82890MSEBUEM
internals
Color schemeTemplatesXcode Plugin
-name-description-iconName-remotePath-isInstalled-screenshotPathATZPackage.h
@implementation ATZColorScheme!- (ATZInstaller *)installer {return [ATZColorSchemeInstaller sharedInstaller];}!- (NSString *)type {return COLOR_SCHEME;}!- (BOOL)requiresRestart {return YES;}!- (NSString *)extension {return DVTCOLORSCHEME;}!- (NSString *)iconName {return COLOR_SCHEME_ICON_NAME;}!@end
@implementation ATZPlugin@synthesize requiresRestart;!- (ATZInstaller *)installer {return [ATZPluginInstaller sharedInstaller];}!- (NSString *)type {return PLUGIN;}!- (NSString *)extension {return XCPLUGIN;}!- (NSString *)iconName {return PLUGIN_ICON_NAME;}!@end
@implementation ATZTemplate!- (ATZInstaller *)installer {@throw [NSExceptionexceptionWithName:@"Abstract template"reason:@"Please use one of ATZTemplate subclasses"userInfo:nil];}!- (NSString *)type {return nil;}!- (BOOL)requiresRestart {return NO;}!- (NSString *)extension {return XCTEMPLATE;}!- (NSString *)iconName {return TEMPLATE_ICON_NAME;}!@end
ATZInstaller.h-installPackage:progress:completion:-updatePackage:progress:completion:-removePackage:progress:completion:!-isPackageInstalled:
ATZInstaller.hATZColorSchemeInstaller.hATZTemplateInstaller.hATZPluginInstaller.h
ATZPluginInstaller.h
ATZTemplateInstaller.h
ATZColorSchemeInstaller.h
updates
git fetchgit reset —hard
git yolo
how do we updateAlcatraz?
Alcatraz is just aplugin
ALCATRAZ USES ALCATRAZTO UPDATE ALCATRAZ
roadmap
NDA
May 2013
Mar 2014
CocoaPods
the band
@kattraliKEYBOARDSKEYBOARDS
@jurreKEYBOARDSKEYBOARDS
many awesome contributorsTHE ORCHESTRA
thank youMarin Usalj@supermarin | supermar.in