Giter VIP home page Giter VIP logo

goga's Introduction

goga logo

goga

Языконезависимый менеджер однофайловых пакетов (версионированный copy-paste)

Build Status

Зачем?

Бывают участки кода, которые, слегка модифицируясь копируются из проекта в проект. Ради них не рационально заводить и регистрировать отдельный пакет в типовых пакетных менеджерах, потому что:

  1. Уходит время на создание и поддержку - необходимо создать тестовую инфраструктуру, описать спецификации, фактически придется создать ещё один проект
  2. Придется отдельно вносить изменения в самом пакете, обновлять пакет в основном приложении и заново заниматься его интеграционным тестированием, а если пойдет что-то не так, обрытно переключаться в проект пакета, вносить там изменения в тесты и код, публиковать и тп.
  3. Часто бывает, что проще слегка модифицировать код под новый проект, чем создавать универсальное решение подходящее всем проектам.

При этом хочется видеть историю изменений, централизованно хранить и делиться такими участками кода. Для таких случаев подходит goga.

goga это не замена gem, bundle, npm, yarn и тп, а дополнение. Он живет рядом и хорошо делает свою маленькую работу.

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

Что на борту?

  • Подключение однофайловых пакетов одной командой.
  • Использует Ваш git и gists для хранения пакетов.
  • Публикация пакета в общий репозиторий одной командой.
  • Живет в системе контроля версий вашего приложения совместно с основным пакетным менеджером.
  • Не зависит от языка программированя.
  • Легко вность изменения в исходный код пакетов.
  • Мультиплатформенное решение, написано на golang

Установка

  1. Установите golang в вашу ОС по инструкции

  2. Установите 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

Планы

  • Поддержка доступа к git-репозиторию по логин/пароль (сейчас только ssh-ключи)
  • Поддержка gist
  • Поддержка автоматического определения gitlab/bitbucket-репозиториев.
  • Улучшить вывод diff
  • shell-автокомплит

Поддерживаемые источники модулей

Языковая поддержка

На данный момент поддерживюатся исходники следующих языков программирования (определяется через расширение файла) - https://github.com/dapi/goga/blob/master/cmd/syntax.go#L31

Если Вам нужна поддержка других языкой - создайте issue или пришлите PR

goga's People

Contributors

abataloff avatar dapi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

abataloff

goga's Issues

PR

Publicate on

  • hackernews
  • reddit
  • awesome lists
  • other lists
  • Support of famous people

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.