Как мне изменить цвет моего терминала.Приложение при входе в мой рабочий пульт на Heroku?

#bash #terminal #heroku

#bash #терминал #heroku

Вопрос:

Я помню, что была статья или несколько статей о том, как автор меняет цвет терминала с зеленого (для разработки) на красный (для производства) на основе адреса SSH.

Но я не уверен, как воспроизвести это с помощью Heroku console.

В идеале я хотел бы, чтобы он был, скажем, синим, когда я это делаю heroku console --remote staging , а затем красным, когда я это делаю heroku console --remote production .

У кого-нибудь есть предложения?

Комментарии:

1. Устанавливает ли Heroku что-либо (например, переменную env) при такой удаленной работе? (/ me ничего не знает о Heroku)

2. Да, я думаю, это можно было бы сделать через ENV VAR. Мысли?

Ответ №1:

В любой файл, загружаемый как часть производственной среды (скажем, config/environments/production.rb ), вы можете поместить:

 if defined? IRB
  # whew!
  conf = IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]]
  red = "33[0;31m"
  reset = "33[0m"
  conf[:PROMPT_S] = "#{red}>> #{reset}" # regular prompt
end
  

Сумасшедшие escape-символы — это цветовые коды ANSI. "33" — это escape-символ, а остальное — код для определенного цвета или эффекта. Вы можете найти список других цветов и эффектов здесь. Этот хэш IRB.conf является глобальным conf для IRB. Возможно, вы захотите установить на нем несколько других клавиш — они задокументированы здесь.

Если вы не используете Rails (и, следовательно, не обязательно имеете файл среды), вы всегда можете проверить текущую среду с помощью ENV['RACK_ENV'] , для которой должно быть установлено значение 'production' на Heroku.

Комментарии:

1. Когда я пытаюсь это сделать, я получаю это сообщение: 'block in <top (required)>': undefined method '[]' for nil:NilClass (NoMethodError) в этой строке: conf = IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]] Мысли?

2. О, это странно, похоже, они не используют IRB, а скорее самодельный клиент, который, похоже, отправляет код ruby поверх REST. Я посмотрю, что возможно, если вообще возможно.

Ответ №2:

Я делаю это с помощью драгоценного камня Marco Polohttps://github.com/arches/marco-polo

Затем вы можете изменить приглашение консоли, установив конфигурационную переменную heroku MARCO_POLO_APP_NAME. Для изменения цвета можно воспользоваться escape-кодами. В моем случае я установил, что рабочее приглашение должно быть белым на пурпурном фоне (его трудно не заметить), используя эту управляющую последовательность для значения MARCO_POLO_APP_NAME

 [ESC][105;97;1mPRODUCTION[ESC][0m
  

К сожалению, Stack Overflow не позволяет мне размещать сам escape-символ. Вам нужно будет использовать Notepad и выполнить поиск в регулярных выражениях и заменить, чтобы заменить [ESC] выше на x1B. Затем вы можете скопировать и вставить в значение MARCO_POLO_APP_NAME в консоли Heroku. Мне не удалось установить его в командной строке.

Ответ №3:

непроверено, но что-то вроде этого в вашем .bashrc или что-то еще может быть тем, что вы хотите (это не совсем безопасно, но вы должны понять идею)

 function heroku {
  REMOTE_TERMINAL_THEME_NAME="Solarized Light"
  CURTAB=$(osascript -e "tell application "Terminal" to get the selected tab of the front window")
  CURTHEME=$(osascript -e "tell application "Terminal" to get the name of current settings of the selected tab of the front window")
  HEROKU=$(which heroku)
  osascript -e "tell application "Terminal" to set current settings of $CURTAB to settings set "$REMOTE_TERMINAL_THEME_NAME""

  $HEROKU "$@"
  osascript -e "tell application "Terminal" to set current settings of $CURTAB to settings set  "$CURTHEME""
}
  

Я использую его для ssh, но концептуально это то же самое: переопределите вашу команду функцией, которая использует osascript для изменения настроек терминала, затем измените их обратно при выходе. Переключение на основе аргументов должно быть относительно простым в добавлении.

Ответ №4:

Вы могли бы автоматизировать это с помощью bash или batch при вводе псевдонимов, на мой взгляд, одна из лучших возможностей для разработки cli / терминала. Где-то есть статья, в которой простая команда echo может изменить ваш цвет, пока вы не установите его обратно с помощью другого echo.

Итак, вы могли бы сделать это с вашим bashrc, если вы пользователь nix.

 #pretend this is a bunch of prompt setup
#USER ALIASES
alias heroku-staging="export     PS1="e[0;34m[Heroku Staging]$]" amp;amp; heroku console --remote staging"
  

Затем просто введите heroku-staging

Комментарии:

1. cyberciti.biz/faq/…