Что нового, что не рекомендуется и каковы планы на будущее

Последние несколько недель я работал над большим пиаром для темы космических кораблей. Это самое большое обновление Spaceship за всю историю, в нем много изменений (в том числе критические), подсказка почти полностью переписана, поэтому я решил написать заметку, которая должна быть итогом моих усилий.



Почему?

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

echo -n "%{$fg_bold[green]%}"
echo -n "${SPACESHIP_NVM_SYMBOL} ${nvm_status}"
echo -n "%{$reset_color%}"

И этот фрагмент был частью любого раздела, вызывая множество связанных проблем.

Порядок разделов и их цвета в подсказке вряд ли были определены в исходном коде Spaceship, и это была вторая важная проблема. Пользователи могли переопределить префиксы для разделов, но не могли этого сделать для суффиксов, цветов или порядка разделов. Параметры были сгруппированы по имени (например, GIT, XCODE и т. Д.), За исключением PREFIX-параметров, которые были сгруппированы сами по себе. Это было сделано для несогласованности API.

Еще одна проблема была скрыта в разделе имени хоста. Внутри этого раздела использовались раздел имени пользователя и префикс каталога. Это просто исторический вопрос, связанный со спецификой реализации. В любом случае, это вызвало неочевидную привязку между частями приглашения, и это стало большой проблемой для будущих функций.

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

Какие новости?

космический корабль-zsh-theme теперь v2.0.0. Pull-request № 78 для этой версии содержит 66 коммитов (1095 добавлений и 523 удаления), 48 новых опций (всего 98, 26 устарели).

Давайте посмотрим, что будет с новым крупным обновлением. Вот список важных изменений:

Индивидуальный оперативный заказ

Я начал рефакторинг с внедрения новой функции: настраиваемый порядок подсказок.

Ранее у пользователей не было возможности изменять порядок разделов космического корабля. Более того, в Spaceship не было такого понятия, как section. Поэтому ключевой особенностью этого крупного обновления было предоставление пользователям возможности определять порядок подсказок.

Теперь вы можете использовать $SPACESHIP_PROMPT_ORDER параметры для определения желаемого порядка, как это (порядок по умолчанию ниже):

SPACESHIP_PROMPT_ORDER=(
  time          # Time stampts section
  user          # Username section
  host          # Hostname section
  dir           # Current directory section
  git           # Git section (git_branch + git_status)
  node          # Node.js section
  ruby          # Ruby section
  xcode         # Xcode section
  swift         # Swift section
  golang        # Go section
  docker        # Docker section
  venv          # virtualenv section
  pyenv         # Pyenv section
  line_sep      # Line break
  vi_mode       # Vi-mode indicator
  char          # Prompt character
)

Префиксы являются частью разделов

Ранее я упоминал о проблемах с именованием параметров префикса. В новой версии префиксы перенесены в соответствующие разделы:
$SPACESHIP_PREFIX_*$SPACESHIP_*_PREFIX

Параметры $SPACESHIP_PREFIX_SHOW были переименованы в $SPACESHIP_PROMPT_PREFIXES_SHOW и перемещены в раздел подсказок.

Не волнуйтесь, если вы используете старые параметры прямо сейчас, вы получите предупреждение об устаревании с предложением варианта, который следует использовать вместо этого:

Предупреждения об устаревших вариантах не будут удалены до следующего основного выпуска.

Параметры суффиксов

С момента введения префиксов ожидалось, что будут добавлены и суффиксы. Теперь у каждого раздела есть соответствующая опция $SPACESHIP_*_SUFFIX для суффикса раздела. По умолчанию он падает до значения $SPACESHIP_PROMPT_DEFAULT_SUFFIX, которое является пробелом. Однако не стесняйтесь определять собственный суффикс для любого раздела (больше примеров можно найти на вики-странице Presets).

Пользовательские цвета

Раньше не было возможности изменить цвета разделов. В новом основном выпуске эта функция доступна пользователям. Если вам нужно изменить цвет раздела, просто назначьте имя цвета соответствующей переменной $SPACESHIP_*_COLOR. Вот пример:

Git более конкретен

