Авторизовать команду UNIX для управления приложением - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу настроить быстрое действие Automator, которое запускает команду bbdiff и передает ей выбранные файлы в Finder.

Я создал Quick Action и настроил его на получение «файлов или папок» в «Finder.app».

Затем я добавил действие «Выполнить сценарий оболочки» и установил для оболочки значение «/ bin / bash» и передал ввод «в качестве аргументов». Сценарий:

/usr/local/bin/bbdiff "$1" "$2"

Если я запускаю этот сценарий вручную из Automator или Terminal (заменяя аргументы реальными именами файлов), он запрашивает у меня авторизацию основной программы для управления BBEdit, и затем он работает.

Но если я запускаю его из Finder, я получаю эту ошибку:

В действии «Запуск сценария оболочки» возникла ошибка: «Вы должны разрешить bbdiff отправлять события в приложение BBEdit. Используйте tccutil reset AppleEvents для сброса разрешений системы и повторите попытку. bbdiff: ошибка: -1743 ”

Я попытался запустить tccutil reset AppleEvents и снова запустить действие, но оно показало ту же ошибку.

Я также пытался добавить bbdiff, / bin / bash и Finder на вкладки «Доступность» и «Полный доступ к диску» в «Системные настройки»> «Конфиденциальность», но ничего не изменилось. Похоже, вам нужно что-то добавить на вкладку «Автоматизация», чего нельзя сделать вручную.

Как получить разрешение на команду UNIX, например bbdiff, для управления приложением?

UPDATE:

Мне удалось обойти эту проблему с помощью действия «Запустить AppleScript» вместо «Запуск сценария оболочки» с помощью этого сценария:

on run {input, parameters}
    tell application "BBEdit" to compare (item 1 of input) against (item 2 of input)
    return input
end run

При первом запуске я получил приглашение позволить Finder контролировать BBEdit, и затем он заработал.

Но это не сработает для других сценариев оболочки, поэтому вопрос все еще открыт.

...