Создание интерфейса командной строки для Digital Ocean

Последний месяц я работал над личным проектом doclt. Я был вдохновлен на создание этого после очистки некоторого кода в моем побочном проекте nycurl, который использует пакет под названием cli-table2, который форматирует данные в красиво отображаемые таблицы для отображения в любом терминале или командной строке. Я подумал, что было бы здорово использовать его для отображения ресурсов Digital Ocean, поскольку я часто использую Digital Ocean для размещения своих личных проектов. Этот пост в основном будет описывать мой процесс создания этого проекта, а также давать общие советы по созданию интерфейса командной строки.

Чтобы построить любой интерфейс командной строки, нужен хороший синтаксический анализатор аргументов командной строки в качестве основы для создания функциональности. Два очень хороших — командир и ярги.

Когда я начал создавать этот проект, я решил использовать node.js, чтобы распространять этот пакет на npm. Я использовал пакет commander для синтаксического анализа аргументов командной строки. Несмотря на свою надежность, командир не был разработан для сложного дерева команд, которое я имел в виду для этого проекта.

Помимо этого, npm также доставил мне несколько проблем, когда я искал хороший синтаксический анализатор аргументов командной строки. Вообще мне нравится npm. Это отличное место для интересных пакетов и проектов. Независимо от того, насколько хорош открытый исходный код, он всегда будет кластером ****. Я наткнулся на командир, командир-плюс и командир-плюс-плюс.

Угадайте, какой из них самый новый и самый обновленный? Правильно, командир-плюс.

А теперь посмотрите их документацию.

??????

Судя по всему, командир-плюс — это ответвление командира, но мейнтейнеры не удосужились обновить документацию.

Именно в этот момент я сжег проект и запустил rm -rf в каталоге проекта. Затем я перешел к синтаксическому анализатору аргументов командной строки yargs и переписал весь проект. Переход на yargs был почти таким же великолепным, как переход с Notepad ++ на Emacs. Помимо чрезвычайно хорошей документации, yargs позволил мне организовать мой проект в виде красивого дерева команд.

См. также:  Рекомендации по Node.js: кеширование и REST

Моя цель в этом проекте состояла в том, чтобы создать интерфейс командной строки, чтобы я мог предоставлять и управлять каплями, томами и другими ресурсами Digital Ocean из командной строки. Документация Digital Ocean v2 фантастична и легко читается, и для нее уже существует оболочка node.js. Я использовал пакет digitalocean для управления вызовами Digital Ocean API. В пакете были некоторые незначительные ошибки, поэтому я также отправил несколько запросов на вытягивание в репозиторий. В итоге это стало довольно крутым освежением в памяти того, как открывать исходный код.

Я представил себе пользовательский интерфейс, который выглядел бы примерно так:

Имея это в виду, я в основном следовал документации Digital Ocean API при разработке команд. В итоге дерево команд выглядело примерно так:

Первоначально этот проект назывался Digital Ocean Command Line Interface (docli), но во время публикации я обнаружил, что имя пакета было взято на npmjs. Поскольку «doctl» не использовалось, я переименовал проект в Digital Ocean Command Line Tool.

Не знаю почему, но я всегда оцениваю легитимность проекта по значкам на их README, поэтому, конечно, мне приходится добавлять несколько самостоятельно, любезно предоставлено shields.io.

Так или иначе, советы по созданию CLI:

  • Разделите все функции вашего интерфейса командной строки на небольшие отдельные команды. Пользователю должно быть очевидно, как используется ваш интерфейс командной строки.
  • Для более сложных приложений CLI используйте подкоманды в стиле git для организации команд. Вы можете увидеть это в doctl на изображении дерева команд выше.
  • Каждая команда должна быть относительно самодокументированной. Должно быть очевидно, как работает команда. Однако здесь есть нюансы, которые могут зависеть от вашего приложения.
  • Уделите много времени разработке информации об использовании и справочных страниц. Убедитесь, что он доступен с помощью флага справки или команды справки. Описание команд должно быть кратким и лаконичным.
См. также:  Как выполнить тихое обновление через неявный поток в Angular?

Bower — прекрасный пример хорошо продуманной командной документации.

  • При желании вы также можете включить пример использования команд, как большинство справочных страниц в стиле Unix.

По какой-то причине я одержим тем, чтобы делать что-то из командной строки. Оставьте комментарий, если вы создали какие-нибудь классные приложения для командной строки. Это все, что у меня есть на данный момент. Если вам понравилось это читать, нажмите ❤ внизу :)

Следуйте за мной в Twitter: @omgimanerd

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: