ZSH Alias ​​запускает терминал-уведомитель, но не команду, которая его породила - PullRequest
0 голосов
/ 05 июля 2019

ОК, поэтому я задал этот вопрос пару дней назад, но немного взбил, поэтому я удалил его и собираюсь снова попытаться обратиться за помощью ...

У меня есть псевдоним в .zshrc;

alias gulp='gulp-notice'

Это, в свою очередь, запускает функцию;

gulp-notice ()
{
  notifier-around gulp "Gulp" "gulp $*"
}

который в свою очередь запускает эту функцию

notifier-around ()
{
  GROUP_ID=$1
  TITLE=$2
  COMMAND=$3 $4 $5 $6 $7 $8 $9
  terminal-notifier -title $COMMAND -message 'Finished' -appIcon https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg && terminal-notifier -title $COMMAND -message 'Complete' -appIcon https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg || terminal-notifier -title $COMMAND -message 'Failed' -appIcon https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif
}

Таким образом, переменные работают следующим образом (используя функцию gulp-note)

GROUP_ID is gulp
TITLE is "Gulp" (without the quote marks)
COMMAND is "gulp $*" (the output without the quote marks)

Теперь моя проблема заключается в следующем ... Когда я использовал этот скрипт в BASH, он выполнял команду gulp, а терминал-уведомитель выполнял свою функцию (сообщая мне, если gulp потерпел неудачу или преуспел)

gulp

будет запускать gulp и необходимые уведомления в зависимости от ситуации

gulp sass

будет запускать gulp sass и необходимые уведомления в зависимости от ситуации

Теперь я перешел на ZSH, скрипт просто запускает уведомление терминала и ничего больше. Может ли кто-нибудь указать мне правильное направление, поскольку я не понимаю, почему сценарии должны быть такими разными в двух терминальных приложениях

UPDATE Теперь у меня есть рабочий код, но я не могу запустить gulp-задачи, такие как SASS или JS (gulp sass или gulp js). Мой исправленный код выглядит следующим образом

notifier-around ()
{
  GROUP_ID=$1
  TITLE=$2
  COMMAND="$3 $4 $5 $6 $7 $8 $9"
  COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')" //strips the white space from the end of the VAR
  PROGRESS="https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg"
  FAIL="https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif"
  terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Starting" -appIcon "$PROGRESS" && $COMMAND_NO_WHITE_SPACE && terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Complete" -appIcon "$PROGRESS" || terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Failure" -appIcon "$FAIL"
}

gulp-notice ()
{
  notifier-around gulp "Gulp Build" "gulp $*"
}

alias gulp='gulp-notice'

Любые идеи о том, как заставить его распознавать дополнительные задачи, поскольку я тоже не могу запустить gulp --tasks ...

1 Ответ

0 голосов
/ 08 июля 2019

Итак, я наконец исправил это;

notifier-around ()
{
  GROUP_ID="$1"
  TITLE="$2"
  COMMAND="$3"
  COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')" //strips the white space from the end of the VAR
  PROGRESS="https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg"
  FAIL="https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif"
  terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Starting" -appIcon "$PROGRESS" && "${=COMMAND_NO_WHITE_SPACE}" && terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Complete" -appIcon "$PROGRESS" || terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Failure" -appIcon "$FAIL"
}

gulp-notice ()
{
  notifier-around gulp "Gulp Build" "gulp $*"
}

alias gulp='gulp-notice'

Вы увидите, что я удаляю конечные пробелы;COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')" поскольку это, похоже, вызывает проблемы

Вы также увидите, что я изменил "$COMMAND_NO_WHITE_SPACE" на "${=COMMAND_NO_WHITE_SPACE}" * * * * * * * * * * * * * * чтобы разделить переменную на $ IFS.это заставляет ZSH надрать задницу, необходимую для распознавания. Я пытаюсь добавить параметр в свою команду

...