################################################################################
#                                                                              #
#                              .gitignore                                      #
#                                                                              #
#  This file ignores EVERYTHING by default and explicitly includes only the    #
#  files and directories required for the project.                             #
#  To add an exception, use the "!" prefix before the path.                    #
#                                                                              #
################################################################################

# ======================
# === Global Ignore  ===
# ======================
*

# ======================
# ===   Exceptions   ===
# ======================
!.gitignore
!README.md
!LICENSE
!CODE_OF_CONDUCT.md
!CHANGELOG.md
!CONTRIBUTING.md
!CONTRIBUTORS.md
!ROADMAP.md
!SECURITY.md
!upstream-bugs.md

# Core project files
!Project.toml
!.github/
!.github/**
!.codecov.yml

# Source code
!src/
!src/**

# Package extensions (Julia [weakdeps] + [extensions])
!ext/
!ext/**/*.jl

# Documentation
!docs/
!docs/**

# Tests
!test/
!test/*/
!test/**/*.jl
!test/Project.toml
!test/fixtures/
!test/fixtures/*.jl
!test/fixtures/*.crt
!test/fixtures/*.key

# Examples
!examples/
!examples/**

# Benchmarks (exclude JSON results)
!benchmark/
!benchmark/**
benchmark/*.json

# Exception for tests
!test/
!test/*/
!test/**/*.jl

# Test fixtures (script but not generated certs)
!test/fixtures/
!test/fixtures/*.jl

# HPACK interoperability test vectors
!test/fixtures/hpack-test-case/
!test/fixtures/hpack-test-case/**
!test/fixtures/hpack-test-case/**/*.json
!test/fixtures/hpack-test-case/**/README.md

# Interoperability tests
!test/interop/
!test/interop/**/*.jl

# Exception for examples
!examples/
!examples/**

# Exception for benchmarks (exclude JSON results)
!benchmark/
!benchmark/**
benchmark/*.json

# Exception for Project.toml
!Project.toml

# Exception for Github Actions
!.github/
!.github/**

# ==============================
# === Julia-Specific Ignores ===
# ==============================

# Files generated by invoking Julia with --code-coverage
*.jl.cov
*.jl.*.cov

# Files generated by invoking Julia with --track-allocation
*.jl.mem

# System-specific files and directories generated by the BinaryProvider and BinDeps packages
# They contain absolute paths specific to the host computer, and so should not be committed
deps/deps.jl
deps/build.log
deps/downloads/
deps/usr/
deps/src/

# Build artifacts for creating documentation generated by the Documenter package
docs/build/
docs/site/

# File generated by Pkg, the package manager, based on a corresponding Project.toml
# It records a fixed state of all packages used by the project. As such, it should not be
# committed for packages, but should be committed for applications that require a static
# environment.
Manifest*.toml

# File generated by the Preferences package to store local preferences
LocalPreferences.toml
JuliaLocalPreferences.toml
