Я хочу добавить в контекстное меню искателя параметр, который вызывает hg add %1, где% 1 - это полный путь к выбранному файлу в искателе.
Конечно, я могу придумать и другие полезные случаи, которые можно добавить в контекстное меню.
Есть ли простой способ сделать это, не требующий установки стороннего программного обеспечения или кодирования на скомпилированном языке и создания бинарных плагинов?
Как создать сценарий в редакторе сценариев и поместить его в /Library/Contextual Menu Items/?

12
Petruza 18 Ноя 2010 в 16:35
1
Что ж ... Откройте Automator, создайте собственный рабочий процесс. Из Library выберите Utilites, затем перетащите Run shell script в рабочий процесс. Установите Pass input на As arguments. Напишите в своем сценарии: hg add $1. Затем меню «Файл» -> «Сохранить плагин», указать имя, выбрать плагин для Finder, «Сохранить». Щелкните правой кнопкой мыши файл, выберите «Еще» -> «Autamator» -> и наслаждайтесь. Но тут ничего о программировании ...
 – 
khachik
18 Ноя 2010 в 16:50
@khachik: Это все еще связано с разработкой. Вы должны сделать свой комментарий ответом.
 – 
Philip Regan
18 Ноя 2010 в 17:15
Хорошо, на самом деле это ответ ...
 – 
khachik
18 Ноя 2010 в 17:22

3 ответа

Лучший ответ

Да, я знаю, что это стороннее программное обеспечение, но для более полного обзора - http: //www.abracode.com/free/cmworkshop/on_my_command.html. Еще один инструмент, который упростит написание сценария, - это http://wafflesoftware.net/thisservice/ добавление элементов в сервисное меню.

2
Zygmunt 20 Ноя 2010 в 10:30

Шаги изменились для Snow Leopard / 10.6 + с момента правильного ответа @ khachik. Чтобы убедиться, что все ясно, вот шаги:

  • Открыть Automator
  • Создать новый Service
  • Установите два верхних раскрывающихся списка вверху на "Служба получает выбранные files or folders в Finder.app"
  • Установите для ввода Pass значение as arguments
  • Напишите свой сценарий (об этом см. Ниже).
  • Сохраните и выберите название сервиса

Окно вашего Automator должно выглядеть так: : screenshot

Теперь вы можете выбрать несколько файлов в Finder, а затем запустить службу из подменю «Службы».

Для вашего сценария, я думаю, вам нужно следующее. Это изменяет каталог каждого аргумента, а затем добавляет его. Я использую цикл for, потому что Finder позволяет вам выбирать несколько файлов в разных папках (которые могут находиться в разных репозиториях).

for f in "$@"
do
    cd $(dirname $f); hg add $f 
done

Если вы предположили, что все они находятся в одном репозитории, вы можете сделать это:

cd $(dirname $1); hg add $@
20
studgeek 25 Сен 2012 в 17:35
2
Automator запускает скрипт в среде, которая устанавливает путь к тому, что определено в / etc / paths (и, возможно, что-то еще), НО он не вызывает ваш ~ / .bash_profile ---> Итак, если у вас есть какие-то необходимые определения пути чтобы найти сценарий / программу, которую вы хотите выполнить из сценария Automator, вам необходимо либо использовать полный путь, либо добавить «source ~ / .bash_profile» (без кавычек) в качестве первой строки в сценарий
 – 
georg
20 Дек 2012 в 01:21
Параметр create service был удален, а «Быстрые действия» или другие рабочие процессы больше не отображаются в контекстном меню (даже если они помещены в папку ~/Lib/Services). Они отображаются только в меню «Сервисы». Любая идея, как заставить это работать снова?
 – 
Demis
27 Апр 2022 в 06:57

Откройте Automator, создайте собственный рабочий процесс. В Library выберите Utilites, затем перетащите Run shell script в рабочий процесс. Установите Pass input на As arguments. Напишите в своем сценарии: hg add $1. Затем File menu->Save as a Plugin, укажите имя, выберите plugin for Finder, Save. Щелкните файл правой кнопкой мыши и выберите More->Autamator-><PLUGIN_NAME>.

15
khachik 18 Ноя 2010 в 17:22
Вау, отличное объяснение. Хотя я не мог найти, как сохранить как плагин, единственные варианты, которые я получаю, - это рабочий процесс или приложение. Я использую ОС 10.6.4
 – 
Petruza
18 Ноя 2010 в 17:34
Нет пункта Save as a Plugin... в меню File в Automator? Я бегаю с леопардом, и он там ... Я считаю, что должно быть что-то эквивалентное, даже если на нем нет save as a plugin.
 – 
khachik
18 Ноя 2010 в 17:38
1
Что ж, я обнаружил, что теперь в 10.6 это называется службами, но это то же самое. Удалось создать, работает нормально, спасибо! теперь проблема в том, что мне нужно cd перейти к пути к файлу% 1, не могли бы вы рассказать мне, как это получить? Благодарность!
 – 
Petruza
18 Ноя 2010 в 18:10
Ммм ... (cd dirname "$1" && сделать что-нибудь )?
 – 
khachik
18 Ноя 2010 в 18:14
3
Чтобы это работало в Snow Leopard, вам нужно сделать New -> Service при запуске автомата, не New -> Workflow. Затем вы можете использовать элемент управления «Служба получает выбранные ____ в ____», чтобы привязать службу к определенному контекстному меню в определенном приложении. Остальное работает так же, как в этом ответе.
 – 
aroth
12 Мар 2012 в 08:24