-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.pre-commit-config.yaml
184 lines (184 loc) · 6.02 KB
/
.pre-commit-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# !! Requires Pre-Commit
# !! https://pre-commit.com
# !! Config File: $GIT_REPO_ROOT/.pre-commit-config.yaml
# !! Already have a config file present?
# !! Copy/Paste everything below `repos:` into your existing file
# !! Don't already have a config file?
# !! Copy this whole file into your repo root (as '.pre-commit-config.yaml')
# !! Delete this header section
# !! Consider adding some built-in pre-commmit hooks to your project
# !! (They're quite useful!)
# !! ALL Hooks enabled by default - Comment out hooks you are not using
repos:
# ==========================================================================
# Golang Pre-Commit Hooks | https://github.com/tekwizely/pre-commit-golang
#
# Visit the project home page to learn more about the available Hooks,
# including useful arguments you might want to pass into them.
#
# File-Based Hooks:
# Run against matching staged files individually.
#
# Module-Based Hooks:
# Run against module root folders containing matching staged files.
#
# Package-Based Hooks:
# Run against folders containing one or more staged files.
#
# Repo-Based Hooks:
# Run against the entire repo.
# The hooks only run once (if any matching files are staged),
# and are NOT provided the list of staged files,
#
# My-Cmd-* Hooks
# Allow you to invoke custom tools in various contexts.
# Can be useful if your favorite tool(s) are not built-in (yet)
#
# Hook Suffixes
# Hooks have suffixes in their name that indicate their targets:
#
# +-----------+--------------+
# | Suffix | Target |
# |-----------+--------------+
# | <none> | Files |
# | -mod | Module |
# | -pkg | Package |
# | -repo | Repo Root |
# | -repo-mod | All Modules |
# | -repo-pkg | All Packages |
# +-----------+--------------+
#
# ! Multiple Hook Invocations
# ! Due to OS command-line-length limits, Pre-Commit can invoke a hook
# ! multiple times if a large number of files are staged.
# ! For file and repo-based hooks, this isn't an issue, but for module
# ! and package-based hooks, there is a potential for the hook to run
# ! against the same module or package multiple times, duplicating any
# ! errors or warnings.
#
# Useful Hook Parameters:
# - id: hook-id
# args: [arg1, arg2, ..., '--'] # Pass options ('--' is optional)
# always_run: true # Run even if no matching files staged
# alias: hook-alias # Create an alias
#
# Passing Options To Hooks:
# If your options contain a reference to an existing file, then you will
# need to use a trailing '--' argument to separate the hook options from
# the modified-file list that Pre-Commit passes into the hook.
# NOTE: For repo-based hooks, '--' is not needed.
#
# Passing Environment Variables to Hooks:
# You can pass environment variables to hooks using args with the
# following format:
#
# --hook:env:NAME=VALUE
#
# Always Run:
# By default, hooks ONLY run when matching file types are staged.
# When configured to "always_run", a hook is executed as if EVERY matching
# file were staged.
#
# Aliases:
# Consider adding aliases to longer-named hooks for easier CLI usage.
# ==========================================================================
- repo: https://github.com/tekwizely/pre-commit-golang
rev: v1.0.0-rc.1
hooks:
#
# Go Build
#
# - id: go-build-mod
# - id: go-build-pkg
# - id: go-build-repo-mod
# - id: go-build-repo-pkg
#
# Go Mod Tidy
#
- id: go-mod-tidy
# - id: go-mod-tidy-repo
#
# Go Test
#
- id: go-test-mod
# - id: go-test-pkg
# - id: go-test-repo-mod
# - id: go-test-repo-pkg
#
# Go Vet
#
# - id: go-vet
# - id: go-vet-mod
# - id: go-vet-pkg
# - id: go-vet-repo-mod
# - id: go-vet-repo-pkg
#
# Revive
#
# - id: go-revive
# - id: go-revive-mod
# - id: go-revive-repo-mod
#
# GoSec
#
# - id: go-sec-mod
# - id: go-sec-pkg
# - id: go-sec-repo-mod
# - id: go-sec-repo-pkg
#
# StaticCheck
#
- id: go-staticcheck-mod
# - id: go-staticcheck-pkg
# - id: go-staticcheck-repo-mod
# - id: go-staticcheck-repo-pkg
#
# StructSlop
#
# - id: go-structslop-mod
# - id: go-structslop-pkg
# - id: go-structslop-repo-mod
# - id: go-structslop-repo-pkg
#
# Formatters
#
# - id: go-fmt
# - id: go-fmt-repo
# - id: go-fumpt # replaces go-fmt
# - id: go-fumpt-repo # replaces go-fmt-repo
# - id: go-imports # replaces go-fmt
# - id: go-imports-repo # replaces go-fmt-repo
# - id: go-returns # replaces go-imports & go-fmt
# - id: go-returns-repo # replaces go-imports-repo & go-fmt-repo
#
# Style Checkers
#
# - id: go-lint
# - id: go-critic
#
# GolangCI-Lint
# - Fast Multi-Linter
# - Can be configured to replace MOST other hooks
# - Supports repo config file for configuration
# - https://github.com/golangci/golangci-lint
#
# - id: golangci-lint
# - id: golangci-lint-mod
# - id: golangci-lint-pkg
- id: golangci-lint-repo-mod
# - id: golangci-lint-repo-pkg
#
# Invoking Custom Go Tools
# - Configured *entirely* through the `args` attribute, ie:
# args: [ go, test, ./... ]
# - Use arg `--hook:error-on-output` to indicate that any output from the tool
# should be treated as an error.
# - Use the `name` attribute to provide better messaging when the hook runs
# - Use the `alias` attribute to be able to invoke your hook via `pre-commit run`
#
# - id: my-cmd
# - id: my-cmd-mod
# - id: my-cmd-pkg
# - id: my-cmd-repo
# - id: my-cmd-repo-mod
# - id: my-cmd-repo-pkg