Теперь поддержка Git стала намного лучше. Во-первых, раздел git был разделен на два подраздела: git_branch + git_status. Как вы могли заметить, первая показывает текущую ветку Git, а вторая показывает статус Git.

Помимо старых добрых индикаторов, в подраздел Git status добавлены новые:

  • » - переименованные файлы;
  • - удаленные файлы;
  • = - не объединенные изменения;
  • - разошлись изменения.

Исправлена ​​поддержка Node.js

Больше нет nvm раздела и связанных с ним опций. Вместо этого используется node. У нас было много проблем от людей, предпочитающих использовать n вместо nvm. В новой версии есть опция $SPACESHIP_NODE_DEFAULT_VERSION. Если вы используете n, назначьте этой переменной версию системы Node.js по умолчанию, и раздел node будет скрыт.

Пакет NPM

Космический корабль теперь распространяется как NPM-пакет. Это означает, что вы можете установить его с помощью одной команды:

npm install -g spaceship-zsh-theme

Эта команда автоматически загрузит, установит ссылку и исходный код Spaceship. $ZSH_THEME будет установлен на "spaceship". Просто перезагрузите свой терминал.

Кроме того, вы можете удалить Spaceship с помощью команды npm uninstall и обновить с помощью npm update.

Наряду с этим вы можете установить Spaceship как обычно, используя диспетчер плагинов оболочки или с помощью одной команды:

curl -o - https://raw.githubusercontent.com/denysdovhan/spaceship-zsh-theme/master/install.zsh | zsh

Кстати, было бы здорово, если бы мы добавили возможность установки Spaceship с помощью Homebrew. Если вы можете помочь, напишите, пожалуйста, сообщение по теме Установить через Homebrew.

Меньшие изменения

С более крупными изменениями были и более мелкие. Космический корабль получил больше внутренних улучшений, а именно:

  • Новый символ подсказки. Теперь это вместо . Изменение не совсем очевидное, но у нового персонажа закругленные углы, что больше подходит для глаз.
  • Низкое внутреннее сцепление. user и dir разделы не зависят от раздела host.
  • Расширенный API. Теперь у time и user есть свои префиксы и другие параметры, которые были упущены.
  • Улучшенный установщик / деинсталлятор. install.sh был заменен на install.zsh и uninstall.zsh для установки и удаления соответственно. Оба запускаются постскриптами NPM или curl и wget.
  • Добавлено .editorconfig. Понятия не имею, почему я пропустил это раньше. Однозначно, этот файл должен быть в любом проекте с открытым исходным кодом.
  • Добавлены вики-страницы. Документы были особенно перемещены на вики-страницы GitHub. В частности, на странице Скриншоты добавлено больше скриншотов Космического корабля в других цветовых решениях (в том числе и в светлых).

Предустановки

На данный момент у Космического корабля 98 вариантов. Вы можете изменить практически все, что захотите: порядок, цвета, префиксы, суффиксы, символы и т. Д. Это делает Spaceship еще более настраиваемым, чем это было раньше.

Играя с опциями, я обнаружил, что делаю Космический корабль похожим на другие темы. Например, вот демонстрация того, как Spaceship может выглядеть как приглашение robbyrussell (приглашение по умолчанию Oh-My-Zsh):

Вот почему я решил создать вики-страницу Presets, где пользователи могут делиться своей конфигурацией с другими.

Планы на будущее

Конечно, этот выпуск еще не конец. Существует множество запросов на добавление функций и рабочих запросов на вытягивание с предварительной реализацией этих функций, а именно:

Хочешь помочь? Посмотрите ярлык help wanted в выпуске. Если вам нужна функция или у вас есть вопросы, не стесняйтесь открывать вопрос.

Пожертвование

Я работаю над этим проектом в свободное время, помимо своей основной работы. Надеюсь, вам понравится пользоваться космическим кораблем, и если вы это сделаете, пожалуйста, купите мне чашку ромашкового чая ☕️ или сырного торта 🍰

Буду признателен за вашу поддержку! Спасибо!

Спасибо за внимание! Подпишитесь на меня в Twitter и Facebook, если хотите получать обновления.