Codebase
Navigate the Codebase using the tree view. Use the filters to highlight where various files are grouped to aid understanding.
Getting Started Commands
Project Structure
Below is a short description of the key directories of the project to aid you when understanding where key files are located.
cmd/ - This directory contains the command-line interface (CLI) for the distribution project. It includes various subdirectories and files for different commands such as digest, registry, and others.
cmd/digest/ - This subdirectory is related to the digest command, which is used to compute and verify the integrity of Git objects using various algorithms.
cmd/registry/ - This subdirectory is related to the registry command, which is used to manage a GitHub Package Registry. It includes various configuration files and the main Go file for the command.
configuration/ - This directory contains various files related to the configuration of the distribution project. It includes files for parsing configuration files, fuzz testing, and more.
digestset/ - This directory is related to the digestset package, which is used to manage a set of Git object digests. It includes a deprecated file and other Go files.
dockerfiles/ - This directory contains various Dockerfiles used for building different components of the distribution project.
health/ - This directory is related to the health checking functionality of the distribution project. It includes files for API, checks, and documentation.
internal/ - This directory contains internal packages used by the distribution project. It includes various subdirectories for client, dcontext, requestutil, and more.
manifest/ - This directory is related to the manifest handling functionality of the distribution project. It includes various subdirectors for manifestlist, ocischema, schema2, and more.
metrics/ - This directory is related to the metrics functionality of the distribution project, specifically for Prometheus.
notifications/ - This directory is related to the notifications functionality of the distribution project, which includes various endpoints and bridges for different notification types.
project/ - This directory is related to the project-specific configuration and hooks for the distribution project.
registry/ - This directory is related to the GitHub Package Registry functionality of the distribution project. It includes various subdirectories for API, auth, handlers, listener, middleware, proxy, storage, and more.
tests/ - This directory contains various test files for the distribution project.
tracing/ - This directory is related to the tracing functionality of the distribution project, which includes various exporters and log writers.
version/ - This directory is related to the version handling functionality of the distribution project, which includes various Go files for version-related tasks.
Entrypoints
Below are files we identified as entrypoints for to the codebase. This is where the application starts and a good place to start when learning.
cmd/digest/main.go - Entry point for the digest command with functions for initialization, usage, handling unsupported types, and the main function.
cmd/registry-api-descriptor-template/main.go - Entry point for the registry-api-descriptor-template command, which uses the APIDescriptor from the api/v2 package to execute templates passed through the command line. The command generates new API specifications using the provided template and the APIDescriptor object. The template syntax is based on Go's standard library text/template package. For more information on the template syntax, please refer to golang.org/pkg/text/template.
cmd/registry/main.go - Entry point for the registry command with the main function.