Pull request: all: reformat yaml, add yaml formatting standard
Merge in DNS/adguard-home from 2297-yaml to master
Closes #2297.
Squashed commit of the following:
commit 85df3a38a14adb1965944ddf14b197c12a213057
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Fri Nov 20 17:52:22 2020 +0300
all: improve HACKING.md
commit 079acdfe41cc12ab6aa13d7c28dcbf7b7b3c8380
Merge: 202ea078e 3045da174
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Fri Nov 20 17:50:34 2020 +0300
Merge branch 'master' into 2297-yaml
commit 202ea078e29d88871a32ac6e668dfae6db802bab
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Thu Nov 12 20:25:42 2020 +0300
all: reformat yaml, add yaml formatting standard
This commit is contained in:
parent
3045da1742
commit
046ec13fdc
16
.codecov.yml
16
.codecov.yml
|
@ -1,8 +1,8 @@
|
||||||
coverage:
|
'coverage':
|
||||||
status:
|
'status':
|
||||||
project:
|
'project':
|
||||||
default:
|
'default':
|
||||||
target: 40%
|
'target': '40%'
|
||||||
threshold: null
|
'threshold': null
|
||||||
patch: false
|
'patch': false
|
||||||
changes: false
|
'changes': false
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
# Number of days of inactivity before an issue becomes stale
|
# Number of days of inactivity before an issue becomes stale.
|
||||||
daysUntilStale: 60
|
'daysUntilStale': 60
|
||||||
# Number of days of inactivity before a stale issue is closed
|
# Number of days of inactivity before a stale issue is closed.
|
||||||
daysUntilClose: 7
|
'daysUntilClose': 7
|
||||||
# Issues with these labels will never be considered stale
|
# Issues with these labels will never be considered stale.
|
||||||
exemptLabels:
|
'exemptLabels':
|
||||||
- 'bug'
|
- 'bug'
|
||||||
- 'enhancement'
|
- 'enhancement'
|
||||||
- 'feature request'
|
- 'feature request'
|
||||||
- 'localization'
|
- 'localization'
|
||||||
# Label to use when marking an issue as stale
|
# Label to use when marking an issue as stale.
|
||||||
staleLabel: 'wontfix'
|
'staleLabel': 'wontfix'
|
||||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
# Comment to post when marking an issue as stale. Set to `false` to disable.
|
||||||
markComment: >
|
'markComment': >
|
||||||
This issue has been automatically marked as stale because it has not had
|
This issue has been automatically marked as stale because it has not had
|
||||||
recent activity. It will be closed if no further activity occurs. Thank you
|
recent activity. It will be closed if no further activity occurs. Thank you
|
||||||
for your contributions.
|
for your contributions.
|
||||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
# Comment to post when closing a stale issue. Set to `false` to disable.
|
||||||
closeComment: false
|
'closeComment': false
|
||||||
|
|
|
@ -1,170 +1,136 @@
|
||||||
name: build
|
'name': 'build'
|
||||||
|
|
||||||
env:
|
'env':
|
||||||
GO_VERSION: 1.14
|
'GO_VERSION': '1.14'
|
||||||
NODE_VERSION: 13
|
'NODE_VERSION': '13'
|
||||||
|
|
||||||
on:
|
'on':
|
||||||
push:
|
'push':
|
||||||
branches:
|
'branches':
|
||||||
- '*'
|
- '*'
|
||||||
tags:
|
'tags':
|
||||||
- v*
|
- 'v*'
|
||||||
pull_request:
|
'pull_request':
|
||||||
|
|
||||||
jobs:
|
'jobs':
|
||||||
|
'test':
|
||||||
|
'runs-on': '${{ matrix.os }}'
|
||||||
|
'env':
|
||||||
|
'GO111MODULE': 'on'
|
||||||
|
'GOPROXY': 'https://goproxy.io'
|
||||||
|
'strategy':
|
||||||
|
'fail-fast': false
|
||||||
|
'matrix':
|
||||||
|
'os':
|
||||||
|
- 'ubuntu-latest'
|
||||||
|
- 'macOS-latest'
|
||||||
|
- 'windows-latest'
|
||||||
|
'steps':
|
||||||
|
- 'name': 'Checkout'
|
||||||
|
'uses': 'actions/checkout@v2'
|
||||||
|
'with':
|
||||||
|
'fetch-depth': 0
|
||||||
|
- 'name': 'Set up Go'
|
||||||
|
'uses': 'actions/setup-go@v2'
|
||||||
|
'with':
|
||||||
|
'go-version': '${{ env.GO_VERSION }}'
|
||||||
|
- 'name': 'Set up Node'
|
||||||
|
'uses': 'actions/setup-node@v1'
|
||||||
|
'with':
|
||||||
|
'node-version': '${{ env.NODE_VERSION }}'
|
||||||
|
- 'name': 'Set up Go modules cache'
|
||||||
|
'uses': 'actions/cache@v2'
|
||||||
|
'with':
|
||||||
|
'path': '~/go/pkg/mod'
|
||||||
|
'key': "${{ runner.os }}-go-${{ hashFiles('go.sum') }}"
|
||||||
|
'restore-keys': '${{ runner.os }}-go-'
|
||||||
|
- 'name': 'Get npm cache directory'
|
||||||
|
'id': 'npm-cache'
|
||||||
|
'run': 'echo "::set-output name=dir::$(npm config get cache)"'
|
||||||
|
- 'name': 'Set up npm cache'
|
||||||
|
'uses': 'actions/cache@v2'
|
||||||
|
'with':
|
||||||
|
'path': '${{ steps.npm-cache.outputs.dir }}'
|
||||||
|
'key': "${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}"
|
||||||
|
'restore-keys': '${{ runner.os }}-node-'
|
||||||
|
- 'name': 'Run make ci'
|
||||||
|
'shell': 'bash'
|
||||||
|
'run': 'make ci'
|
||||||
|
- 'name': 'Upload coverage'
|
||||||
|
'uses': 'codecov/codecov-action@v1'
|
||||||
|
'if': "success() && matrix.os == 'ubuntu-latest'"
|
||||||
|
'with':
|
||||||
|
'token': '${{ secrets.CODECOV_TOKEN }}'
|
||||||
|
'file': './coverage.txt'
|
||||||
|
'app':
|
||||||
|
'runs-on': 'ubuntu-latest'
|
||||||
|
'needs': 'test'
|
||||||
|
'steps':
|
||||||
|
- 'name': 'Checkout'
|
||||||
|
'uses': 'actions/checkout@v2'
|
||||||
|
'with':
|
||||||
|
'fetch-depth': 0
|
||||||
|
- 'name': 'Set up Go'
|
||||||
|
'uses': 'actions/setup-go@v2'
|
||||||
|
'with':
|
||||||
|
'go-version': '${{ env.GO_VERSION }}'
|
||||||
|
- 'name': 'Set up Node'
|
||||||
|
'uses': 'actions/setup-node@v1'
|
||||||
|
'with':
|
||||||
|
'node-version': '${{ env.NODE_VERSION }}'
|
||||||
|
- 'name': 'Set up Go modules cache'
|
||||||
|
'uses': 'actions/cache@v2'
|
||||||
|
'with':
|
||||||
|
'path': '~/go/pkg/mod'
|
||||||
|
'key': "${{ runner.os }}-go-${{ hashFiles('go.sum') }}"
|
||||||
|
'restore-keys': '${{ runner.os }}-go-'
|
||||||
|
- 'name': 'Get npm cache directory'
|
||||||
|
'id': 'npm-cache'
|
||||||
|
'run': 'echo "::set-output name=dir::$(npm config get cache)"'
|
||||||
|
- 'name': 'Set up node_modules cache'
|
||||||
|
'uses': 'actions/cache@v2'
|
||||||
|
'with':
|
||||||
|
'path': '${{ steps.npm-cache.outputs.dir }}'
|
||||||
|
'key': "${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}"
|
||||||
|
'restore-keys': '${{ runner.os }}-node-'
|
||||||
|
- 'name': 'Set up Snapcraft'
|
||||||
|
'run': 'sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft'
|
||||||
|
- 'name': 'Set up GoReleaser'
|
||||||
|
'run': 'curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | BINDIR="$(go env GOPATH)/bin" sh'
|
||||||
|
- 'name': 'Run snapshot build'
|
||||||
|
'run': 'make release'
|
||||||
|
|
||||||
test:
|
'docker':
|
||||||
runs-on: ${{ matrix.os }}
|
'runs-on': 'ubuntu-latest'
|
||||||
env:
|
'needs': 'test'
|
||||||
GO111MODULE: on
|
'steps':
|
||||||
GOPROXY: https://goproxy.io
|
- 'name': 'Checkout'
|
||||||
strategy:
|
'uses': 'actions/checkout@v2'
|
||||||
fail-fast: false
|
'with':
|
||||||
matrix:
|
'fetch-depth': 0
|
||||||
os:
|
- 'name': 'Set up QEMU'
|
||||||
- ubuntu-latest
|
'uses': 'docker/setup-qemu-action@v1'
|
||||||
- macOS-latest
|
- 'name': 'Set up Docker Buildx'
|
||||||
- windows-latest
|
'uses': 'docker/setup-buildx-action@v1'
|
||||||
steps:
|
- 'name': 'Docker Buildx (build)'
|
||||||
-
|
'run': 'make docker-multi-arch'
|
||||||
name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
-
|
|
||||||
name: Set up Go
|
|
||||||
uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: ${{ env.GO_VERSION }}
|
|
||||||
|
|
||||||
-
|
'notify':
|
||||||
name: Set up Node
|
'needs':
|
||||||
uses: actions/setup-node@v1
|
- 'app'
|
||||||
with:
|
- 'docker'
|
||||||
node-version: ${{ env.NODE_VERSION }}
|
# Secrets are not passed to workflows that are triggered by a pull request
|
||||||
-
|
# from a fork.
|
||||||
name: Set up Go modules cache
|
'if': "${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}"
|
||||||
uses: actions/cache@v2
|
'runs-on': 'ubuntu-latest'
|
||||||
with:
|
'steps':
|
||||||
path: ~/go/pkg/mod
|
- 'name': 'Conclusion'
|
||||||
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
|
'uses': 'technote-space/workflow-conclusion-action@v1'
|
||||||
restore-keys: |
|
- 'name': 'Send Slack notif'
|
||||||
${{ runner.os }}-go-
|
'uses': '8398a7/action-slack@v3'
|
||||||
-
|
'with':
|
||||||
name: Get npm cache directory
|
'status': '${{ env.WORKFLOW_CONCLUSION }}'
|
||||||
id: npm-cache
|
'fields': 'repo, message, commit, author'
|
||||||
run: |
|
'env':
|
||||||
echo "::set-output name=dir::$(npm config get cache)"
|
'GITHUB_TOKEN': '${{ secrets.GITHUB_TOKEN }}'
|
||||||
-
|
'SLACK_WEBHOOK_URL': '${{ secrets.SLACK_WEBHOOK_URL }}'
|
||||||
name: Set up npm cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.npm-cache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-node-
|
|
||||||
-
|
|
||||||
name: Run make ci
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
make ci
|
|
||||||
-
|
|
||||||
name: Upload coverage
|
|
||||||
uses: codecov/codecov-action@v1
|
|
||||||
if: success() && matrix.os == 'ubuntu-latest'
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
file: ./coverage.txt
|
|
||||||
|
|
||||||
app:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: test
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
-
|
|
||||||
name: Set up Go
|
|
||||||
uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: ${{ env.GO_VERSION }}
|
|
||||||
-
|
|
||||||
name: Set up Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: ${{ env.NODE_VERSION }}
|
|
||||||
-
|
|
||||||
name: Set up Go modules cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/go/pkg/mod
|
|
||||||
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-
|
|
||||||
-
|
|
||||||
name: Get npm cache directory
|
|
||||||
id: npm-cache
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=dir::$(npm config get cache)"
|
|
||||||
-
|
|
||||||
name: Set up node_modules cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.npm-cache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-node-
|
|
||||||
-
|
|
||||||
name: Set up Snapcraft
|
|
||||||
run: |
|
|
||||||
sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft
|
|
||||||
-
|
|
||||||
name: Set up GoReleaser
|
|
||||||
run: |
|
|
||||||
curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | BINDIR="$(go env GOPATH)/bin" sh
|
|
||||||
-
|
|
||||||
name: Run snapshot build
|
|
||||||
run: |
|
|
||||||
make release
|
|
||||||
|
|
||||||
docker:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: test
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
-
|
|
||||||
name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v1
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
-
|
|
||||||
name: Docker Buildx (build)
|
|
||||||
run: |
|
|
||||||
make docker-multi-arch
|
|
||||||
|
|
||||||
notify:
|
|
||||||
needs: [app, docker]
|
|
||||||
# Secrets are not passed to workflows that are triggered by a pull request from a fork
|
|
||||||
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Conclusion
|
|
||||||
uses: technote-space/workflow-conclusion-action@v1
|
|
||||||
-
|
|
||||||
name: Send Slack notif
|
|
||||||
uses: 8398a7/action-slack@v3
|
|
||||||
with:
|
|
||||||
status: ${{ env.WORKFLOW_CONCLUSION }}
|
|
||||||
fields: repo,message,commit,author
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
||||||
|
|
|
@ -1,47 +1,46 @@
|
||||||
name: golangci-lint
|
'name': 'golangci-lint'
|
||||||
on:
|
'on':
|
||||||
push:
|
'push':
|
||||||
tags:
|
'tags':
|
||||||
- v*
|
- 'v*'
|
||||||
branches:
|
'branches':
|
||||||
- '*'
|
- '*'
|
||||||
pull_request:
|
'pull_request':
|
||||||
jobs:
|
'jobs':
|
||||||
golangci:
|
'golangci':
|
||||||
runs-on: ubuntu-latest
|
'runs-on': 'ubuntu-latest'
|
||||||
steps:
|
'steps':
|
||||||
- uses: actions/checkout@v2
|
- 'uses': 'actions/checkout@v2'
|
||||||
- name: golangci-lint
|
- 'name': 'golangci-lint'
|
||||||
uses: golangci/golangci-lint-action@v2.3.0
|
'uses': 'golangci/golangci-lint-action@v2.3.0'
|
||||||
with:
|
'with':
|
||||||
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
|
# This field is required. Don't set the patch version to always use
|
||||||
version: v1.32
|
# the latest patch version.
|
||||||
|
'version': 'v1.32'
|
||||||
eslint:
|
'eslint':
|
||||||
runs-on: ubuntu-latest
|
'runs-on': 'ubuntu-latest'
|
||||||
steps:
|
'steps':
|
||||||
- uses: actions/checkout@v2
|
- 'uses': 'actions/checkout@v2'
|
||||||
- name: Install modules
|
- 'name': 'Install modules'
|
||||||
run: npm --prefix client ci
|
'run': 'npm --prefix client ci'
|
||||||
- name: Run ESLint
|
- 'name': 'Run ESLint'
|
||||||
run: npm --prefix client run lint
|
'run': 'npm --prefix client run lint'
|
||||||
|
'notify':
|
||||||
|
'needs':
|
||||||
notify:
|
- 'golangci'
|
||||||
needs: [golangci,eslint]
|
- 'eslint'
|
||||||
# Secrets are not passed to workflows that are triggered by a pull request from a fork
|
# Secrets are not passed to workflows that are triggered by a pull request
|
||||||
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}
|
# from a fork.
|
||||||
runs-on: ubuntu-latest
|
'if': "${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}"
|
||||||
steps:
|
'runs-on': 'ubuntu-latest'
|
||||||
-
|
'steps':
|
||||||
name: Conclusion
|
- 'name': 'Conclusion'
|
||||||
uses: technote-space/workflow-conclusion-action@v1
|
'uses': 'technote-space/workflow-conclusion-action@v1'
|
||||||
-
|
- 'name': 'Send Slack notif'
|
||||||
name: Send Slack notif
|
'uses': '8398a7/action-slack@v3'
|
||||||
uses: 8398a7/action-slack@v3
|
'with':
|
||||||
with:
|
'status': '${{ env.WORKFLOW_CONCLUSION }}'
|
||||||
status: ${{ env.WORKFLOW_CONCLUSION }}
|
'fields': 'repo, message, commit, author'
|
||||||
fields: repo,message,commit,author
|
'env':
|
||||||
env:
|
'GITHUB_TOKEN': '${{ secrets.GITHUB_TOKEN }}'
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
'SLACK_WEBHOOK_URL': '${{ secrets.SLACK_WEBHOOK_URL }}'
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
||||||
|
|
115
.golangci.yml
115
.golangci.yml
|
@ -1,78 +1,77 @@
|
||||||
# options for analysis running
|
# options for analysis running
|
||||||
run:
|
'run':
|
||||||
# default concurrency is a available CPU number
|
# default concurrency is a available CPU number
|
||||||
concurrency: 4
|
'concurrency': 4
|
||||||
|
|
||||||
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
||||||
deadline: 2m
|
'deadline': '2m'
|
||||||
|
|
||||||
# which files to skip: they will be analyzed, but issues from them
|
# which files to skip: they will be analyzed, but issues from them
|
||||||
# won't be reported. Default value is empty list, but there is
|
# won't be reported. Default value is empty list, but there is
|
||||||
# no need to include all autogenerated files, we confidently recognize
|
# no need to include all autogenerated files, we confidently recognize
|
||||||
# autogenerated files. If it's not please let us know.
|
# autogenerated files. If it's not please let us know.
|
||||||
skip-files:
|
'skip-files':
|
||||||
- ".*generated.*"
|
- '.*generated.*'
|
||||||
- dnsfilter/rule_to_regexp.go
|
- 'dnsfilter/rule_to_regexp.go'
|
||||||
- util/pprof.go
|
- 'util/pprof.go'
|
||||||
- ".*_test.go"
|
- '.*_test.go'
|
||||||
- client/.*
|
- 'client/.*'
|
||||||
- build/.*
|
- 'build/.*'
|
||||||
- dist/.*
|
- 'dist/.*'
|
||||||
|
|
||||||
|
|
||||||
# all available settings of specific linters
|
# all available settings of specific linters
|
||||||
linters-settings:
|
'linters-settings':
|
||||||
errcheck:
|
'errcheck':
|
||||||
# [deprecated] comma-separated list of pairs of the form pkg:regex
|
# [deprecated] comma-separated list of pairs of the form pkg:regex
|
||||||
# the regex is used to ignore names within pkg. (default "fmt:.*").
|
# the regex is used to ignore names within pkg. (default "fmt:.*").
|
||||||
# see https://github.com/kisielk/errcheck#the-deprecated-method for details
|
# see https://github.com/kisielk/errcheck#the-deprecated-method for details
|
||||||
ignore: fmt:.*,net:SetReadDeadline,net/http:^Write
|
'ignore': 'fmt:.*,net:SetReadDeadline,net/http:^Write'
|
||||||
gocyclo:
|
'gocyclo':
|
||||||
min-complexity: 20
|
'min-complexity': 20
|
||||||
lll:
|
'lll':
|
||||||
line-length: 200
|
'line-length': 200
|
||||||
|
|
||||||
linters:
|
'linters':
|
||||||
enable:
|
'enable':
|
||||||
- deadcode
|
- 'bodyclose'
|
||||||
- errcheck
|
- 'deadcode'
|
||||||
- govet
|
- 'depguard'
|
||||||
- ineffassign
|
- 'dupl'
|
||||||
- staticcheck
|
- 'errcheck'
|
||||||
- unused
|
- 'gocyclo'
|
||||||
- varcheck
|
- 'goimports'
|
||||||
- bodyclose
|
- 'golint'
|
||||||
- depguard
|
- 'gosec'
|
||||||
- dupl
|
- 'govet'
|
||||||
- gocyclo
|
- 'ineffassign'
|
||||||
- goimports
|
- 'misspell'
|
||||||
- golint
|
- 'staticcheck'
|
||||||
- gosec
|
- 'stylecheck'
|
||||||
- misspell
|
- 'unconvert'
|
||||||
- stylecheck
|
- 'unused'
|
||||||
- unconvert
|
- 'varcheck'
|
||||||
disable-all: true
|
'disable-all': true
|
||||||
fast: true
|
'fast': true
|
||||||
|
|
||||||
issues:
|
'issues':
|
||||||
# List of regexps of issue texts to exclude, empty list by default.
|
# List of regexps of issue texts to exclude, empty list by default.
|
||||||
# But independently from this option we use default exclude patterns,
|
# But independently from this option we use default exclude patterns,
|
||||||
# it can be disabled by `exclude-use-default: false`. To list all
|
# it can be disabled by `exclude-use-default: false`. To list all
|
||||||
# excluded by default patterns execute `golangci-lint run --help`
|
# excluded by default patterns execute `golangci-lint run --help`
|
||||||
exclude:
|
'exclude':
|
||||||
# structcheck cannot detect usages while they're there
|
# structcheck cannot detect usages while they're there
|
||||||
- .parentalServer. is unused
|
- '.parentalServer. is unused'
|
||||||
- .safeBrowsingServer. is unused
|
- '.safeBrowsingServer. is unused'
|
||||||
# errcheck
|
# errcheck
|
||||||
- Error return value of .s.closeConn. is not checked
|
- 'Error return value of .s.closeConn. is not checked'
|
||||||
- Error return value of ..*.Shutdown.
|
- 'Error return value of ..*.Shutdown.'
|
||||||
# goconst
|
# goconst
|
||||||
- string .forcesafesearch.google.com. has 3 occurrences
|
- 'string .forcesafesearch.google.com. has 3 occurrences'
|
||||||
# gosec: Profiling endpoint is automatically exposed on /debug/pprof
|
# gosec: Profiling endpoint is automatically exposed on /debug/pprof
|
||||||
- G108
|
- 'G108'
|
||||||
# gosec: Subprocess launched with function call as argument or cmd arguments
|
# gosec: Subprocess launched with function call as argument or cmd arguments
|
||||||
- G204
|
- 'G204'
|
||||||
# gosec: Potential DoS vulnerability via decompression bomb
|
# gosec: Potential DoS vulnerability via decompression bomb
|
||||||
- G110
|
- 'G110'
|
||||||
# gosec: Expect WriteFile permissions to be 0600 or less
|
# gosec: Expect WriteFile permissions to be 0600 or less
|
||||||
- G306
|
- 'G306'
|
||||||
|
|
199
.goreleaser.yml
199
.goreleaser.yml
|
@ -1,106 +1,107 @@
|
||||||
project_name: AdGuardHome
|
'project_name': 'AdGuardHome'
|
||||||
|
|
||||||
env:
|
'env':
|
||||||
- GO111MODULE=on
|
- 'GO111MODULE=on'
|
||||||
- GOPROXY=https://goproxy.io
|
- 'GOPROXY=https://goproxy.io'
|
||||||
|
|
||||||
before:
|
'before':
|
||||||
hooks:
|
'hooks':
|
||||||
- go mod download
|
- 'go mod download'
|
||||||
- go generate ./...
|
- 'go generate ./...'
|
||||||
|
|
||||||
builds:
|
'builds':
|
||||||
- main: ./main.go
|
- 'main': './main.go'
|
||||||
ldflags:
|
'ldflags':
|
||||||
- -s -w -X main.version={{.Version}} -X main.channel={{.Env.CHANNEL}} -X main.goarm={{.Env.GOARM}}
|
- '-s -w -X main.version={{.Version}} -X main.channel={{.Env.CHANNEL}} -X main.goarm={{.Env.GOARM}}'
|
||||||
env:
|
'env':
|
||||||
- CGO_ENABLED=0
|
- 'CGO_ENABLED=0'
|
||||||
goos:
|
'goos':
|
||||||
- darwin
|
- 'darwin'
|
||||||
- linux
|
- 'linux'
|
||||||
- freebsd
|
- 'freebsd'
|
||||||
- windows
|
- 'windows'
|
||||||
goarch:
|
'goarch':
|
||||||
- 386
|
- '386'
|
||||||
- amd64
|
- 'amd64'
|
||||||
- arm
|
- 'arm'
|
||||||
- arm64
|
- 'arm64'
|
||||||
- mips
|
- 'mips'
|
||||||
- mipsle
|
- 'mipsle'
|
||||||
- mips64
|
- 'mips64'
|
||||||
- mips64le
|
- 'mips64le'
|
||||||
goarm:
|
'goarm':
|
||||||
- 5
|
- '5'
|
||||||
- 6
|
- '6'
|
||||||
- 7
|
- '7'
|
||||||
gomips:
|
'gomips':
|
||||||
- softfloat
|
- 'softfloat'
|
||||||
ignore:
|
'ignore':
|
||||||
- goos: freebsd
|
- 'goos': 'freebsd'
|
||||||
goarch: mips
|
'goarch': 'mips'
|
||||||
- goos: freebsd
|
- 'goos': 'freebsd'
|
||||||
goarch: mipsle
|
'goarch': 'mipsle'
|
||||||
|
|
||||||
archives:
|
'archives':
|
||||||
- # Archive name template.
|
- # Archive name template.
|
||||||
# Defaults:
|
# Defaults:
|
||||||
# - if format is `tar.gz`, `tar.xz`, `gz` or `zip`:
|
# - if format is `tar.gz`, `tar.xz`, `gz` or `zip`:
|
||||||
# - `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
|
# - `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
|
||||||
# - if format is `binary`:
|
# - if format is `binary`:
|
||||||
# - `{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
|
# - `{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
|
||||||
name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}"
|
'name_template': '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}'
|
||||||
wrap_in_directory: "AdGuardHome"
|
'wrap_in_directory': 'AdGuardHome'
|
||||||
format_overrides:
|
'format_overrides':
|
||||||
- goos: windows
|
- 'goos': 'windows'
|
||||||
format: zip
|
'format': 'zip'
|
||||||
- goos: darwin
|
- 'goos': 'darwin'
|
||||||
format: zip
|
'format': 'zip'
|
||||||
files:
|
'files':
|
||||||
- LICENSE.txt
|
- 'LICENSE.txt'
|
||||||
- README.md
|
- 'README.md'
|
||||||
|
|
||||||
snapcrafts:
|
'snapcrafts':
|
||||||
- name: adguard-home
|
- 'name': 'adguard-home'
|
||||||
base: core18
|
'base': 'core18'
|
||||||
name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
|
'name_template': '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
|
||||||
summary: Network-wide ads & trackers blocking DNS server
|
'summary': 'Network-wide ads & trackers blocking DNS server'
|
||||||
description: |
|
'description': |
|
||||||
AdGuard Home is a network-wide software for blocking ads & tracking. After
|
AdGuard Home is a network-wide software for blocking ads & tracking. After
|
||||||
you set it up, it'll cover ALL your home devices, and you don't need any
|
you set it up, it'll cover ALL your home devices, and you don't need any
|
||||||
client-side software for that.
|
client-side software for that.
|
||||||
|
|
||||||
It operates as a DNS server that re-routes tracking domains to a "black hole,"
|
It operates as a DNS server that re-routes tracking domains to a "black hole,"
|
||||||
thus preventing your devices from connecting to those servers. It's based
|
thus preventing your devices from connecting to those servers. It's based
|
||||||
on software we use for our public AdGuard DNS servers -- both share a lot
|
on software we use for our public AdGuard DNS servers -- both share a lot
|
||||||
of common code.
|
of common code.
|
||||||
grade: stable
|
'grade': 'stable'
|
||||||
confinement: strict
|
'confinement': 'strict'
|
||||||
publish: false
|
'publish': false
|
||||||
license: GPL-3.0
|
'license': 'GPL-3.0'
|
||||||
extra_files:
|
'extra_files':
|
||||||
- source: scripts/snap/local/adguard-home-web.sh
|
- 'source': 'scripts/snap/local/adguard-home-web.sh'
|
||||||
destination: adguard-home-web.sh
|
'destination': 'adguard-home-web.sh'
|
||||||
mode: 0755
|
'mode': 0755
|
||||||
- source: scripts/snap/gui/adguard-home-web.desktop
|
- 'source': 'scripts/snap/gui/adguard-home-web.desktop'
|
||||||
destination: meta/gui/adguard-home-web.desktop
|
'destination': 'meta/gui/adguard-home-web.desktop'
|
||||||
mode: 0644
|
'mode': 0644
|
||||||
- source: scripts/snap/gui/adguard-home-web.png
|
- 'source': 'scripts/snap/gui/adguard-home-web.png'
|
||||||
destination: meta/gui/adguard-home-web.png
|
'destination': 'meta/gui/adguard-home-web.png'
|
||||||
mode: 0644
|
'mode': 0644
|
||||||
apps:
|
'apps':
|
||||||
adguard-home:
|
'adguard-home':
|
||||||
command: AdGuardHome -w $SNAP_DATA --no-check-update
|
'command': 'AdGuardHome -w $SNAP_DATA --no-check-update'
|
||||||
plugs:
|
'plugs':
|
||||||
# Add the "netrwork-bind" plug to bind to interfaces.
|
# Add the "netrwork-bind" plug to bind to interfaces.
|
||||||
- network-bind
|
- 'network-bind'
|
||||||
# Add the "netrwork-control" plug to be able to bind to ports below
|
# Add the "netrwork-control" plug to be able to bind to ports below
|
||||||
# 1024 (cap_net_bind_service) and also to bind to a particular
|
# 1024 (cap_net_bind_service) and also to bind to a particular
|
||||||
# interface using SO_BINDTODEVICE (cap_net_raw).
|
# interface using SO_BINDTODEVICE (cap_net_raw).
|
||||||
- network-control
|
- 'network-control'
|
||||||
daemon: simple
|
'daemon': 'simple'
|
||||||
adguard-home-web:
|
'adguard-home-web':
|
||||||
command: adguard-home-web.sh
|
'command': 'adguard-home-web.sh'
|
||||||
plugs: [ desktop ]
|
'plugs':
|
||||||
|
- 'desktop'
|
||||||
|
|
||||||
checksum:
|
'checksum':
|
||||||
name_template: 'checksums.txt'
|
'name_template': 'checksums.txt'
|
||||||
|
|
42
HACKING.md
42
HACKING.md
|
@ -1,9 +1,11 @@
|
||||||
# AdGuardHome Developer Guidelines
|
# AdGuardHome Developer Guidelines
|
||||||
|
|
||||||
As of **2020-11-12**, this document is still a work-in-progress. Some of the
|
As of **2020-11-20**, this document is still a work-in-progress. Some of the
|
||||||
rules aren't enforced, and others might change. Still, this is a good place to
|
rules aren't enforced, and others might change. Still, this is a good place to
|
||||||
find out about how we **want** our code to look like.
|
find out about how we **want** our code to look like.
|
||||||
|
|
||||||
|
The rules are mostly sorted in the alphabetical order.
|
||||||
|
|
||||||
## Git
|
## Git
|
||||||
|
|
||||||
* Follow the commit message header format:
|
* Follow the commit message header format:
|
||||||
|
@ -13,11 +15,14 @@ find out about how we **want** our code to look like.
|
||||||
```
|
```
|
||||||
|
|
||||||
Where `pkg` is the package where most changes took place. If there are
|
Where `pkg` is the package where most changes took place. If there are
|
||||||
several such packages, just write `all`.
|
several such packages, or the change is top-level only, write `all`.
|
||||||
|
|
||||||
* Keep your commit messages to be no wider than eighty (**80**) columns.
|
* Keep your commit messages, including headers, to eighty (**80**) columns.
|
||||||
|
|
||||||
* Only use lowercase letters in your commit message headers.
|
* Only use lowercase letters in your commit message headers. The rest of the
|
||||||
|
message should follow the plain text conventions below.
|
||||||
|
|
||||||
|
The only exception are direct mentions of identifiers from the source code.
|
||||||
|
|
||||||
## Go
|
## Go
|
||||||
|
|
||||||
|
@ -98,8 +103,20 @@ find out about how we **want** our code to look like.
|
||||||
[constant errors]: https://dave.cheney.net/2016/04/07/constant-errors
|
[constant errors]: https://dave.cheney.net/2016/04/07/constant-errors
|
||||||
[Linus said]: https://www.kernel.org/doc/html/v4.17/process/coding-style.html#indentation
|
[Linus said]: https://www.kernel.org/doc/html/v4.17/process/coding-style.html#indentation
|
||||||
|
|
||||||
|
## Markdown
|
||||||
|
|
||||||
|
* **TODO(a.garipov):** Define our Markdown conventions.
|
||||||
|
|
||||||
## Text, Including Comments
|
## Text, Including Comments
|
||||||
|
|
||||||
|
* End sentences with appropriate punctuation.
|
||||||
|
|
||||||
|
* Headers should be written with all initial letters capitalized, except for
|
||||||
|
references to variable names that start with a lowercase letter.
|
||||||
|
|
||||||
|
* Start sentences with a capital letter, unless the first word is a reference
|
||||||
|
to a variable name that starts with a lowercase letter.
|
||||||
|
|
||||||
* Text should wrap at eighty (**80**) columns to be more readable, to use
|
* Text should wrap at eighty (**80**) columns to be more readable, to use
|
||||||
a common standard, and to allow editing or diffing side-by-side without
|
a common standard, and to allow editing or diffing side-by-side without
|
||||||
wrapping.
|
wrapping.
|
||||||
|
@ -126,17 +143,17 @@ find out about how we **want** our code to look like.
|
||||||
// TODO(usr1, usr2): Fix the frobulation issue.
|
// TODO(usr1, usr2): Fix the frobulation issue.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Markdown
|
|
||||||
|
|
||||||
* **TODO(a.garipov):** Define our Markdown conventions.
|
|
||||||
|
|
||||||
## YAML
|
## YAML
|
||||||
|
|
||||||
|
* **TODO(a.garipov):** Define naming conventions for schema names in our
|
||||||
|
OpenAPI YAML file. And just generally OpenAPI conventions.
|
||||||
|
|
||||||
* **TODO(a.garipov):** Find a YAML formatter or write our own.
|
* **TODO(a.garipov):** Find a YAML formatter or write our own.
|
||||||
|
|
||||||
* All strings, including keys, must be quoted. Reason: the [NO-rway Law].
|
* All strings, including keys, must be quoted. Reason: the [NO-rway Law].
|
||||||
|
|
||||||
* Indent with two (**2**) spaces.
|
* Indent with two (**2**) spaces. YAML documents can get pretty
|
||||||
|
deeply-nested.
|
||||||
|
|
||||||
* No extra indentation in multiline arrays:
|
* No extra indentation in multiline arrays:
|
||||||
|
|
||||||
|
@ -147,7 +164,10 @@ find out about how we **want** our code to look like.
|
||||||
- 'value-3'
|
- 'value-3'
|
||||||
```
|
```
|
||||||
|
|
||||||
* Prefer single quotes for string to prevent accidental escaping, unless
|
* Prefer single quotes for strings to prevent accidental escaping, unless
|
||||||
escaping is required.
|
escaping is required or there are single quotes inside the string (e.g. for
|
||||||
|
*GitHub Actions*).
|
||||||
|
|
||||||
|
* Use `>` for multiline strings, unless you need to keep the line breaks.
|
||||||
|
|
||||||
[NO-rway Law]: https://news.ycombinator.com/item?id=17359376
|
[NO-rway Law]: https://news.ycombinator.com/item?id=17359376
|
||||||
|
|
4045
openapi/openapi.yaml
4045
openapi/openapi.yaml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue