XcodeのAppleScriptのテンプレートを使えるようにする [AppleScript辞書はつくれるか?]
以前にXcodeからAppleScriptのテンプレートが消えたことがあり、解決方法を探していたことがありましたが、自分なりに解決方法を探してなんとかしてたのですが、どうやったかまではブログでかいていませんでした。
まぁ、色々な人が解決方法を上げていますので、詳しくは書きませんが、古いXcode12以前のXcode内からテンプレートを探し、新しいXcodeのテンプレートフォルダ内にコピーをすると使えるようです。
ということで、以前に解決していたのですが、Mac本体やOSを新しくした時や、Xcodeのバージョンが変わるたびにAppleScriptのテンプレートを、いちいち探してコピーするのがめんどくさくなってきたので、テンプレートを探したり、コピー先を開いたりする動作を自動化してみたりするスクリプトを書いてみました。
さすがにアプリケーションフォルダ内にコピーすることまでは、セキュリティーの問題があるのでしませんでしたが、これでだいぶ楽になると思います。
Shellスクリプトを利用したら簡単ではないかと思って、まずは書いてみた。
|
do shell script "add=`system_profiler SPApplicationsDataType | grep 'Location:' | cut -d ':' -f2 | grep -e 'Xcode.app' -e 'Xcode-beta.app'| head -n 1 | cut -d ' ' -f2- ;` ; foo=`du -a $add/Contents/Developer/Library/Xcode/Templates/ | grep -e 'AppleScript App.xctemplate' | cut -d ' ' -f2- | sort | head -n 1 ;` ; cp -R \"$foo\" $HOME/Downloads/ ; echo $foo ;" |
無理やり1行で収まるようにしてみましたが、ちゃんと探して見つかったテンプレートファイルをダウンロードフォルダにコピーするところまでやってます。
まぁ、乱暴な部分がありますので、見つからなかった場合など、不具合があればエラーを吐きますけどね。
それも含めてアップルスクリプトで書き直してみる。
|
(*全てのアプリケーション情報を取得*) set systemProfilerList to do shell script "system_profiler SPApplicationsDataType ;" -- ここだけはShell使用 (*上で取得した中からXcode.appのアドレスを抽出*) set addressList to {} repeat with oneLine in (paragraphs of systemProfilerList) set oneLine to oneLine as string if oneLine contains "Location:" then if (oneLine ends with "/Xcode.app") or (oneLine ends with "/Xcode-beta.app") then set n to offset in oneLine of ":" set add to text (n + 2) thru -1 of oneLine set addressList to addressList & {add} end if end if end repeat if addressList = {} then return "Xcodeが見つけられませんでした。" (*選択*) set ans to choose from list addressList with prompt "対象となるXcodeを選択してください" OK button name "選択" cancel button name "中止" if ans = false then return "中止しました" (*テンプレートフォルダを開く*) tell application "Finder" set folderAdd to folder (((ans as string) & "/Contents/Developer/Library/Xcode/Templates/Project Templates") as POSIX file as string) set itemList to every folder of folderAdd repeat with aFolder in itemList if (name of aFolder) contains "mac" then activate try select folder "Other:AppleScript App.xctemplate" of aFolder display dialog "テンプレートを選択しました" buttons "OK" default button 1 return "テンプレートを選択" on error select folder "Other" of aFolder -- 修正しました display dialog "テンプレートフォルダを開きました" buttons "OK" default button 1 return "テンプレートフォルダ" end try end if end repeat end tell display dialog "見つかりませんでした。" buttons "残念" default button 1 "End" |
(ミスがあり2023/3/28に修正しました)
Xcodeのテンプレートフォルダを探しAppleScriptのテンプレートがあれば選んで表示し、なければテンプレートフォルダを開きます。
1)古い(AppleScriptのテンプレートがある)Xcode.appを選び、テンプレートが表示されるので、それをどこか別な場所にコピーをしておく。
2)新しい(AppleScriptのテンプレートがある)Xcode.appを選び、開いたテンプレートフォルダに前のテンプレートを移動してくる。
これで使えるようになります。
もし、古いXcodeを持っていないのであれば下記からダウンロードできます。
https://developer.apple.com/support/xcode/
(AppleのDeveloperのサイトでAppleIDでのログインが必要となります)
ここにあるようにユーザーディレクトリ内にコピーする方がいいですよ
http://piyocast.com/as/archives/15582
by お名前(必須) (2023-03-27 11:57)
情報ありがとうございます。
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/macOS/Other/
という面倒なところに入れるのではなく、
~/Library/Developer/Xcode/Templates/
へ入れるのが簡単そうですね。
ありがとうございます。参考にさせていただきます。
by かのつ (2023-03-27 17:01)