SSブログ

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のテンプレートがあれば選んで表示し、なければテンプレートフォルダを開きます。

image230327.jpg

1)古い(AppleScriptのテンプレートがある)Xcode.appを選び、テンプレートが表示されるので、それをどこか別な場所にコピーをしておく。

2)新しい(AppleScriptのテンプレートがある)Xcode.appを選び、開いたテンプレートフォルダに前のテンプレートを移動してくる。

これで使えるようになります。

 

もし、古いXcodeを持っていないのであれば下記からダウンロードできます。

 https://developer.apple.com/support/xcode/ 

  (AppleのDeveloperのサイトでAppleIDでのログインが必要となります)

 

image230327b.jpgimage230327c.jpg

nice!(0)  コメント(2) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

お名前(必須)

ここにあるようにユーザーディレクトリ内にコピーする方がいいですよ
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) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。