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 varous 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.
    #
    # 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-repo-mod
    #
    # Go Mod Tidy
    #
    # -   id: go-mod-tidy
    # -   id: go-mod-tidy-repo
    #
    # Go Test
    #
    -   id: go-test-mod
        args: [-v, -race]
    -   id: go-test-repo-mod
        args: [-v, -race]
    # 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
-   repo: https://github.com/golangci/golangci-lint
    rev: v1.53.3
    hooks:
    -   id: golangci-lint
    #
    # # Invoking Custom Go Tools
    # # - Configured *entirely* through the `args` attribute, ie:
    # #   args: [ go, test, ./... ]
    # # - Use the `name` attribute to provide better messaging when the hook runs
    # # - Use the `alias` attribute to be able 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
- repo: https://github.com/dnephin/pre-commit-golang
  rev: v0.5.1
  hooks:
    - id: validate-toml
- repo: https://github.com/igorshubovych/markdownlint-cli
  rev: v0.34.0
  hooks:
    - id: markdownlint