Xcode ワークスペースやプロジェクトを自動で選んで開くコマンドを作る。

Xcode ツール

CocoaPods で pod update するために該当プロジェクトを閉じた後、また開くのを簡単にするためにスクリプトを作ってみました。


CocoaPos で pod update するとき、開いている Xcode プロジェクトを閉じておかないと、後で Xcode がクラッシュしたりする様子です。

そのため、今までは pod update する前に Xcode の該当プロジェクトを閉じた後に Dock の Xcode アイコンからプロジェクトを開き直すということをしていました。


他にも次のようにコマンドを入力する方法もあります。

open PROJECTNAME.xcworkspace

Pods を更新した後はキーボード上に手があるので、気分によってはこちらを使ったりもしていました。

でも、このようにしてワークスペースを開こうとするとき、同じ名前のファイルがあって何かとワークスペースを指定するのに手間がかかったりします。かといって、マウスやトラックパッドに手を伸ばすのも少し億劫なところです。

それなら、もっと簡単にプロジェクトを開けるコマンドを作ってしまえば良さそうと思い立ちました。

Xcode プロジェクトを開けるスクリプトを作る

前提として pod update が終わった直後で、プロジェクトを開きたいのであれば、カレントディレクトリにあるワークスペースを探して開けば良さそうです。

基本的に CocoaPods を使えばワークスペース (xcworkspace) になるはずなので、プロジェクト (xcodeproj) は気にしなくても良さそうですけど、せっかくなのでプロジェクトしかない場合でも開けるようにしてみます。

仕様

具体的な仕様としては、次のようにしてみます。

  1. カレントディレクトリからワークスペースを探し、見つかった最初のワークスペースを開いてスクリプトを終了する。
  2. ワークスペースが見つからなければ、カレントディレクトリからプロジェクトを探し、見つかった最初のプロジェクトを開いてスクリプトを終了する。
  3. プロジェクトが見つからなければ、何もせずに終了する。

この他にもログメッセージを付けたりはしますが、流れとしてはこのようにします。

カレントディレクトリ内に複数のワークスペースファイルやプロジェクトファイルが存在する可能性もありますけど、今回はそれは考慮せず、とにかく最初に見つかったものを開くことにしておきます。

スクリプト

このような考えで出来上がったのが次のスクリプトです。

#!/bin/sh

CURRENTDIR=`pwd`
FINDCMD="find ${CURRENTDIR} -maxdepth 1"

function Find() {

	TARGET="$1"
	echo `${FINDCMD} -name "*.${TARGET}"`
}

for TARGET in `Find xcworkspace`
do
	open ${TARGET}
	exit 0
done

for TARGET in `Find xcodeproj`
do
	open ${TARGET}
	exit 0
done

echo "Xcode project or workspace is not found." >&2
echo $FINDCMD
exit 1

これを openx という名前で保存して、次のようにして実行権限を付与して完成です。

chmod +x openx

スクリプトを使って Xcode プロジェクトを開く

作成したスクリプトは、プロジェクトが格納されているディレクトリ上で次のように実行します。

openx

こうするだけで、カレントディレクトリ中の *.xcworkspace を探して開く、なければ *.xcodeproj を探して開く、という動作をしてくれます。

この openx コマンドを /usr/local/bin などのパスが通ったディレクトリに格納しておけば、どのディレクトリからでも openx で簡単に実行できるようになるので便利です。