Snipper — простое, консольное приложение, написанное на PHP, для удобного импорта фрагментов кода из популярного сервиса GitHub Gist.
В один прекрасный день я понял, что порядком задолбался переписывать мелкие файлы конфигураций из проекта в проект и стал искать ответ на вопрос — как избавить себя от страданий и не добавить новых?
Рассмотрев, как мне показалось, достаточное количество решений я взялся писать собственное консольное «приложение» для загрузки часто используемых файлов с кодом (речь идёт именно о файлах а не о работе с буфером обмена). Для хранения выбрал сервис от GitHub, так как в работе без него никак (готовых библиотек для работы с API великое множество), а для сипатичного внешнего вида — знакомый всем компонент Console из арсенала Symfony.
Найденные приложения, в основном, предназначены для копирования кода в буфер обмена и обладают графическим интерфейсом, необходимости в котором я совершенно не испытываю. Периодически требовалось загрузить файлы со стандартными настройками на удалённый сервер, что тоже довольно затруднительно при использовании «больших» утилит. Специфика моей работы предпологает наличие PHP и Composer на всех машинах где я обитаю, так что вывод напрашивался сам собой — сделать свой велосипед.
Использовать Snipper может кто угодно, но в силу того, что написан он на PHP — основными пользователями будут именно PHP-разработчики. Задумывался он как приятное дополнение к Composer, чтобы быстро собрать стартовый проект и начать работу.
В основном я пользуюсь им для импорта конфигураций текстовых редакторов и IDE которые поддерживают EditorConfig, для
На данный момент реализована только базовая функциональность, а именно — получение файла (или файлов, если их много в gist) по имени сниппета. Впрочем, этого более чем достаточно на текущий момент, чтобы начать использовать Snipper в бою.
Установить Snipper можно с помощью Composer:
После необходимо указать персональный токен доступа для комфортной работы с GitHub API:
Замечу, что на данный момент никаких прав давать не требуется, хотя в последующих версиях может быть необходимо разрешение на создание gist'ов.
Поиск ведется по всем gist'ам которые принадлежат вам и помечены звездочкой. В описание к gist нужно добавить имя сниппета предварив его «всеми любимым» хэш-символом. Искать нужно опустив хэш-символ, указав только имя.
Если у вас есть gist с описанием «EditorConfig #.editorconfig», то для получения сниппета достаточно выполнить следующую команду:
В случае если найдено несколько сниппетов с одинаковым именем, Snipper предложит вам выбрать нужный из списка.
По-умолчанию Snipper не перезаписывает файлы с одинаковыми именами, а так же сообщает о таких случаях, однако можно явно указать приложению перезаписать файл(-ы) если выполнить команду
Надеюсь Snipper принесет пользу не только мне. Ваши предложения и замечания я, с удовольствием, рассмотрю в описании проблем к репозиторию на GitHub. Спасибо за внимание!
Ссылки:
Предыстория
В один прекрасный день я понял, что порядком задолбался переписывать мелкие файлы конфигураций из проекта в проект и стал искать ответ на вопрос — как избавить себя от страданий и не добавить новых?
Рассмотрев, как мне показалось, достаточное количество решений я взялся писать собственное консольное «приложение» для загрузки часто используемых файлов с кодом (речь идёт именно о файлах а не о работе с буфером обмена). Для хранения выбрал сервис от GitHub, так как в работе без него никак (готовых библиотек для работы с API великое множество), а для сипатичного внешнего вида — знакомый всем компонент Console из арсенала Symfony.
Чем не угодили существующие решения?
Найденные приложения, в основном, предназначены для копирования кода в буфер обмена и обладают графическим интерфейсом, необходимости в котором я совершенно не испытываю. Периодически требовалось загрузить файлы со стандартными настройками на удалённый сервер, что тоже довольно затруднительно при использовании «больших» утилит. Специфика моей работы предпологает наличие PHP и Composer на всех машинах где я обитаю, так что вывод напрашивался сам собой — сделать свой велосипед.
Кому это пригодится?
Использовать Snipper может кто угодно, но в силу того, что написан он на PHP — основными пользователями будут именно PHP-разработчики. Задумывался он как приятное дополнение к Composer, чтобы быстро собрать стартовый проект и начать работу.
В основном я пользуюсь им для импорта конфигураций текстовых редакторов и IDE которые поддерживают EditorConfig, для
.env
файлов, настроек самописных библиотек и даже для стандартной сборки клиентских компонентов с помощью Gulp.Что умеет Snipper
На данный момент реализована только базовая функциональность, а именно — получение файла (или файлов, если их много в gist) по имени сниппета. Впрочем, этого более чем достаточно на текущий момент, чтобы начать использовать Snipper в бою.
Как работает?
Установка и настройка
Установить Snipper можно с помощью Composer:
composer g require snipper/snipper:@stable
После необходимо указать персональный токен доступа для комфортной работы с GitHub API:
snipper init <token>
Замечу, что на данный момент никаких прав давать не требуется, хотя в последующих версиях может быть необходимо разрешение на создание gist'ов.
Поиск сниппетов
Поиск ведется по всем gist'ам которые принадлежат вам и помечены звездочкой. В описание к gist нужно добавить имя сниппета предварив его «всеми любимым» хэш-символом. Искать нужно опустив хэш-символ, указав только имя.
Если у вас есть gist с описанием «EditorConfig #.editorconfig», то для получения сниппета достаточно выполнить следующую команду:
snipper get .editorconfig
В случае если найдено несколько сниппетов с одинаковым именем, Snipper предложит вам выбрать нужный из списка.
По-умолчанию Snipper не перезаписывает файлы с одинаковыми именами, а так же сообщает о таких случаях, однако можно явно указать приложению перезаписать файл(-ы) если выполнить команду
get
с ключом -f
.В заключение
Надеюсь Snipper принесет пользу не только мне. Ваши предложения и замечания я, с удовольствием, рассмотрю в описании проблем к репозиторию на GitHub. Спасибо за внимание!
Ссылки:
Комментарии (3)
daruwanov
24.07.2015 01:40Согласен. Довольно интересно. Самому бывает нужно, часто обращаться к gist. Автору спасибо.
kix
26.07.2015 21:29+1Как думаете, может, стоит сделать вариант команды init, который бы просил токен в интерактивном режиме? Всё-таки не очень хорошо оставлять токены в консольной истории, как мне кажется.
А за утилиту — спасибо! :)
cawakharkov
Думаю может быть полезно.