2024-12-19 17:17:40 +03:00
# AdGuard Home scripts
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
## `hooks/`: Git hooks
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2020-12-30 18:26:25 +03:00
Run `make init` from the project root.
2024-12-19 17:17:40 +03:00
## `querylog/`: Query Log Helpers
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `npm install` : install dependencies. Run this first.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `npm run anonymize <source> <dst>` : read the query log from the `<source>` and write anonymized version to `<dst>` .
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
## `make/`: Makefile scripts
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
The release channels are: `development` (the default), `edge` , `beta` , and `release` . If verbosity levels aren’ t documented here, there are only two: `0` , don’ t print anything, and `1` , be verbose.
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### `build-docker.sh`: Build a multi-architecture Docker image
2020-12-30 18:26:25 +03:00
Required environment:
2024-12-19 17:17:40 +03:00
- `CHANNEL` : release channel, see above.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `DIST_DIR` : the directory where a release has previously been built.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `REVISION` : current Git revision.
2024-11-08 17:18:16 +03:00
2024-12-19 17:17:40 +03:00
- `VERSION` : release version.
2020-12-30 18:26:25 +03:00
Optional environment:
2024-12-19 17:17:40 +03:00
- `DOCKER_IMAGE_NAME` : the name of the resulting Docker container. By default it’ s `adguardhome-dev` .
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `DOCKER_OUTPUT` : the `--output` parameters. By default they are `type=image,name=${DOCKER_IMAGE_NAME},push=false` .
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `SUDO` : allow users to use `sudo` or `doas` with `docker` . By default none is used.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
### `build-release.sh`: Build a release for all platforms
2020-12-30 18:26:25 +03:00
Required environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `CHANNEL` : release channel, see above.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GPG_KEY` and `GPG_KEY_PASSPHRASE` : data for `gpg` . Only required if `SIGN` is `1` .
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `ARCH` and `OS` : space-separated list of architectures and operating systems for which to build a release. For example, to build only for 64-bit ARM and AMD on Linux and Darwin:
2023-06-21 17:14:10 +03:00
2021-03-10 20:12:18 +03:00
```sh
make ARCH='amd64 arm64' OS='darwin linux' … build-release
```
2024-12-19 17:17:40 +03:00
2021-03-10 20:12:18 +03:00
The default value is `''` , which means build everything.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `DIST_DIR` : the directory to build a release into. The default value is `dist` .
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `SIGN` : `0` to not sign the resulting packages, `1` to sign. The default value is `1` .
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : `1` to be verbose, `2` to also print environment. This script calls `go-build.sh` with the verbosity level one level lower, so to get verbosity level `2` in `go-build.sh` , set this to `3` when calling `build-release.sh` .
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERSION` : release version. Will be set by `version.sh` if it is unset or if it has the default `Makefile` value of `v0.0.0` .
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
We’ re using Go’ s [forward compatibility mechanism][go-toolchain] for updating the Go version. This means that if your `go` version is 1.21+ but is different from the one required by AdGuard Home, the `go` tool will automatically download the required version.
2024-02-08 20:39:18 +03:00
If you want to use the version installed on your builder, run:
```sh
go get go@$YOUR_VERSION
go mod tidy
```
and call `make` with `GOTOOLCHAIN=local` .
[go-toolchain]: https://go.dev/blog/toolchain
2024-12-19 17:17:40 +03:00
### `go-bench.sh`: Run backend benchmarks
2023-07-07 18:27:33 +03:00
Optional environment:
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
- `TIMEOUT_FLAGS` : set timeout flags for tests. The default value is `--timeout=30s` .
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run and every Go package that is processed. `2` also shows subcommands and environment. The default value is `0` , don’ t be verbose.
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
### `go-build.sh`: Build the backend
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GOAMD64` : architectural level for [AMD64][amd64]. The default value is `v1` .
2023-10-09 13:24:52 +03:00
2024-12-19 17:17:40 +03:00
- `GOARM` : ARM processor options for the Go compiler.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GOMIPS` : ARM processor options for the Go compiler.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `OUT` : output binary name.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `PARALLELISM` : set the maximum number of concurrently run build commands (that is, compiler, linker, etc.).
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `SOURCE_DATE_EPOCH` : the [standardized][repr] environment variable for the Unix epoch time of the latest commit in the repository. If set, overrides the default obtained from Git. Useful for reproducible builds.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run and every Go package that is processed. `2` also shows subcommands and environment. The default value is `0` , don’ t be verbose.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERSION` : release version. Will be set by `version.sh` if it is unset or if it has the default `Makefile` value of `v0.0.0` .
2020-12-30 18:26:25 +03:00
Required environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `CHANNEL` : release channel, see above.
2020-12-30 18:26:25 +03:00
2023-10-09 13:24:52 +03:00
[amd64]: https://github.com/golang/go/wiki/MinimumRequirements#amd64
[repr]: https://reproducible-builds.org/docs/source-date-epoch/
2022-02-01 21:44:01 +03:00
2024-12-19 17:17:40 +03:00
### `go-deps.sh`: Install backend dependencies
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run and every Go package that is processed. `2` also shows subcommands and environment. The default value is `0` , don’ t be verbose.
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### `go-fuzz.sh`: Run backend fuzz tests
2023-07-07 18:27:33 +03:00
Optional environment:
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
- `FUZZTIME_FLAGS` : set fuss flags for tests. The default value is `--fuzztime=20s` .
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
- `TIMEOUT_FLAGS` : set timeout flags for tests. The default value is `--timeout=30s` .
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run and every Go package that is processed. `2` also shows subcommands and environment. The default value is `0` , don’ t be verbose.
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
### `go-lint.sh`: Run backend static analyzers
2023-07-07 18:27:33 +03:00
2024-12-19 17:17:40 +03:00
Don’ t forget to run `make go-tools` once first!
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `EXIT_ON_ERROR` : if set to `0` , don’ t exit the script after the first encountered error. The default value is `1` .
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run. `2` also shows subcommands. The default value is `0` , don’ t be verbose.
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### `go-test.sh`: Run backend tests
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `RACE` : set to `0` to not use the Go race detector. The default value is `1` , use the race detector.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `TIMEOUT_FLAGS` : set timeout flags for tests. The default value is `--timeout=30s` .
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `VERBOSE` : verbosity level. `1` shows every command that is run and every Go package that is processed. `2` also shows subcommands. The default value is `0` , don’ t be verbose.
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### `go-tools.sh`: Install backend tooling
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
Installs the Go static analysis and other tools into `${PWD}/bin` . Either add `${PWD}/bin` to your `$PATH` before all other entries, or use the commands directly, or use the commands through `make` (for example, `make go-lint` ).
2020-12-30 18:26:25 +03:00
Optional environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `GO` : set an alternative name for the Go compiler.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
### `version.sh`: Generate And Print The Current Version
2023-06-21 17:14:10 +03:00
Required environment:
2024-12-19 17:17:40 +03:00
- `CHANNEL` : release channel, see above.
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
## `snap/`: Snapcraft scripts
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
### `build.sh`
2023-06-21 17:14:10 +03:00
Builds the Snapcraft packages from the binaries created by `download.sh` .
2024-12-19 17:17:40 +03:00
### `download.sh`
2023-06-21 17:14:10 +03:00
Downloads the binaries to pack them into Snapcraft packages.
2020-12-30 18:26:25 +03:00
Required environment:
2023-06-21 17:14:10 +03:00
2024-12-19 17:17:40 +03:00
- `CHANNEL` : release channel, see above.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
### `upload.sh`
2023-06-21 17:14:10 +03:00
Uploads the Snapcraft packages created by `build.sh` .
Required environment:
2024-12-19 17:17:40 +03:00
- `SNAPCRAFT_CHANNEL` : Snapcraft release channel: `edge` , `beta` , or `candidate` .
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `SNAPCRAFT_STORE_CREDENTIALS` : Credentials for Snapcraft store.
2021-12-03 16:20:10 +03:00
2023-06-21 17:14:10 +03:00
Optional environment:
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `SNAPCRAFT_CMD` : Overrides the Snapcraft command. Default: `snapcraft` .
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
## `translations/`: Twosky Integration Script
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations help` : print usage.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations download [-n <count>]` : download and save all translations. `n` is optional flag where count is a number of concurrent downloads.
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations upload` : upload the base `en` locale.
2023-03-21 17:43:48 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations summary` : show the current locales summary.
2023-03-21 17:43:48 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations unused` : show the list of unused strings.
2023-03-21 17:43:48 +03:00
2024-12-19 17:17:40 +03:00
- `go run ./scripts/translations auto-add` : add locales with additions to the git and restore locales with deletions.
2023-03-21 17:43:48 +03:00
2024-12-19 17:17:40 +03:00
After the download you’ ll find the output locales in the `client/src/__locales/` directory.
2020-12-30 18:26:25 +03:00
2021-12-03 16:20:10 +03:00
Optional environment:
2022-11-08 16:24:44 +03:00
2024-12-19 17:17:40 +03:00
- `DOWNLOAD_LANGUAGES` : set a list of specific languages to `download` . For example `ar be bg` . If it set to `blocker` then script will download only those languages, which need to be fully translated (`de en es fr it ja ko pt-br pt-pt ru zh-cn zh-tw`).
2022-11-08 16:24:44 +03:00
2024-12-19 17:17:40 +03:00
- `UPLOAD_LANGUAGE` : set an alternative language for `upload` .
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `TWOSKY_URI` : set an alternative URL for `download` or `upload` .
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
- `TWOSKY_PROJECT_ID` : set an alternative project ID for `download` or `upload` .
2021-12-03 16:20:10 +03:00
2024-12-19 17:17:40 +03:00
## `companiesdb/`: Whotracks.me database converter
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
A simple script that downloads and updates the companies DB in the `client` code from [the repo][companiesrepo].
2020-12-30 18:26:25 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2020-12-30 18:26:25 +03:00
```sh
2023-02-14 13:52:22 +03:00
sh ./scripts/companiesdb/download.sh
2020-12-30 18:26:25 +03:00
```
2021-12-15 16:44:28 +03:00
[companiesrepo]: https://github.com/AdguardTeam/companiesdb
2022-10-21 14:05:10 +03:00
2024-12-19 17:17:40 +03:00
## `blocked-services/`: Blocked-services updater
2022-10-21 14:05:10 +03:00
2024-12-19 17:17:40 +03:00
A simple script that downloads and updates the blocked services index from AdGuard’ s [Hostlists Registry][reg].
2022-10-21 14:05:10 +03:00
Optional environment:
2024-12-19 17:17:40 +03:00
- `URL` : the URL of the index file. By default it’ s `https://adguardteam.github.io/HostlistsRegistry/assets/services.json` .
2022-10-21 14:05:10 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2022-10-21 14:05:10 +03:00
```sh
2022-10-27 15:46:25 +03:00
go run ./scripts/blocked-services/main.go
2022-10-21 14:05:10 +03:00
```
[reg]: https://github.com/AdguardTeam/HostlistsRegistry
2022-10-27 15:46:25 +03:00
2024-12-19 17:17:40 +03:00
## `vetted-filters/`: Vetted-filters updater
2022-10-27 15:46:25 +03:00
2024-12-19 17:17:40 +03:00
Similar to the one above, a script that downloads and updates the vetted filtering list data from AdGuard’ s [Hostlists Registry][reg].
2022-10-27 15:46:25 +03:00
Optional environment:
2024-12-19 17:17:40 +03:00
- `URL` : the URL of the index file. By default it’ s `https://adguardteam.github.io/HostlistsRegistry/assets/filters.json` .
2022-10-27 15:46:25 +03:00
2024-12-19 17:17:40 +03:00
### Usage
2022-10-27 15:46:25 +03:00
```sh
go run ./scripts/vetted-filters/main.go
```