Closes #7314. Squashed commit of the following: commit f8b6ffeec2f0f96c947cf896c75d05efaca77caf Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Oct 29 14:14:41 2024 +0300 all: fix chlog commit 9417b7dc510296c096f234e2f340dad5a6faf627 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 28 19:41:30 2024 +0300 aghos: imp doc commit b91f0e72a70a8e1392bd07b50714d8b83cc4e33e Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 28 19:26:15 2024 +0300 all: rm bin commit 9008ee93b181794c5082894bfa5ce4c76153f93d Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 28 18:23:54 2024 +0300 all: revert permcheck commit bcc85d50f5f39269713979c6509a9acd220570b8 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 28 17:48:55 2024 +0300 all: use aghos more commit 993e351712fbf004a6f96e06061ba2321c1c46e1 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 28 16:24:56 2024 +0300 all: fix more bugs commit a22b0d265eb0fa747e136363558b97de54e593b8 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 18:30:52 2024 +0300 all: fix bugs commit a2309f812ad3fd83d26c373b67756ea3074f4854 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 17:05:08 2024 +0300 all: fix chlog, imp api commit 42c3f8e91c49998068bc208166de20efe49c3dcb Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 16:04:47 2024 +0300 scripts: fix docs commit 9e781ff18db58ed9be35e259ecf3c669a4d41e02 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 16:03:19 2024 +0300 scripts: imp docs commit 1dbc7849828cc4933bb5edc3257f158ac292d48e Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 15:55:16 2024 +0300 all: use new functions, add tests commit dcbabaf4e37149a73969c52c9bfac2b9d9127a67 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 25 13:23:50 2024 +0300 aghos: add stat commit 72d7c0f881835725e65db63ac2dd1c5f7a409036 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Oct 24 17:10:30 2024 +0300 aghos: add windows functions
AdGuard Home Scripts
hooks/
: Git Hooks
Usage
Run make init
from the project root.
querylog/
: Query Log Helpers
Usage
npm install
: install dependencies. Run this first.npm run anonymize <source> <dst>
: read the query log from the<source>
and write anonymized version to<dst>
.
make/
: Makefile scripts
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.
build-docker.sh
: Build a multi-architecture Docker image
Required environment:
-
CHANNEL
: release channel, see above. -
COMMIT
: current Git revision. -
DIST_DIR
: the directory where a release has previously been built. -
VERSION
: release version.
Optional environment:
-
DOCKER_IMAGE_NAME
: the name of the resulting Docker container. By default it'sadguardhome-dev
. -
DOCKER_OUTPUT
: the--output
parameters. By default they aretype=image,name=${DOCKER_IMAGE_NAME},push=false
. -
SUDO
: allow users to usesudo
ordoas
withdocker
. By default none is used.
build-release.sh
: Build a release for all platforms
Required environment:
-
CHANNEL
: release channel, see above. -
GPG_KEY
andGPG_KEY_PASSPHRASE
: data forgpg
. Only required ifSIGN
is1
.
Optional environment:
-
ARCH
andOS
: 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:make ARCH='amd64 arm64' OS='darwin linux' … build-release
The default value is
''
, which means build everything. -
DIST_DIR
: the directory to build a release into. The default value isdist
. -
GO
: set an alternative name for the Go compiler. -
SIGN
:0
to not sign the resulting packages,1
to sign. The default value is1
. -
VERBOSE
:1
to be verbose,2
to also print environment. This script callsgo-build.sh
with the verbosity level one level lower, so to get verbosity level2
ingo-build.sh
, set this to3
when callingbuild-release.sh
. -
VERSION
: release version. Will be set byversion.sh
if it is unset or if it has the defaultMakefile
value ofv0.0.0
.
We're using Go's forward compatibility mechanism 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.
If you want to use the version installed on your builder, run:
go get go@$YOUR_VERSION
go mod tidy
and call make
with GOTOOLCHAIN=local
.
clean.sh
: Cleanup
Optional environment:
GO
: set an alternative name for the Go compiler.
Required environment:
DIST_DIR
: the directory where a release has previously been built.
go-bench.sh
: Run backend benchmarks
Optional environment:
-
GO
: set an alternative name for the Go compiler. -
TIMEOUT_FLAGS
: set timeout flags for tests. The default value is--timeout=30s
. -
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 is0
, don't be verbose.
go-build.sh
: Build the backend
Optional environment:
-
GOAMD64
: architectural level for AMD64. The default value isv1
. -
GOARM
: ARM processor options for the Go compiler. -
GOMIPS
: ARM processor options for the Go compiler. -
GO
: set an alternative name for the Go compiler. -
OUT
: output binary name. -
PARALLELISM
: set the maximum number of concurrently run build commands (that is, compiler, linker, etc.). -
SOURCE_DATE_EPOCH
: the standardized 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. -
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 is0
, don't be verbose. -
VERSION
: release version. Will be set byversion.sh
if it is unset or if it has the defaultMakefile
value ofv0.0.0
.
Required environment:
CHANNEL
: release channel, see above.
go-deps.sh
: Install backend dependencies
Optional environment:
-
GO
: set an alternative name for the Go compiler. -
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 is0
, don't be verbose.
go-fuzz.sh
: Run backend fuzz tests
Optional environment:
-
GO
: set an alternative name for the Go compiler. -
FUZZTIME_FLAGS
: set fuss flags for tests. The default value is--fuzztime=20s
. -
TIMEOUT_FLAGS
: set timeout flags for tests. The default value is--timeout=30s
. -
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 is0
, don't be verbose.
go-lint.sh
: Run backend static analyzers
Don't forget to run make go-tools
once first!
Optional environment:
-
EXIT_ON_ERROR
: if set to0
, don't exit the script after the first encountered error. The default value is1
. -
GO
: set an alternative name for the Go compiler. -
VERBOSE
: verbosity level.1
shows every command that is run.2
also shows subcommands. The default value is0
, don't be verbose.
go-test.sh
: Run backend tests
Optional environment:
-
GO
: set an alternative name for the Go compiler. -
RACE
: set to0
to not use the Go race detector. The default value is1
, use the race detector. -
TIMEOUT_FLAGS
: set timeout flags for tests. The default value is--timeout=30s
. -
VERBOSE
: verbosity level.1
shows every command that is run and every Go package that is processed.2
also shows subcommands. The default value is0
, don't be verbose.
go-tools.sh
: Install backend tooling
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
).
Optional environment:
GO
: set an alternative name for the Go compiler.
version.sh
: Generate And Print The Current Version
Required environment:
CHANNEL
: release channel, see above.
snap/
: Snapcraft scripts
build.sh
Builds the Snapcraft packages from the binaries created by download.sh
.
download.sh
Downloads the binaries to pack them into Snapcraft packages.
Required environment:
CHANNEL
: release channel, see above.
upload.sh
Uploads the Snapcraft packages created by build.sh
.
Required environment:
-
SNAPCRAFT_CHANNEL
: Snapcraft release channel:edge
,beta
, orcandidate
. -
SNAPCRAFT_STORE_CREDENTIALS
: Credentials for Snapcraft store.
Optional environment:
SNAPCRAFT_CMD
: Overrides the Snapcraft command. Default:snapcraft
.
translations/
: Twosky Integration Script
Usage
-
go run ./scripts/translations help
: print usage. -
go run ./scripts/translations download [-n <count>]
: download and save all translations.n
is optional flag where count is a number of concurrent downloads. -
go run ./scripts/translations upload
: upload the baseen
locale. -
go run ./scripts/translations summary
: show the current locales summary. -
go run ./scripts/translations unused
: show the list of unused strings. -
go run ./scripts/translations auto-add
: add locales with additions to the git and restore locales with deletions.
After the download you'll find the output locales in the client/src/__locales/
directory.
Optional environment:
-
DOWNLOAD_LANGUAGES
: set a list of specific languages todownload
. For examplear be bg
. If it set toblocker
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
). -
UPLOAD_LANGUAGE
: set an alternative language forupload
. -
TWOSKY_URI
: set an alternative URL fordownload
orupload
. -
TWOSKY_PROJECT_ID
: set an alternative project ID fordownload
orupload
.
companiesdb/
: Whotracks.me Database Converter
A simple script that downloads and updates the companies DB in the client
code from the repo.
Usage
sh ./scripts/companiesdb/download.sh
blocked-services/
: Blocked Services Updater
A simple script that downloads and updates the blocked services index from AdGuard's Hostlists Registry.
Optional environment:
URL
: the URL of the index file. By default it'shttps://adguardteam.github.io/HostlistsRegistry/assets/services.json
.
Usage
go run ./scripts/blocked-services/main.go
vetted-filters/
: Vetted Filters Updater
Similar to the one above, a script that downloads and updates the vetted filtering list data from AdGuard's Hostlists Registry.
Optional environment:
URL
: the URL of the index file. By default it'shttps://adguardteam.github.io/HostlistsRegistry/assets/filters.json
.
Usage
go run ./scripts/vetted-filters/main.go