# gvanem/envtool architecture

> Architecture diagram of the GitHub repository gvanem/envtool, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gvanem/envtool
- Repository: https://github.com/gvanem/envtool

## Overview

EnvTool is a Windows-oriented command-line search and diagnostics tool. Users choose one or more modes and a file pattern; the tool searches environment-variable paths or specialized indexes, can check path consistency and filter or inspect matches, then reports findings. The README also documents EveryThing database searches, Python and Lua paths, CMake and package-config paths, and Vcpkg package queries. Internal support includes directory enumeration, caching, matching, and reporting. The graph follows documented mode behavior; source excerpts are partial, so uncertain internal call relationships are omitted.

Main entry points: [`src/envtool.c`](https://github.com/gvanem/envtool/blob/master/src/envtool.c) (EnvTool CLI), [`src/dirlist.c`](https://github.com/gvanem/envtool/blob/master/src/dirlist.c) (Directory listing), [`src/vcpkg.c`](https://github.com/gvanem/envtool/blob/master/src/vcpkg.c) (Vcpkg packages), [`src/envtool_py.c`](https://github.com/gvanem/envtool/blob/master/src/envtool_py.c) (Python paths)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Command entry"]
  node_cli["EnvTool CLI<br/>[envtool.c]"]
end

subgraph group_envmodes["Environment searches"]
  node_pathmode["PATH search<br/>[envtool.c]"]
  node_inc_lib["Include and library<br/>[envtool.c]"]
  node_manmode["Manual pages<br/>[envtool.c]"]
  node_cmake["CMake modules<br/>[cmake.c]"]
  node_pkgconfig["Package config<br/>[pkg-config.c]"]
  node_lua["Lua paths<br/>[lua.c]"]
  node_python["Python paths<br/>[envtool_py.c]"]
end

subgraph group_indexes["Indexes and packages"]
  node_everything["EveryThing search<br/>[Everything.c]"]
  node_everything3["EveryThing v3<br/>[Everything3.c]"]
  node_etp["Remote ETP<br/>[Everything_ETP.c]"]
  node_vcpkg["Vcpkg packages<br/>[vcpkg.c]"]
end

subgraph group_diagnostics["Diagnostics"]
  node_check["Path checks<br/>[check.c]"]
  node_registry["App Paths registry<br/>[envtool.c]"]
end

subgraph group_runtime["Search runtime"]
  node_directory["Directory listing<br/>[dirlist.c]"]
  node_regex["Pattern matching<br/>[regex.c]"]
  node_cache[("Search cache<br/>[cache.c]")]
  node_report["Results reporting<br/>[report.c]"]
  node_auth["Remote credentials<br/>[auth.c]"]
end

node_user(("CLI user"))

node_user -->|"runs"| node_cli
node_cli -->|"selects mode"| node_pathmode
node_cli -->|"selects mode"| node_inc_lib
node_cli -->|"selects mode"| node_manmode
node_cli -->|"selects mode"| node_cmake
node_cli -->|"selects mode"| node_pkgconfig
node_cli -->|"selects mode"| node_lua
node_cli -->|"selects mode"| node_python
node_cli -->|"selects mode"| node_everything
node_cli -->|"remote search"| node_etp
node_cli -->|"selects mode"| node_vcpkg
node_cli -->|"checks paths"| node_check
node_cli -->|"checks registry"| node_registry
node_cli -->|"reports findings"| node_report
node_everything -.->|"uses SDK"| node_everything3
node_pathmode -.->|"searches directories"| node_directory
node_inc_lib -.->|"searches directories"| node_directory
node_python -->|"searches paths"| node_directory
node_vcpkg -->|"reads cache"| node_cache
node_vcpkg -->|"lists directories"| node_directory
node_cli -.->|"supports regex"| node_regex
node_etp -->|"uses credentials"| node_auth

click node_cli "https://github.com/gvanem/envtool/blob/master/src/envtool.c"
click node_pathmode "https://github.com/gvanem/envtool/blob/master/src/envtool.c"
click node_inc_lib "https://github.com/gvanem/envtool/blob/master/src/envtool.c"
click node_manmode "https://github.com/gvanem/envtool/blob/master/src/envtool.c"
click node_cmake "https://github.com/gvanem/envtool/blob/master/src/cmake.c"
click node_pkgconfig "https://github.com/gvanem/envtool/blob/master/src/pkg-config.c"
click node_lua "https://github.com/gvanem/envtool/blob/master/src/lua.c"
click node_python "https://github.com/gvanem/envtool/blob/master/src/envtool_py.c"
click node_everything "https://github.com/gvanem/envtool/blob/master/src/Everything.c"
click node_everything3 "https://github.com/gvanem/envtool/blob/master/src/Everything3.c"
click node_etp "https://github.com/gvanem/envtool/blob/master/src/Everything_ETP.c"
click node_vcpkg "https://github.com/gvanem/envtool/blob/master/src/vcpkg.c"
click node_check "https://github.com/gvanem/envtool/blob/master/src/check.c"
click node_registry "https://github.com/gvanem/envtool/blob/master/src/envtool.c"
click node_directory "https://github.com/gvanem/envtool/blob/master/src/dirlist.c"
click node_regex "https://github.com/gvanem/envtool/blob/master/src/regex.c"
click node_cache "https://github.com/gvanem/envtool/blob/master/src/cache.c"
click node_report "https://github.com/gvanem/envtool/blob/master/src/report.c"
click node_auth "https://github.com/gvanem/envtool/blob/master/src/auth.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_user toneBlue
class node_pathmode,node_inc_lib,node_manmode,node_cmake,node_pkgconfig,node_lua,node_python toneAmber
class node_everything,node_everything3,node_etp,node_vcpkg toneMint
class node_check,node_registry toneRose
class node_directory,node_regex,node_cache,node_report,node_auth toneIndigo
```

## Components

### Command entry

- [EnvTool CLI](https://github.com/gvanem/envtool/blob/master/src/envtool.c): `src/envtool.c`

### Environment searches

- [PATH search](https://github.com/gvanem/envtool/blob/master/src/envtool.c): `src/envtool.c`
- [Include and library](https://github.com/gvanem/envtool/blob/master/src/envtool.c): `src/envtool.c`
- [Manual pages](https://github.com/gvanem/envtool/blob/master/src/envtool.c): `src/envtool.c`
- [CMake modules](https://github.com/gvanem/envtool/blob/master/src/cmake.c): `src/cmake.c`
- [Package config](https://github.com/gvanem/envtool/blob/master/src/pkg-config.c): `src/pkg-config.c`
- [Lua paths](https://github.com/gvanem/envtool/blob/master/src/lua.c): `src/lua.c`
- [Python paths](https://github.com/gvanem/envtool/blob/master/src/envtool_py.c): `src/envtool_py.c`

### Indexes and packages

- [EveryThing search](https://github.com/gvanem/envtool/blob/master/src/Everything.c): `src/Everything.c`
- [EveryThing v3](https://github.com/gvanem/envtool/blob/master/src/Everything3.c): `src/Everything3.c`
- [Remote ETP](https://github.com/gvanem/envtool/blob/master/src/Everything_ETP.c): `src/Everything_ETP.c`
- [Vcpkg packages](https://github.com/gvanem/envtool/blob/master/src/vcpkg.c): `src/vcpkg.c`

### Diagnostics

- [Path checks](https://github.com/gvanem/envtool/blob/master/src/check.c): `src/check.c`
- [App Paths registry](https://github.com/gvanem/envtool/blob/master/src/envtool.c): `src/envtool.c`

### Search runtime

- [Directory listing](https://github.com/gvanem/envtool/blob/master/src/dirlist.c): `src/dirlist.c`
- [Pattern matching](https://github.com/gvanem/envtool/blob/master/src/regex.c): `src/regex.c`
- [Search cache](https://github.com/gvanem/envtool/blob/master/src/cache.c): `src/cache.c`
- [Results reporting](https://github.com/gvanem/envtool/blob/master/src/report.c): `src/report.c`
- [Remote credentials](https://github.com/gvanem/envtool/blob/master/src/auth.c): `src/auth.c`

### Other components

- **CLI user**

## Connections

- CLI user → EnvTool CLI: runs
- EnvTool CLI → PATH search: selects mode (evidence: `src/envtool.c`)
- EnvTool CLI → Include and library: selects mode (evidence: `src/envtool.c`)
- EnvTool CLI → Manual pages: selects mode (evidence: `src/envtool.c`)
- EnvTool CLI → CMake modules: selects mode
- EnvTool CLI → Package config: selects mode
- EnvTool CLI → Lua paths: selects mode
- EnvTool CLI → Python paths: selects mode
- EnvTool CLI → EveryThing search: selects mode
- EnvTool CLI → Remote ETP: remote search
- EnvTool CLI → Vcpkg packages: selects mode (evidence: `src/envtool.c`)
- EnvTool CLI → Path checks: checks paths
- EnvTool CLI → App Paths registry: checks registry (evidence: `src/envtool.c`)
- EnvTool CLI → Results reporting: reports findings (evidence: `src/envtool.c`)
- EveryThing search → EveryThing v3: uses SDK
- PATH search → Directory listing: searches directories
- Include and library → Directory listing: searches directories
- Python paths → Directory listing: searches paths (evidence: `src/envtool_py.c`)
- Vcpkg packages → Search cache: reads cache (evidence: `src/vcpkg.c`)
- Vcpkg packages → Directory listing: lists directories (evidence: `src/vcpkg.c`)
- EnvTool CLI → Pattern matching: supports regex
- Remote ETP → Remote credentials: uses credentials (evidence: `src/Everything_ETP.c`)
