# deanhouseholder/gitprompt architecture

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

- Interactive diagram: https://gitdiagram.com/deanhouseholder/gitprompt
- Repository: https://github.com/deanhouseholder/gitprompt

## Overview

Bash Git Prompt provides a Git-aware Bash prompt, Git shortcut/menu helpers, and Git command completion. The documented user workflow is to source the default prompt from a Bash startup file, then see repository state in the prompt; users can also invoke the shortcut menu or use shell completion. Source excerpts were unavailable, so internal calls between the listed scripts are not inferred.

Main entry points: [`git-prompt.sh`](https://github.com/deanhouseholder/gitprompt/blob/master/git-prompt.sh) (Git prompt), [`default-prompt.sh`](https://github.com/deanhouseholder/gitprompt/blob/master/default-prompt.sh) (Default prompt), [`git-shortcuts.sh`](https://github.com/deanhouseholder/gitprompt/blob/master/git-shortcuts.sh) (Git shortcuts), [`menu.sh`](https://github.com/deanhouseholder/gitprompt/blob/master/menu.sh) (Shortcut menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prompt["Git Prompt"]
  node_default["Default prompt<br/>[default-prompt.sh]"]
  node_promptfn["Git prompt<br/>[git-prompt.sh]"]
end

subgraph group_shortcuts["Git Shortcuts"]
  node_shortcuts["Git shortcuts<br/>[git-shortcuts.sh]"]
  node_menu["Shortcut menu<br/>[menu.sh]"]
  node_example["Menu example<br/>[menu_example.sh]"]
end

subgraph group_completion["Git Completion"]
  node_completion["Git completion"]
end

node_user(("Bash user"))
node_bash(("Bash shell"))
node_git["Git"]

node_user -->|"uses"| node_bash
node_bash -->|"sources"| node_default
node_bash -->|"displays prompt"| node_promptfn
node_promptfn -->|"detects Git state"| node_git
node_user -->|"invokes shortcuts"| node_shortcuts
node_user -->|"opens menu"| node_menu
node_bash -->|"uses completion"| node_completion

click node_default "https://github.com/deanhouseholder/gitprompt/blob/master/default-prompt.sh"
click node_promptfn "https://github.com/deanhouseholder/gitprompt/blob/master/git-prompt.sh"
click node_shortcuts "https://github.com/deanhouseholder/gitprompt/blob/master/git-shortcuts.sh"
click node_menu "https://github.com/deanhouseholder/gitprompt/blob/master/menu.sh"
click node_example "https://github.com/deanhouseholder/gitprompt/blob/master/menu_example.sh"
click node_completion "https://github.com/deanhouseholder/gitprompt/blob/master/git-completion.bash"

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_default,node_promptfn,node_user toneBlue
class node_shortcuts,node_menu,node_example toneAmber
class node_completion toneMint
class node_bash,node_git toneIndigo
```

## Components

### Git Prompt

- [Default prompt](https://github.com/deanhouseholder/gitprompt/blob/master/default-prompt.sh): `default-prompt.sh`
- [Git prompt](https://github.com/deanhouseholder/gitprompt/blob/master/git-prompt.sh): `git-prompt.sh`

### Git Shortcuts

- [Git shortcuts](https://github.com/deanhouseholder/gitprompt/blob/master/git-shortcuts.sh): `git-shortcuts.sh`
- [Shortcut menu](https://github.com/deanhouseholder/gitprompt/blob/master/menu.sh): `menu.sh`
- [Menu example](https://github.com/deanhouseholder/gitprompt/blob/master/menu_example.sh): `menu_example.sh`

### Git Completion

- [Git completion](https://github.com/deanhouseholder/gitprompt/blob/master/git-completion.bash): `git-completion.bash`

### Other components

- **Bash user**
- **Bash shell**
- **Git**

## Connections

- Bash user → Bash shell: uses
- Bash shell → Default prompt: sources
- Bash shell → Git prompt: displays prompt
- Git prompt → Git: detects Git state
- Bash user → Git shortcuts: invokes shortcuts
- Bash user → Shortcut menu: opens menu
- Bash shell → Git completion: uses completion
