« AdobeFontsのインストール中のフォント一覧を出力する(HTML形式) | トップページ | [python3]PDFに埋め込まれているフォント名を一覧取得する »

モジュールインストール(修正 リピート処理にした)


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.6"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013##########################
014# 設定項目
015# Install するパッケージをリストで
016##########################
017# set listPackage to {"fontTools", "PyMuPDF", "tesseract", "fitz"} as list
018# Fitzの最新版が入っているとどうもうまく動作しない
019set listPackage to {"fontTools", "pymupdf", "tesseract"} as list
020
021##########################
022try
023  do shell script "/usr/bin/xcode-select --install"
024end try
025log "モジュールインストールの確認中"
026
027##########################
028###python3のパスチェック
029try
030  set strCmdText to ("/usr/bin/which python3") as text
031  set strBinPath to (do shell script strCmdText) as text
032on error
033  return "python3が見つかりませんでした終了します"
034end try
035
036##########################
037#ユーザーのサイトパッケージインストール先
038set appFileManager to refMe's NSFileManager's defaultManager()
039set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
040set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
041set ocidSiteDirPathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/lib/python/site-packages") isDirectory:(true)
042
043#####################################
044#未インストールの場合のみインストール処理
045repeat with itemPackage in listPackage
046  set ocidPackDirPathURL to (ocidSiteDirPathURL's URLByAppendingPathComponent:(itemPackage) isDirectory:(true))
047  set ocidPackDirPath to ocidPackDirPathURL's |path|()
048  set boolDirExists to (appFileManager's fileExistsAtPath:(ocidPackDirPath) isDirectory:(true))
049  if boolDirExists = true then
050    log "インストール済み"
051  else if boolDirExists = false then
052    
053    log itemPackage & "モジュールインストール開始"
054    #ターミナル起動させて
055    tell application "Terminal"
056      launch
057      activate
058      #リターンで改行を送る=新規Window
059      set objWindowID to (do script "\n\n")
060      delay 1
061      #コマンド実行
062      do script "\"" & strBinPath & "\"  -m pip install --user " & itemPackage & "" in objWindowID
063    end tell
064    ##コマンドが終わるまで待つ
065    repeat
066      tell application "Terminal"
067        tell objWindowID
068          #コマンド実行中か問い合わせ
069          set boolBusy to busy as boolean
070        end tell
071      end tell
072      ##コマンド終わっていたら
073      if boolBusy is false then
074        ##リピートからぬける
075        exit repeat
076        ##実行中なら待つ
077      else
078        delay 0.2
079      end if
080    end repeat
081    ##コマンド終わったらなら
082    tell application "Terminal"
083      ##改行2回送って
084      do script "\n\n" in objWindowID
085      ##シェルからログアウト
086      do script "exit" in objWindowID
087      set theWid to get the id of window 1
088      #ログアウトを待って
089      delay 1
090      ##ウィンドウを閉じる
091      close front window saving no
092    end tell
093    log itemPackage & "モジュールインストール終了"
094  end if
095end repeat
096
097#####################################
098#アップデートは全部やる
099repeat with itemPackage in listPackage
100  log itemPackage & "モジュールアップデート開始"
101  tell application "Terminal"
102    launch
103    activate
104    set objWindowID to (do script "\n\n")
105    delay 1
106    do script "\"" & strBinPath & "\" -m pip install --upgrade --user " & itemPackage & "" in objWindowID
107  end tell
108  repeat
109    tell application "Terminal"
110      tell objWindowID
111        set boolBusy to busy as boolean
112      end tell
113    end tell
114    if boolBusy is false then
115      exit repeat
116    else
117      delay 0.2
118    end if
119  end repeat
120  
121  tell application "Terminal"
122    do script "\n\n" in objWindowID
123    do script "exit" in objWindowID
124    set theWid to get the id of window 1
125    delay 1
126    close front window saving no
127  end tell
128  log itemPackage & "モジュールアップデート終了"
129end repeat
130return "インストール終了"
AppleScriptで生成しました

|

« AdobeFontsのインストール中のフォント一覧を出力する(HTML形式) | トップページ | [python3]PDFに埋め込まれているフォント名を一覧取得する »

AppleScript Python」カテゴリの記事