SourceTree から Xcode を開けるようにする。

SourceTree

SourceTree から Xcode のプロジェクトやワークスペースを簡単に開けるカスタムスクリプトを作成しました。


SourceTree という Git をグラフィカルに操作できるツールを使っていたんですが、ここからすぐに Xcode を開けたら Xcode のプロジェクトの管理にも使えて便利そうです。

そこで、対象リポジトリ内にあるワークスペースファイルやプロジェクトファイルを探して、あればそれを開くカスタムスクリプトを作成して SourceTree に登録しました。

カスタムスクリプトを作成する

スクリプトファイルを作成する

まずは、Mac 内のどこかに次のスクリプトを記載したテキストファイルを保存します。

#!/usr/bin/swift

import Cocoa

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)") }

	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/OpenInXcode.swift という名前で保存しました。

そうしたらターミナルで次のコマンドを実行して、このファイルに実行権限を付与します。

chmod +x ~/SourceTree/CustomScript/OpenInXcode.swift

これでスクリプトファイルの準備ができました。

スクリプトを SourceTree に登録する

スクリプトファイルの準備ができたら、それを SourceTree に登録します。

SourceTree を起動したら、メニューから SourceTree Preferences... を選択すると、設定画面が表示されます。

そこのカスタムアクション タブを開いて、左下にある追加ボタン を押します。

そして、カスタムスクリプトを登録します。

項目 内容
メニューキャプション カスタムスクリプトの設定に付ける名前です。今回は "Open in Xcode" にしました。
実行スクリプト 用意しておいたスクリプトファイル OpenInXcode.swift を指定します。
パラメータ ここで$REPO を指定して、スクリプトにリポジトリへのパスを渡します。

また、メニューキャプションの右側にはショートカットが指定できるようになっています。これを指定することで、そのショートカットを押せばすぐにカスタムスクリプトを実行できて便利です。

今回はここで X を指定しておくことにしました。

登録完了

あとはOKボタン を押せば、これでカスタムスクリプトの登録作業は完了です。

カスタムスクリプトを実行する

カスタムスクリプトを登録できたら、次の二つの場面からそれを実行できます。

各リポジトリを開いている場面

メニューからカスタムスクリプトを実行する

SourceTree でどれかのリポジトリを開いている場合には、システムメニューを Actions Custom Actions とたどり、そこから、カスタムスクリプト登録時につけたメニューキャプション名を選択します。

そうすると、カスタムスクリプトが実行されて、このリポジトリ内にあるワークスペースファイルやプロジェクトファイルが Xcode で開かれます。

リポジトリ内にワークスペースファイルとプロジェクトファイルの両方がある場合には、ワークスペースファイルが優先されるようにスクリプトが組まれています。

ショートカットでカスタムスクリプトを実行する

カスタムスクリプトを登録したときにショートカットを設定してあれば、この画面でそれを押すことでもカスタムスクリプトを実行できます。

メニューをたどって選択しなくて済むので、こちらの方がオススメです。

リポジトリの一覧からカスタムスクリプトを実行する

SourceTree のリポジトリの一覧からでもカスタムスクリプトを実行できます。

こちらの場合は、Xcode で開きたいリポジトリの上で右クリックをして、ポップアップメニューの中から Custom Actions を選択して、カスタムスクリプト登録時につけたメニューキャプション名を選択します。

リポジトリの一覧からカスタムスクリプトを実行する場合、スクリプト登録時に指定したショートカットキーは利用できない様子です。