https://github.com/shihanng/gig
Generate .gitignore files from your terminal (mostly) offline!
https://github.com/shihanng/gig
git gitignore gitignore-cli gitignore-files gitignore-generator go golang
Last synced: 2 months ago
JSON representation
Generate .gitignore files from your terminal (mostly) offline!
- Host: GitHub
- URL: https://github.com/shihanng/gig
- Owner: shihanng
- License: mit
- Created: 2019-11-25T12:40:54.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2022-03-03T00:22:21.000Z (over 3 years ago)
- Last Synced: 2025-04-30T07:06:51.798Z (2 months ago)
- Topics: git, gitignore, gitignore-cli, gitignore-files, gitignore-generator, go, golang
- Language: Go
- Homepage: https://dev.to/shihanng/gig-a-gitignore-generator-opc
- Size: 637 KB
- Stars: 84
- Watchers: 2
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `gig` -- .gitignore generator
[](https://github.com/shihanng/gig/actions?query=workflow%3Amain)
[](https://github.com/shihanng/gig/actions?query=workflow%3Arelease)
[](https://github.com/shihanng/gig/blob/develop/LICENSE)
[](https://github.com/shihanng/gig/releases)
[](https://goreportcard.com/report/github.com/shihanng/gig)
[](https://coveralls.io/github/shihanng/gig?branch=develop)`gig` is a command line tool to help you create useful `.gitignore` files for your project.
It is inspired by [gitignore.io](https://www.gitignore.io/) and make use of
the large collection of useful [`.gitignore` templates](https://github.com/toptal/gitignore) of the web service.
This also means that `gig` supports the are four file types that gitignore.io recognizes.
Content generated by `gig` should match the one generated by [gitignore.io](https://www.gitignore.io/) except the
order of stacks in which [gitignore.io](https://www.gitignore.io/) does not seem to guarantee any.## Motivation
Prior to this project, I used to have one of [these command lines](https://docs.gitignore.io/install/command-line) in my `.zshrc`.
However, problems I have with this command line are that
- I won't be able to use it without internet access
- It seems [gitignore.io](https://www.gitignore.io/) that is not using the latest templates in https://github.com/toptal/gitignore. The project needs to update to the latest git submodule then deploy it.Therefore this tool is created to solve the two main problems above.
# Install
## [Homebrew (macOS)](https://github.com/shihanng/homebrew-gig)
```
brew install shihanng/gig/gig
```## Binaries
The [release page contains](https://github.com/shihanng/gig/releases) binaries built
for various platforms. Download then extract the binary with `tar -xf`.
Place the binary in the `$PATH` e.g. `/usr/local/bin`.## With `go get`
```
go get github.com/shihanng/gig
```# Usage
There are several ways you can generate the `.gitignore` file:
### Using the supported language as input arguments
```
$ gig gen Go Elm### Elm ###
# elm-package generated files
elm-stuff
# elm-repl generated files
repl-temp-*### Go ###
# Binaries for programs and plugins
...
```At the very first run the program will clone the templates repository
into `$XDG_CACHE_HOME/gig`.
This means that internet connection is not required after the first successful run.### Using the search functionality (depends on [fzf](https://github.com/junegunn/fzf))
```
$ gig search
```
### Using the EXPERIMENTAL auto generate functionality
```
$ gig autogen
```### For more information, see
```
gig --help
```# Development
Found a bug or want to hack around? Clone the repository:
```
git clone [email protected]:shihanng/gig.git
```When you are ready run the tests:
```
make test
make integ-test
make lint
```Where `test` run the tests that can be run locally.
`integ-test` run the tests that require internet access.
`lint` help you write better Go codes.Add subcommand with [cobra](https://github.com/spf13/cobra)
(version managed in [tools.go](./tools.go) with [go.mod](./go.mod)):```
$ cobra --config .cobra.yaml add
```Update golden file:
```
$ go test . -tags=integration -update
```