49 lines
1.3 KiB
Markdown
49 lines
1.3 KiB
Markdown
# GAS stack
|
|
|
|
|
|
|
|
## Compiling
|
|
|
|
Requires a Go compiler (minimum 1.22.5) and a C compiler, due to use of CGo.
|
|
|
|
```sh
|
|
git clone https://git.offline-twitter.com/offline-labs/gas-stack.git
|
|
cd gas-stack
|
|
go build -o gas -tags fts5 ./cmd
|
|
|
|
# Installation (optional)
|
|
sudo mv gas /usr/local/bin # ...or anywhere on your $PATH
|
|
which gas # should print "/usr/local/bin/gas"
|
|
```
|
|
|
|
## Using
|
|
|
|
The linter (`gas sqlite_lint`) is stable and useful.
|
|
|
|
The code generator is buggy, incomplete, and not remotely stable, but still quite useful. Don't expect it to produce perfectly working code, or even to compile correctly (e.g., you'll probably have to fix the imports). Copy-paste the parts that are useful, and delete the parts that aren't.
|
|
|
|
|
|
#### Linter
|
|
|
|
```sh
|
|
gas sqlite_lint <path/to/schema.sql>
|
|
```
|
|
|
|
#### Code generator
|
|
|
|
```sh
|
|
gas generate table_name # Generates a model
|
|
gas generate --test table_name # Optional: generates tests
|
|
```
|
|
|
|
It prints to the console. You can copy-paste the result. Or you can use bash redirection:
|
|
|
|
```sh
|
|
gas generate users > pkg/db/user.go
|
|
gas generate --test users > pkg/db/user_test.go
|
|
```
|
|
|
|
Useful flags:
|
|
|
|
- `--schema`: by default, `gas generate` assumes that the schema is at `pkg/db/schema.sql`. Use `gas generate --schema <path/to/schema.sql> [...]` to indicate otherwise
|