SourceTree から Xcode-Beta を開けるようにする。
SourceTree
先日に SourceTree から Xcode のプロジェクトやワークスペースを簡単に開けるカスタムスクリプトを作成しましたが、正式版とベータ版とを切り替えて開けるようにしたくて、Xcode-Beta で開くスクリプトを作成しました。
先日にこちら で、SourceTree という Git をグラフィカルに操作できるツールで、ここから簡単に Xcode を開くカスタムスクリプトを作るお話をしました。
それを便利に使っていたのですが、Xcode 6.3-Beta1 が登場して、それと合わせて Swift 1.1 から Swift 1.2 になりました。こときの Swift のアップデートはそれほど大きくないながらも、基本部分の言語構文にも手を入れられていて、以前のプロジェクトは正式版で、新しいプロジェクトはベータ版で、選んで開けた方が都合が良くなりました。
そこで、先日作成したカスタムスクリプトを少し改修して、開く Xcode を明示するようにしてみました。
Xcode-Beta で開くカスタムスクリプト
Xcode のベータ版は Xcode 6.3-beta1 であれば、標準では "Xcode-Beta.app" というアプリ名でインストールされるので、NSWorkspace
のopenFile:メソッド
の代わりにopenFile:withApplication:メソッド
を使って、そこに "Xcode-Beta.app" を渡すことで、ベータ版の Xcode でプロジェクトファイルを開きます。
#!/usr/bin/swift
import Cocoa
let xcode = "Xcode-Beta.app"
let info = NSProcessInfo.processInfo()
let arguments = info.arguments as [String]
if let path = arguments.last {
let fileManager = NSFileManager.defaultManager()
let open:(String) -> Bool = { NSWorkspace.sharedWorkspace().openFile("\(path)/\($0)", withApplication:xcode) }
let files = fileManager.contentsOfDirectoryAtPath(path, error:nil) as [String]
let workspaceOnlyFilter:(String) -> Bool = { $0.hasSuffix(".xcworkspace") }
let projectOnlyFilter:(String) -> Bool = { $0.hasSuffix(".xcodeproj") }
let workspaceFile = files.filter(workspaceOnlyFilter).first
let projectFile = files.filter(projectOnlyFilter).first
workspaceFile.map { open($0) } ?? projectFile.map { open($0) }
}
これを ~/SourceTree/CustomScript/OpenInXcodeBeta.swift
というような名前で保存して、ターミナルで次のコマンドを実行して実行権限を付与すれば、これでスクリプトの準備は完了です。
chmod +x ~/SourceTree/CustomScript/OpenInXcodeBeta.swift
カスタムスクリプトの登録と実行
スクリプトを登録する
スクリプトファイルの準備ができたら、それを SourceTree に登録します。
今回は "Open in Xcode-Beta" という名前で登録しました。
カスタムスクリプトを実行する
カスタムスクリプトを登録できたら、リポジトリの一覧画面や各リポジトリの詳細画面から Custom Action として実行できます。
登録と実行の詳細
カスタムスクリプトの詳しい登録方法や実行方法はこちら で説明してありますので、そちらで確認してください。
正式版とベータ版とを選択して開くには
Xcode のプロジェクトを SourceTree から、正式版とベータ版とを選択して開けるようにしたい場合は、上で紹介した "Xcode-Beta.app" で開くカスタムスクリプトと併せて、"Xcode.app" で開くカスタムスクリプトを作成して使うと実現できます。
両方のスクリプトを SourceTree にカスタムスクリプトとして登録しておいて、Custom Action を実行するときに、それらを選択してあげると、そのスクリプトで指定しておいた方の Xcode でプロジェクトが開かれます。