schnutibox/vendor/github.com/cosmtrek/air/README.md

137 lines
3.9 KiB
Markdown

# Air [![Go](https://github.com/cosmtrek/air/workflows/Go/badge.svg)](https://github.com/cosmtrek/air/actions?query=workflow%3AGo+branch%3Amaster) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/4885b8dddaa540f9ae6fe850b4611b7b)](https://www.codacy.com/app/cosmtrek/air?utm_source=github.com&utm_medium=referral&utm_content=cosmtrek/air&utm_campaign=Badge_Grade) [![Go Report Card](https://goreportcard.com/badge/github.com/cosmtrek/air)](https://goreportcard.com/report/github.com/cosmtrek/air) [![codecov](https://codecov.io/gh/cosmtrek/air/branch/master/graph/badge.svg)](https://codecov.io/gh/cosmtrek/air)
:cloud: Live reload for Go apps
![air](docs/air.png)
## Motivation
When I get started with developing websites in Go and [gin](https://github.com/gin-gonic/gin) framework, it's a pity
that gin lacks live-reloading function. In fact, I tried [fresh](https://github.com/pilu/fresh) and it seems not much
flexible, so I intended to rewrite it in a better way. Finally, Air's born.
In addition, great thanks to [pilu](https://github.com/pilu), no fresh, no air :)
Air is yet another live-reloading command line utility for Go applications in development. Just `air` in your project root directory, leave it alone,
and focus on your code.
NOTE: This tool has nothing to do with hot-deploy for production.
## Features
* Colorful log output
* Customize build or binary command
* Support excluding subdirectories
* Allow watching new directories after Air started
* Better building process
## Installation
### Prefer install.sh
```bash
# binary will be $(go env GOPATH)/bin/air
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
# or install it into ./bin/
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s
air -v
```
P.S. Great thanks mattn's [PR](https://github.com/cosmtrek/air/pull/1) for supporting Windows platform.
### Docker
Please pull this docker image [cosmtrek/air](https://hub.docker.com/r/cosmtrek/air).
```bash
docker run -it --rm \
-w "<PROJECT>" \
-e "air_wd=<PROJECT>" \
-v $(pwd):<PROJECT> \
-p <PORT>:<APP SERVER PORT> \
cosmtrek/air
-c <CONF>
```
For example, one of my project runs in docker:
```bash
docker run -it --rm \
-w "/go/src/github.com/cosmtrek/hub" \
-v $(pwd):/go/src/github.com/cosmtrek/hub \
-p 9090:9090 \
cosmtrek/air
```
## Usage
For less typing, you could add `alias air='~/.air'` to your `.bashrc` or `.zshrc`.
First enter into your project
```bash
cd /path/to/your_project
```
The simplest usage is run
```bash
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
```
You can initialize the `.air.toml` configuration file to the current directory with the default settings running the following command.
```bash
air init
```
After this you can just run the `air` command without additional arguments and it will use the `.air.toml` file for configuration.
```bash
air
```
For modifying the configuration refer to the [air_example.toml](air_example.toml) file.
### Debug
`air -d` prints all logs.
## Development
Please note that it requires Go 1.13+ since I use `go mod` to manage dependencies.
```bash
# 1. fork this project
# 2. clone it
mkdir -p $GOPATH/src/github.com/cosmtrek
cd $GOPATH/src/github.com/cosmtrek
git clone git@github.com:<YOUR USERNAME>/air.git
# 3. install dependencies
cd air
make ci
# 4. explore it and happy hacking!
make install
```
BTW: Pull requests are welcome~
## Sponsor
<a href="https://www.buymeacoffee.com/36lcNbW" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;" ></a>
Huge thanks to the following supporters. I've always been remembering your kindness.
* Peter Aba
* Apostolis Anastasiou
* keita koga
## License
[GNU General Public License v3.0](LICENSE)