Команда сервиса GitHub выпустила консольную утилиту GitHub CLI 1.0. С ее помощью разработчики могут управлять своими проектами в сервисе из командной строки. Исходный код приложения также выложен на GitHub под лицензией MIT.
Многоплатформенная утилита GitHub CLI доступна на Linux, macOS и Windows. Она совместима с продуктом GitHub Enterprise Server 2.20+. GitHub CLI 1.0.0 Release notes.
GitHub CLI полностью написана на Go. Сейчас с помощью встроенной в инструмент утилиты «gh» можно создавать и разбирать пул-реквесты, включая работу в команде, заводить и просматривать сообщения об ошибках (issue), клонировать репозитории, просматривать различия в коде, выполнять рецензирование изменений и управлять формированием релизов на GitHub. Также в GitHub CLI можно создавать скрипты, использующие API GitHub. Полный список команд утилиты «gh». Протокол доступа к Git по умолчанию — HTTPS, но в GitHub CLI можно использовать SSH с помощью команды «gh config set git_protocol ssh».
Ранее в феврале этого года команда GitHub выпустила бета-версию консольной утилиты GitHub CLI. После ее выхода разработчики всего мира за семь месяцев создали с помощью бета версии GitHub CLI более 250 тыс. пул-реквестов, выполнили более 350 тыс. слияний проектов, а также отработали более 20 тыс. сообщений об ошибках.
arrakisfremen
capjdcoder
А что не так?
arrakisfremen
В мире полно нормальных языков для написания утилит. С нормальной типизацией, ООП и прочим-прочим. Нет, нужно взять запараллеленый С, который вообще тут ни к селу ни к городу.
js605451
Я не фанат Go и у меня тоже есть мнение "как надо". Но какая разница на чём эти ребята делают свой тул?
0xd34df00d
Они его выкладывают в опенсорс, что подразумевает возможность в него контрибьютить. Так, например, в другую утилиту, написанную на питоне, у меня лично контрибьютить не получилось за незнанием этого самого питона, поэтому для меня разница была.
То есть, конечно, хозяин — барин, но разница есть.
math_coder
Pascal, C, Rust, Go и Python. Ну и C++ ещё в виде исключения для фанатов
этого языка. Возможно, Vala. Не так уж и полно.
Alex_ME
По какому критерию отбирали? Почему нет C# и Java, если уж есть питон, которому тоже нужен рантайм? Или даже Ruby? Или JS?
math_coder
C# — это значит, что вы хотите заставить тех, что хочет использовать вашу утилитку, ставить рантайм только ради неё одной. С Python такой проблемы нет: без python так и так не обойтись. Java в этом плане где-то посередине, на границе между "годится" и "не годится".
Ruby, насколько мне известно, в принципе умер окончательно и бесповоротно. Но тоже, конечно, можно добавить в список, вместе с Perl.
JS… боюсь, не могу ничего сказать по этому поводу без мата и не рискуя никого оскорбить.
А ещё я забыл про Ada. (Хотя кому нужна Ada при, пусть не живом, но всё же шевелящемся Rust? Но, почему бы и нет...)
alexs0ff
Для .net наличие рантайма давно не обязательно docs.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained
math_coder
Тогда если вы всё-таки напишете вторую утилиту, то каждая будет тащить рантайм с собой. Тоже не годится.
И потом, там всё это дело распаковывается на диск — то есть по сути программа получается вообще нерабочей (когда некуда распаковаться).
pfffffffffffff
Из воздуха проблемы высасываем?
math_coder
Извинитие, но виндусоидам не понять.
Shatun
JAVA вполне неплохо компилируется в нативные бинарники.
Если решите тянуть рантайм то на джаве он добавляет порядка десятка — другого мегабайт- все вся джава сейчас модульная, ненужные модули рантайма не тянутся.
0xd34df00d
Почему не хаскель? А пару языков из вашего списка я бы убрал, пожалуй.
js605451
https://bash.im/quote/437303
js605451
Не обратил внимания, когда читал. Прямо полностью? Кто-то из знающих может подтвердить?
Enverest
В тексте есть ссылка на GitHub. Похоже что полностью.
js605451
Да я шучу. Смешно просто "полностью на Go".
QtRoS
Go очень хорош для инструментов командной строки, возможно это его лучшая ниша. Показательный пример — утилиты для
хакингапентестинга, в последнее время новые пишутся преимущественно на Go. Даже в metasploit изначально написанном на Ruby (с ООП и всем, что Вам хотелось) появилась возможность писать модули на Go.powerman
Лучшая, всё-таки, сетевые сервисы (ну и клиенты к ним) — там, где реально есть чем занять тысячи и миллионы горутин. Но утилиты, да, где-то вторая ниша Go, наверное.
0xd34df00d
А что именно делает его хорошим для утилит командной строки? Интересно, какие фичи языка и экосистемы этому способствуют.
QtRoS
Быстрая компиляция, богатая стандартная библиотека, кроссплатформенность, кросскомпиляция, отсутствие зависимостей и рантайма, сборка мусора, горутины — это приходит в голову в первую очередь. Ну и наверное философия — язык от праотцов, много чего почерпнул из идей unix.