Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Alcatraz internals
Search
Marin Usalj
April 29, 2014
Programming
2
230
Alcatraz internals
Talk given on NSLondon, April 2014
Marin Usalj
April 29, 2014
Tweet
Share
More Decks by Marin Usalj
See All by Marin Usalj
Code signing on iOS/OSX
supermarin
2
430
Launch Arguments - the mysteries
supermarin
1
150
Swift for CLI tools
supermarin
15
25k
CocoaPods intro
supermarin
2
190
Private pods - best practices
supermarin
1
120
CLI apps. For fun and profit
supermarin
4
16k
ObjectiveSugar & ObjectiveRecord
supermarin
5
470
Alcatraz - Xcode package manager
supermarin
3
270
BubbleWrap
supermarin
3
300
Other Decks in Programming
See All in Programming
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
970
AmperとFleetを使ったAndroidアプリ
yoppie
0
250
Ruby GitHub Packages
bkuhlmann
0
630
Git Lint
bkuhlmann
4
760
Anthropic Cookbook のおすすめレシピ
schroneko
7
1.1k
Implementing Design Systems in Swift
seyfoyun
0
380
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
240
Netty Chicago Java User Group 2024-04-17
sullis
0
200
Let's learn code review
riofujimon
2
570
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
890
try! Swift Tokyo 初参加報告LT
hinakko2
0
230
Milestoner
bkuhlmann
1
410
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
Documentation Writing (for coders)
carmenintech
61
4k
Six Lessons from altMBA
skipperchong
22
3k
Navigating Team Friction
lara
179
13k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
19
6.9k
Building Your Own Lightsaber
phodgson
100
5.7k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Design by the Numbers
sachag
274
18k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Transcript
Alcatraz the package manager for Xcode
None
how does this even
~/Library/Application\ Support\ /Developer/Shared/Xcode/Plug-ins
./Plug-ins VVDocumenter.xcplugin BeginningOfLine.xcplugin OMColorSense.xcplugin BBUFullIssueNavigator.xcplugin
ZOMG ! PLUGINS!!!!11!! <3 <3
None
+ (void)pluginDidLoad:(NSBundle *)plugin { ! if ([currentApplicationName isEqual:@"Xcode"]) { static
dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedPlugin = [[self alloc] initWithBundle:plugin]; }); } ! }
Everything’s terrible Sincerely, FileMerge.app
+ (void)pluginDidLoad:(NSBundle *)plugin { ! if ([currentApplicationName isEqual:@"Xcode"]) { static
dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedPlugin = [[self alloc] initWithBundle:plugin]; }); } ! }
aapl
I’ll need you to come in tommmmoroooow
and add these DVTPlugInCompatibility UUIDs
that’d be GRRREEEEEAT
Cou … l ..dn’t ww we use. Semantic Versioning?
Oh, almost forgot…
I’ll need you to stop filling radars
and crashing Xcode
otherwise we’ll disable plugins entirely
THANKS
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A 5.0.1 640F884E-CE55-4B40-87C0-8869546CAB7A 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED 5.1.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A YOUR PLUGIN 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A YOUR PLUGIN 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED 6.0 BASDSDII-JWM3-2987-KKHH-82890MSEBUEM
internals
None
Color scheme Templates Xcode Plugin
Color scheme Templates Xcode Plugin
-name -description -iconName -remotePath -isInstalled -screenshotPath ATZPackage.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 [NSException exceptionWithName:@"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.h ATZColorSchemeInstaller.h ATZTemplateInstaller.h ATZPluginInstaller.h
ATZPluginInstaller.h
ATZTemplateInstaller.h
ATZColorSchemeInstaller.h
updates
git fetch git reset —hard
None
git yolo
how do we update Alcatraz?
Alcatraz is just a plugin
ALCATRAZ USES ALCATRAZ TO UPDATE ALCATRAZ
roadmap
NDA
May 2013
Mar 2014
NDA
CocoaPods
the band
@kattrali KEYBOARDS KEYBOARDS
@jurre KEYBOARDS KEYBOARDS
many awesome contributors THE ORCHESTRA
thank you Marin Usalj @supermarin | supermar.in