update readme file
This commit is contained in:
parent
72a713cbc3
commit
90eea90099
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
__pycache__
|
||||
|
||||
assets/
|
||||
|
||||
|
10
Dockerfile
Normal file
10
Dockerfile
Normal file
@ -0,0 +1,10 @@
|
||||
FROM python:3.10-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . /app
|
||||
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
|
||||
|
||||
ENTRYPOINT ["./entrypoint.sh"]
|
329
README.md
329
README.md
@ -1,329 +0,0 @@
|
||||
# :cloud: Air - Live reload for Go apps
|
||||
|
||||
[](https://github.com/air-verse/air/actions?query=workflow%3AGo+branch%3Amaster) [](https://www.codacy.com/gh/air-verse/air/dashboard?utm_source=github.com&utm_medium=referral&utm_content=air-verse/air&utm_campaign=Badge_Grade) [](https://goreportcard.com/report/github.com/air-verse/air) [](https://codecov.io/gh/air-verse/air)
|
||||
|
||||

|
||||
|
||||
English | [简体中文](README-zh_cn.md) | [繁體中文](README-zh_tw.md)
|
||||
|
||||
## Motivation
|
||||
|
||||
When I started developing websites in Go and using [gin](https://github.com/gin-gonic/gin) framework, it was a pity
|
||||
that gin lacked a live-reloading function. So I searched around and tried [fresh](https://github.com/pilu/fresh), it seems not much
|
||||
flexible, so I intended to rewrite it better. 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 developing Go applications. Run `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 any command
|
||||
* Support excluding subdirectories
|
||||
* Allow watching new directories after Air started
|
||||
* Better building process
|
||||
|
||||
### Overwrite specify configuration from arguments
|
||||
|
||||
Support air config fields as arguments:
|
||||
|
||||
If you want to config build command and run command, you can use like the following command without the config file:
|
||||
|
||||
```shell
|
||||
air --build.cmd "go build -o bin/api cmd/run.go" --build.bin "./bin/api"
|
||||
```
|
||||
|
||||
Use a comma to separate items for arguments that take a list as input:
|
||||
|
||||
```shell
|
||||
air --build.cmd "go build -o bin/api cmd/run.go" --build.bin "./bin/api" --build.exclude_dir "templates,build"
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
### Via `go install` (Recommended)
|
||||
|
||||
With go 1.22 or higher:
|
||||
|
||||
```bash
|
||||
go install github.com/air-verse/air@latest
|
||||
```
|
||||
|
||||
### Via install.sh
|
||||
|
||||
```shell
|
||||
# binary will be $(go env GOPATH)/bin/air
|
||||
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
|
||||
|
||||
# or install it into ./bin/
|
||||
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s
|
||||
|
||||
air -v
|
||||
```
|
||||
|
||||
### Via [goblin.run](https://goblin.run)
|
||||
|
||||
```shell
|
||||
# binary will be /usr/local/bin/air
|
||||
curl -sSfL https://goblin.run/github.com/air-verse/air | sh
|
||||
|
||||
# to put to a custom path
|
||||
curl -sSfL https://goblin.run/github.com/air-verse/air | PREFIX=/tmp sh
|
||||
```
|
||||
|
||||
### Docker/Podman
|
||||
|
||||
Please pull this Docker image [cosmtrek/air](https://hub.docker.com/r/cosmtrek/air).
|
||||
|
||||
```shell
|
||||
docker/podman run -it --rm \
|
||||
-w "<PROJECT>" \
|
||||
-e "air_wd=<PROJECT>" \
|
||||
-v $(pwd):<PROJECT> \
|
||||
-p <PORT>:<APP SERVER PORT> \
|
||||
cosmtrek/air
|
||||
-c <CONF>
|
||||
```
|
||||
|
||||
#### Docker/Podman .${SHELL}rc
|
||||
|
||||
if you want to use air continuously like a normal app, you can create a function in your ${SHELL}rc (Bash, Zsh, etc…)
|
||||
|
||||
```shell
|
||||
air() {
|
||||
podman/docker run -it --rm \
|
||||
-w "$PWD" -v "$PWD":"$PWD" \
|
||||
-p "$AIR_PORT":"$AIR_PORT" \
|
||||
docker.io/cosmtrek/air "$@"
|
||||
}
|
||||
```
|
||||
|
||||
`<PROJECT>` is your project path in container, eg: /go/example
|
||||
if you want to enter the container, Please add --entrypoint=bash.
|
||||
|
||||
<details>
|
||||
<summary>For example</summary>
|
||||
|
||||
One of my project runs in Docker:
|
||||
|
||||
```shell
|
||||
docker run -it --rm \
|
||||
-w "/go/src/github.com/cosmtrek/hub" \
|
||||
-v $(pwd):/go/src/github.com/cosmtrek/hub \
|
||||
-p 9090:9090 \
|
||||
cosmtrek/air
|
||||
```
|
||||
|
||||
Another example:
|
||||
|
||||
```shell
|
||||
cd /go/src/github.com/cosmtrek/hub
|
||||
AIR_PORT=8080 air -c "config.toml"
|
||||
```
|
||||
|
||||
this will replace `$PWD` with the current directory, `$AIR_PORT` is the port where to publish and `$@` is to accept arguments of the application itself for example -c
|
||||
|
||||
</details>
|
||||
|
||||
## Usage
|
||||
|
||||
For less typing, you could add `alias air='~/.air'` to your `.bashrc` or `.zshrc`.
|
||||
|
||||
First enter into your project
|
||||
|
||||
```shell
|
||||
cd /path/to/your_project
|
||||
```
|
||||
|
||||
The simplest usage is run
|
||||
|
||||
```shell
|
||||
# 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.
|
||||
|
||||
```shell
|
||||
air init
|
||||
```
|
||||
|
||||
After this, you can just run the `air` command without additional arguments, and it will use the `.air.toml` file for configuration.
|
||||
|
||||
```shell
|
||||
air
|
||||
```
|
||||
|
||||
For modifying the configuration refer to the [air_example.toml](air_example.toml) file.
|
||||
|
||||
### Runtime arguments
|
||||
|
||||
You can pass arguments for running the built binary by adding them after the air command.
|
||||
|
||||
```shell
|
||||
# Will run ./tmp/main bench
|
||||
air bench
|
||||
|
||||
# Will run ./tmp/main server --port 8080
|
||||
air server --port 8080
|
||||
```
|
||||
|
||||
You can separate the arguments passed for the air command and the built binary with `--` argument.
|
||||
|
||||
```shell
|
||||
# Will run ./tmp/main -h
|
||||
air -- -h
|
||||
|
||||
# Will run air with custom config and pass -h argument to the built binary
|
||||
air -c .air.toml -- -h
|
||||
```
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```yaml
|
||||
services:
|
||||
my-project-with-air:
|
||||
image: cosmtrek/air
|
||||
# working_dir value has to be the same of mapped volume
|
||||
working_dir: /project-package
|
||||
ports:
|
||||
- <any>:<any>
|
||||
environment:
|
||||
- ENV_A=${ENV_A}
|
||||
- ENV_B=${ENV_B}
|
||||
- ENV_C=${ENV_C}
|
||||
volumes:
|
||||
- ./project-relative-path/:/project-package/
|
||||
```
|
||||
|
||||
### Debug
|
||||
|
||||
`air -d` prints all logs.
|
||||
|
||||
## Installation and Usage for Docker users who don't want to use air image
|
||||
|
||||
`Dockerfile`
|
||||
|
||||
```Dockerfile
|
||||
# Choose whatever you want, version >= 1.16
|
||||
FROM golang:1.22-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN go install github.com/air-verse/air@latest
|
||||
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
CMD ["air", "-c", ".air.toml"]
|
||||
```
|
||||
|
||||
`docker-compose.yaml`
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
services:
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
# Correct the path to your Dockerfile
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- 8080:3000
|
||||
# Important to bind/mount your codebase dir to /app dir for live reload
|
||||
volumes:
|
||||
- ./:/app
|
||||
```
|
||||
|
||||
## Q&A
|
||||
|
||||
### "command not found: air" or "No such file or directory"
|
||||
|
||||
```shell
|
||||
export GOPATH=$HOME/xxxxx
|
||||
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
||||
export PATH=$PATH:$(go env GOPATH)/bin <---- Confirm this line in you profile!!!
|
||||
```
|
||||
|
||||
### Error under wsl when ' is included in the bin
|
||||
|
||||
Should use `\` to escape the `' in the bin. related issue: [#305](https://github.com/air-verse/air/issues/305)
|
||||
|
||||
### Question: how to do hot compile only and do not run anything?
|
||||
|
||||
[#365](https://github.com/air-verse/air/issues/365)
|
||||
|
||||
```toml
|
||||
[build]
|
||||
cmd = "/usr/bin/true"
|
||||
```
|
||||
|
||||
### How to Reload the Browser Automatically on Static File Changes
|
||||
|
||||
|
||||
Refer to issue [#512](https://github.com/air-verse/air/issues/512) for additional details.
|
||||
|
||||
* Ensure your static files in `include_dir`, `include_ext`, or `include_file`.
|
||||
* Ensure your HTML has a `</body>` tag
|
||||
* Activate the proxy by configuring the following config:
|
||||
|
||||
```toml
|
||||
[proxy]
|
||||
enabled = true
|
||||
proxy_port = <air proxy port>
|
||||
app_port = <your server port>
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
Please note that it requires Go 1.16+ since I use `go mod` to manage dependencies.
|
||||
|
||||
```shell
|
||||
# Fork this project
|
||||
|
||||
# Clone it
|
||||
mkdir -p $GOPATH/src/github.com/cosmtrek
|
||||
cd $GOPATH/src/github.com/cosmtrek
|
||||
git clone git@github.com:<YOUR USERNAME>/air.git
|
||||
|
||||
# Install dependencies
|
||||
cd air
|
||||
make ci
|
||||
|
||||
# Explore it and happy hacking!
|
||||
make install
|
||||
```
|
||||
|
||||
Pull requests are welcome.
|
||||
|
||||
### Release
|
||||
|
||||
```shell
|
||||
# Checkout to master
|
||||
git checkout master
|
||||
|
||||
# Add the version that needs to be released
|
||||
git tag v1.xx.x
|
||||
|
||||
# Push to remote
|
||||
git push origin v1.xx.x
|
||||
|
||||
# The CI will process and release a new version. Wait about 5 min, and you can fetch the latest version
|
||||
```
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://star-history.com/#air-verse/air&Date)
|
||||
|
||||
## Sponsor
|
||||
|
||||
[](https://www.buymeacoffee.com/cosmtrek)
|
||||
|
||||
Give huge thanks to lots of supporters. I've always been remembering your kindness.
|
||||
|
||||
## License
|
||||
|
||||
[GNU General Public License v3.0](LICENSE)
|
3
entrypoint.sh
Executable file
3
entrypoint.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#! /bin/sh
|
||||
|
||||
python3 landmarks.py $@ 2>&1 | grep -vE '^(WARNING:|I0000|INFO:)' | awk '{print}'
|
Loading…
x
Reference in New Issue
Block a user