Architecture

Purpose

Understanding Excavate’s design and architecture.

Design Principles

Excavate follows these principles:

Topics

Table 1. MECE:: Mutually Exclusive, Collectively Exhaustive
Topic Description

Design Principles

OOP principles used

Extractor Pattern

The extractor base class

Format Detection

How detection works

Extending

Adding new extractors

Diagrams

Architecture diagrams

High-Level Architecture

┌─────────────────────────────────────────────────────────────┐
│                     Excavate::Archive                       │
│           (Facade providing unified interface)              │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            │ delegates to
                            │
    ┌───────────────────────┴───────────────────────┐
    │           Format Type Registry                │
    │           (TYPES hash mapping)                │
    └───────────────────────┬───────────────────────┘
                            │
                            │ instantiates
                            │
    ┌───────────────────────┴───────────────────────┐
    │           Extractors::Extractor               │
    │           (Abstract base class)               │
    └───────────────────────────┬───────────────────────┘
                            │
                            │ specialized by
                            │
    ┌───────┬───────┬───────┼───────┬───────┬───────┐
    │       │       │       │       │       │       │
   Cab    Cpio    Gzip    Xar     Zip    SevenZip  ...
    │       │       │       │       │       │
    └───────┴───────┴───────┴───────┴───────┴───────┘
              Powered by Omnizip & Cabriolet

Next Steps

Explore specific topics for detailed architectural documentation.


Table of contents