はじめに
このプロジェクトはswiftのversionなんだっけ・・
ということが多々あると思います。
そんなときの確認方法と対応したXcodeでの起動方法
+オマケで対応したVerのXcodeで起動してくれるShellScriptを考えてみたいと思います。(まだalpha版です)
概要
プロジェクトファイル内に記載があるので以下のコマンドで。
$ grep -r SWIFT_VERSION ./*.xcodeproj
サンプル
試しにいつ作ったか忘れたアプリのルートディレクトリでgrepしてみます。
$ grep -r SWIFT_VERSION ./ZanPanSoldier.xcodeproj
./ZanPanSoldier.xcodeproj/project.pbxproj: SWIFT_VERSION = 4.0;
./ZanPanSoldier.xcodeproj/project.pbxproj: SWIFT_VERSION = 4.0;
./ZanPanSoldier.xcodeproj/project.pbxproj: SWIFT_VERSION = 4.0;
./ZanPanSoldier.xcodeproj/project.pbxproj: SWIFT_VERSION = 4.0;
意外に新しいですね (@2018/12/21)
ちがうやつ
たまに見かける記事で以下のコマンドがあります。
$ swift -version
Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
Target: x86_64-apple-darwin17.7.0
これは現在設定されているコマンドラインツールのverが表示されるだけです。
ちなみにハイフンは1個でも2個でもokです。
実際に実行されるときのPATHは、具体的には以下のような感じです。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
各Xcodeの対応swift version表示
上記を踏まえていろいろなXcodeで実行してみます。
Xcode 10.1 (10B61)
$ /Applications/Xcode10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
Target: x86_64-apple-darwin17.7.0
Xcode 9.4.1 (9F2000)
$ /Applications/Xcode9.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Xcode 9.3 (9E145)
$ /Applications/Xcode9.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 4.1 (swiftlang-902.0.48 clang-902.0.37.1)
Target: x86_64-apple-darwin17.7.0
Xcode 9.2 (9C40b)
$ /Applications/Xcode9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)
Target: x86_64-apple-macosx10.9
Xcode 8.2.1 (8C1002)
$ /Applications/Xcode9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
おまけ
というわけで、Ver情報を取得して以下でXcodeに投げるShellScriptを考えてみます。
基本的にはXcodeのファイル名はバージョンに合わせて
以下でXcodeを起動しています。
open -a /Applications/Xcode10.1.app *.xcworkspace
CocoaPodsを導入している場合はxcworkspaceを、導入していない場合やCarthageのときはxcodeprojを起動したいかなと。
それがselect_project_file()の箇所です。
AutoXcodeSelector
https://github.com/kanari3/AutoXcodeSelector
使い方
- auto_xcode_selector.shをどこかに置く
- ex:ホーム (~/)
- プロジェクトのルートディレクトリで実行
~/work/ZanPanSoldier (develop *+)
$ ~/auto_xcode_selector.sh
Auto Xcode Selector🍣
Swift Version 4.0
これで対応してそうなXcodeでプロジェクトが起動します。
bash.rc等にエイリアスをはれば楽に呼べます。
TODO
- 自分のインストールしているXcodeに合わせて書き換えられる人向けなので万人向けにしたい
- ver表記を比較できないので扱いを考える(0.1はok、0.0.1は)
- XcodeとSwiftの上下揃った対応表を探す
- エラー処理
こんなのがあったら便利かな?と思い、発想を軽く形にしてみました。
もし良ければforkしてみてください🍣
おわりに
ディップAdventCalendar2018からたどってくださった方どうも有難うございます。
随時エンジニア募集中です!iOSDCにも参加しています!