Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

A free and open-source forge that lives in your Git repo.

Code

395 commit(s) on main

update readme Keenan Nemetz · 55m ago 32290114
source preview history blame raw 1.4 KiB
1# Developing Vole
2
3## Build
4
5```sh
6go build -tags libsqlite3,sqlite_fts5 -o vole ./cmd/vole
7```
8
9Vole links SQLite dynamically, so a build needs a C compiler and the SQLite
10development headers (`libsqlite3-dev` on Debian and Ubuntu, `sqlite-devel` on
11Fedora and RHEL). The library must be built with FTS5, which the distributions
12above enable; global search uses it. The binary needs `libsqlite3.so.0` on the
13machine that runs it. `go.mod` pins the Go toolchain, so an older `go` on your
14`PATH` fetches the right one on the first build.
15
16## Test
17
18```sh
19go test -tags sqlite_fts5 ./...
20```
21
22## Before you push
23
24```sh
25vole workflow run verify
26```
27
28`verify` is everything CI runs: formatting, vet, build, the license and
29vulnerability scans, the packages, the deployment files, Markdown links, and the
30tests. Its steps live in
31[`.vole/workflows/verify.yaml`](.vole/workflows/verify.yaml), so a local run and a
32pushed run execute the same commands in the same image. That means it needs a
33container runtime (Docker, Podman, or nerdctl) rather than the tools on your
34`PATH`, and network access for module downloads: the job declares
35`network: bridge`, so the runner that takes it is started with
36`--container-network bridge`, and a local run defaults to the same network.
37
38## Using Vole as a library
39
40Vole is also a Go library. See
41[Architecture § Using Vole as a library](docs/architecture.md#using-vole-as-a-library).
42