An open API service indexing awesome lists of open source software.

https://github.com/andrewrosss/gitig

Generate .gitignore files from the command-line
https://github.com/andrewrosss/gitig

cargo cli command-line command-line-tool gitignore gitignore-generator pipx python rust

Last synced: 16 days ago
JSON representation

Generate .gitignore files from the command-line

Awesome Lists containing this project

README

        

# gitig

Generate `.gitignore` files from the command-line

[![PyPI](https://img.shields.io/pypi/v/gitig)](https://pypi.org/project/gitig/) [![Crates.io](https://img.shields.io/crates/v/gitig-rs)](https://crates.io/crates/gitig-rs)

`gitig` writes its output to stdout. Redirect the results to wherever makes sense for you, for example:

```bash
gi python > .gitignore
```

## Installation

### With `cargo`

`gitig` has an implementation in Rust (and an implementation in Python) and can be installed via `cargo`:

```bash
cargo install gitig-rs
```

### With `pipx`

`gitig` is intended to be used as an **end-user command-line application** (i.e. not as a package's dependency). The easiest way to get started is with `pipx`:

```bash
pipx install gitig
```

### With `pip`

`gitig` can also be installed via vanilla pip (or poetry, etc.):

```bash
pip install gitig
```

## Usage

```text
$ gi -h
usage: gi [-h] [-v] [--completion {bash,fish}] [--no-pager]
[template [template ...]]

positional arguments:
template Template(s) to include in the generated .gitignore
file. If no templates are specified, display a list of
all available templates.

optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
--completion {bash,fish}
Generate a completion file for the selected shell.
--no-pager Write template list to stdout. By default, this
program attempts to paginate the list of available
templates for easier reading.
```

## Examples

- List all available gitignore templates (using a pager if one is available):

```bash
gi
```

- Generate a gitignore file for Python and Jupyter:

```bash
gi python jupyternotebooks
```

## Enable tab completion for Bash or Fish

`gitig` supports generating completion scripts for Bash and Fish. Below are commands to generate completion scripts for the various shells

> For **Bash**, you will likely have to `source` (`.`) the generated tab completion script for it to take effect.
>
> To enable tab completion on startup you can source the completion generated completion script in your `.bashrc` or `.bash_profile`.

### Bash

```bash
gi --completion bash > /etc/bash_completion.d/gi.bash-completion
```

### Bash (Homebrew)

```bash
gi --completion bash > $(brew --prefix)/etc/bash_completion.d/gi.bash-completion
```

### Fish

```fish
gi --completion fish > ~/.config/fish/completions/gi.fish
```

### Fish (Homebrew)

```fish
gi --completion fish > (brew --prefix)/share/fish/vendor_completions.d/gi.fish
```

## API

### CLI

```bash
gi # query gitignore.io and list available options
```

```bash
gi python jupyternotebooks # write a .gitingore file for python and jupyter to stdout
```

```bash
gi --completion bash # write generated bash autocompletion script to stdout
gi --completion fish # write generated fish autocompletion script to stdout
```

```bash
gi --version # write gitig version info to stdout
```

### Autocompletion

```bash
gi
1c 1c-bitrix actionscript
ada adobe advancedinstaller adventuregamestudio
agda al alteraquartusii altium
...
```

```bash
$ gi python j
jabref jboss6 jekyll jetbrains+iml joe jupyternotebooks
java jboss-4-2-3-ga jenv jgiven joomla justcode
jboss jboss-6-x jetbrains jigsaw jspm
jboss4 jdeveloper jetbrains+all jmeter julia
```

### Rust API

```rust
gitig::list_templates(); // same as `gi`
gitig::create(vec!['python', 'jupyter']); // same as `gi python jupyter`
gitig::bash_completion(); // same as `gi --completion bash`
gitig::fish_completion(); // same as `gi --completion fish`
gitig::VERSION;
```

### Python API

```python
import gitig

gitig.list_templates() # same as `gi`
gitig.create(['python', 'jupyter']) # same as `gi python jupyter`
gitig.bash_completion() # same as `gi --completion bash`
gitig.fish_completion() # same as `gi --completion fish`
gitig.__version__
```

## Contributing

### Rust

1. Fork the repo
1. Run `cargo build`
1. Run `pre-commit install`
1. Add your changes (adding/updating tests is always nice too)
1. Commit your changes + push to your fork
1. Open a PR

### Python

1. Have or install a recent version of `poetry` (version >= 1.1)
1. Fork the repo
1. Setup a virtual environment (however you prefer)
1. Run `poetry install`
1. Run `pre-commit install`
1. Add your changes (adding/updating tests is always nice too)
1. Commit your changes + push to your fork
1. Open a PR