Установите ffmpeg с appleScript - PullRequest
       19

Установите ffmpeg с appleScript

0 голосов
/ 01 февраля 2020

Я пытаюсь создать яблочный скрипт, который устанавливает ffmpeg. У меня есть две проблемы.

  • Я хочу установить Xcode, homebrew, ffmpeg, узел, права доступа и ffmpeg-progressbar-cli по одной. Не все сразу, но в таком порядке. ffmpeg зависит от xcode, поэтому ему нужно подождать до завершения установки xcode.
  • Команде для homebrew требуется ", для которого яблочный скрипт заставляет меня изменить значение на ', прежде чем я смогу его запустить, но в этом случае это не работает

Вот сценарий, который у меня есть до сих пор.

tell application "Terminal"
    do script "xcode-select --install && ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" && brew install ffmpeg && brew install node && sudo chown -R $(whoami) /usr/local/bin /usr/local/etc && npm install --global ffmpeg-progressbar-cli"
    activate
end tell

Я пробовал это, и он не работает должным образом.

tell application "Terminal"
        do script "sudo chown -R $(whoami) /usr/local/bin /usr/local/etc && xcode-select --install"
        display dialog "Select OK once Xcode has installed" buttons {"OK"} default button 1
        do script "ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)""
        display dialog "Select OK once Homebrew has installed" buttons {"OK"} default button 1
        do script "brew install ffmpeg"
        display dialog "Select OK once ffmpeg has installed" buttons {"OK"} default button 1
        do script "brew install node"
        display dialog "Select OK once node has installed" buttons {"OK"} default button 1
        do script "npm install --global ffmpeg-progressbar-cli"
        display dialog "Select OK once ffmpeg-bar has installed" buttons {"OK"} default button 1
        activate
    end tell

Для второго выпуска это должно быть

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

, но яблочный скрипт заставляет меня изменить его на

ruby -e '$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)'

с одинарной кавычкой, которая не не работает.

Помощь и предложения приветствуются!

1 Ответ

0 голосов
/ 02 февраля 2020

Хорошо, попробуйте следующий сценарий, но смотрите предостережения ниже:

shellScriptHandler("xcode-select --install", false)
shellScriptHandler("sudo chown -R $(whoami) /usr/local/Cellar", true)
shellScriptHandler("ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\" <<< " & return, false)
shellScriptHandler("sudo chown -R $(whoami) /usr/local/var/homebrew /usr/local/share/zsh /usr/local/share/zsh/site-functions", true)
shellScriptHandler("/usr/local/Homebrew/bin/brew install ffmpeg", false)
shellScriptHandler("/usr/local/Homebrew/bin/brew install node", false)
shellScriptHandler("sudo chown -R $(whoami) /usr/local/bin /usr/local/etc", true)
shellScriptHandler("/usr/local/bin/npm install --global ffmpeg-progressbar-cli", false)

on shellScriptHandler(command, usesAdmin)
    log command
    (*
        The try block catches any errors and reports them; the user can choose 
        to continue execution if it's a warning, or cancel execution outright.

        The 'eval' statement forces do shell script to read the standard
        interactive $PATH variable, so that it sees /user/local/, otherwise it 
        can't find the files it needs.
    *)
    try
        do shell script "eval `/usr/libexec/path_helper -s`; " & command administrator privileges usesAdmin
    on error errstr
        display dialog errstr buttons {"Continue", "Cancel"} default button "Continue"
    end try
end shellScriptHandler

Предостережения:

  1. Если есть предыдущая установка homebrew, первая строка может потерпеть неудачу с ошибка разрешений; в моей системе он пытался скопировать что-то из пакета Xcode в /usr/local/Homebrew/.git / ..., но ему требовались права доступа root. Я решил эту проблему, полностью удалив папку / usr / local / Homebrew, но для общего случая это может быть немного драматично c. Вы должны будете увидеть, повторяется ли проблема.
  2. Я добавил пару chown команд в строках 2 и 4. Они появились как ошибки, когда я запустил сценарий ruby и brew install.... Вы можете столкнуться с другими такими ошибками, основанными на идиосинкразиях в разных системах, но не мешало бы добавить больше таких команд для уточнения разрешений в /usr/local.
  3. Этот скрипт должен выполняться с минимумом взаимодействие с пользователем, но для этого нужно время от времени вводить пароль или «ок». Эти можно автоматизировать, но я не уверен, что оно того стоит.
...