Я пытаюсь написать простое приложение AppleScript, которое обрабатывает URL-адреса sftp: // и sshfs: // на моем Mac. Основываясь на хорошем guide on how to create a custom URL handler app in AppleScript, я написал a small app следующим образом, и он хорошо работает, когда я нажимаю на URL-адрес с соответствующими схемами. Фактическая работа выполняется в отдельном сценарии оболочки, который вызывает sshfs (FUSE), и я использую AppleScript, чтобы связать его с ОС.Правильный обработчик в AppleScript для ответа на «открытую» команду Unix для настраиваемого апплета URL-адреса
on open location theURL
set cmd to (quoted form of (get POSIX path of (path to resource "sshfs.sh" in directory "Scripts"))) & " " & theUrl
do shell script cmd
end open location
Однако этот обработчик URL AppleScript приложение не работает, если я использую команду open
из терминала, например,
open sftp://host/path
Я пытался добавить другие обработчики и нашел в командной строке путь вызывает обработчик on run argv
вместо того, который я написал, но не могу понять, как получить доступ к переданному аргументу URL. Я могу правильно получить URL-адрес, когда скрипт вызывается напрямую, например, osascript my.applescript sftp://host/path
. Пробовал ASObjC Runner, но не помог.
Существует ли стандартный обработчик или метод в приложении AppleScript для приема аргументов, переданных командой Unix open
? Кажется, он полагается на AppleEvents, но я не могу найти хорошую ссылку, описывающую, как играть одну и ту же магию между командой и родными приложениями с помощью AppleScript.
Спасибо за ответ, но это было именно то, что я пробовал. «Argv» для обработчика запуска устанавливается как «текущее приложение» каким-то образом, когда я использую «открытую» команду unix, поэтому «item 1 of argv» дает ошибку. Это список строк, хотя, когда я вызываю непосредственно с osascript. Странно, не так ли? – netj