Language agnostic single file package manager
Языконезависимый менеджер однофайловых пакетов (версионированный copy-paste
)
Бывают участки кода, которые, слегка модифицируясь копируются из проекта в проект. Ради них не рационально заводить и регистрировать отдельный пакет в типовых пакетных менеджерах, потому что:
При этом хочется видеть историю изменений, централизованно хранить и делиться такими участками кода. Для таких случаев подходит goga
.
goga
это не замена gem
, bundle
, npm
, yarn
и тп, а дополнение. Он живет рядом и хорошо делает свою маленькую работу.
goga
-модуль это обычный исходник на любом языке программирования, в который первой строкой автоматически добавлен goga
-комментарий с адресом источника.
golang
Установите golang
в вашу ОС по инструкции
Установите goga
go get github.com/dapi/goga
Список всех команд:
goga
goga add URL [PATH]
Скачивает по ссылке файл, кладет по указанному пути и добавляет первой строкой комментарий с ссылкой на источник.
Например:
goga add https://github.com/dapi/elements/blob/master/spinner.js ./app/javascripts/
Далее вы можете подключать и перемещать файл по проекту как вам удобно, используя проектную систему контроля версий.
goga status [DIR]
Сканирует указанную или текущую директорию на goga
-модули (файлы с магическим комментарием) и сравнивает их с источником, сообщает если нашел изменения. Например:
> go run ./goga.go status
Scanning directory: /home/danil/code/goga_samples/
Found /home/danil/code/goga_samples/spinner.js checking - 4 diffs found
goga push FILE
Заливает измененния в удаленный источник указанный в магическом комментарии. Например:
goga push ./app/javascripts/spinner.js
goga diff FILE
Показывает разницу между локальным файлом и его источником. Например:
goga diff
goga syntax
Выводит список поддерживаемых расширений и видов комментариев. Например:
> go run syntax
List of available file extensions and its comments syntax:
.py # goga URI
.pl # goga URI
.sh # goga URI
.haml // goga URI
.c // goga URI
.cs // goga URI
.go // goga URI
.php // goga URI
.sql -- goga URI
.xml <!-- goga URI -->
.html <!-- goga URI -->
.swift -- goga URI
.js // goga URI
.java // goga URI
.slim // goga URI
.rb # goga URI
При скачивании модуля через goga
он автоматически добавляет первой строкой магичекий комментарий со ссылкой на источник, например:
// goga https://github.com/dapi/elements/blob/master/spinner.js
На данный момент поддерживюатся исходники следующих языков программирования
(определяется через расширение файла) - https://github.com/dapi/goga/blob/master/cmd/syntax.go#L31
Если Вам нужна поддержка других языкой - создайте issue или пришлите PR