**Project:**
[![License](https://img.shields.io/github/license/davidbrownell/dbrownell_ToolsDirectory?color=dark-green)](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/master/LICENSE)

**Package:**
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/dbrownell_ToolsDirectory?color=dark-green)](https://pypi.org/project/dbrownell_ToolsDirectory/)
[![PyPI - Version](https://img.shields.io/pypi/v/dbrownell_ToolsDirectory?color=dark-green)](https://pypi.org/project/dbrownell_ToolsDirectory/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/dbrownell_ToolsDirectory)](https://pypistats.org/packages/dbrownell-toolsdirectory)

**Development:**
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
[![CI](https://github.com/davidbrownell/dbrownell_ToolsDirectory/actions/workflows/CICD.yml/badge.svg)](https://github.com/davidbrownell/dbrownell_ToolsDirectory/actions/workflows/CICD.yml)
[![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/davidbrownell/f15146b1b8fdc0a5d45ac0eb786a84f7/raw/dbrownell_ToolsDirectory_code_coverage.json)](https://github.com/davidbrownell/dbrownell_ToolsDirectory/actions)
[![GitHub commit activity](https://img.shields.io/github/commit-activity/y/davidbrownell/dbrownell_ToolsDirectory?color=dark-green)](https://github.com/davidbrownell/dbrownell_ToolsDirectory/commits/main/)

<!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->

## Contents
- [Overview](#overview)
- [Installation](#installation)
- [Development](#development)
- [Additional Information](#additional-information)
- [License](#license)

## Overview
`dbrownell_ToolsDirectory` is a Python utility that automates the setup of tool environments by generating shell initialization scripts. It scans a directory structure containing organized tools and their versions, then creates either Bash or Batch scripts that add these tools to your system path and configure their environment variables. This tool is handy for managing multiple tool versions across different operating systems and architectures, allowing you to maintain a centralized directory of tools and automatically generate the necessary shell commands to make them available in your terminal environment.

### How to use `dbrownell_ToolsDirectory`

There are two ways to use `dbrownell_ToolsDirectory`: through convenience activation scripts or by using the CLI directly.

1. Clone the repository locally:
   ```bash
   git clone https://github.com/davidbrownell/dbrownell_ToolsDirectory
   ```

2. Run the activation script for your shell:

   **For Bash (Linux/macOS):**
   ```bash
   . <repository location>/src/dbrownell_ToolsDirectory/Scripts/activate.sh <tools directory>
   ```

   **For Batch (Windows):**
   ```batch
   <repository location>\src\dbrownell_ToolsDirectory\Scripts\activate.bat <tools directory>
   ```

3. All tools and environment variables from `<tools directory>` will be added to your environment.

#### Example

##### Hard Drive
```
/Tools/
├── Tool1/
│   └── Tool1.env
├── Tool2/
│   └── bin/
└── Tool3/
    ├── v1.2.3/
    └── v4.5.6/
```

##### `Tool1.env`
```env
FOO=BAR
FILENAME=./filename
```

##### After Activation
```
# Added by traversing the directory hierarchy
PATH=${PATH}:/Tools/Tool1:/Tools/Tool2/bin:/Tools/Tool3/v4.5.6

# Added through .env files within the directory hierarchy
FOO=BAR
FILENAME=/Tools/Tool1/filename
```

<!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->

## Installation

| Installation Method | Command |
| --- | --- |
| Via [uv](https://github.com/astral-sh/uv) | `uv add dbrownell_ToolsDirectory` |
| Via [pip](https://pip.pypa.io/en/stable/) | `pip install dbrownell_ToolsDirectory` |



## Development
Please visit [Contributing](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/CONTRIBUTING.md) and [Development](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/DEVELOPMENT.md) for information on contributing to this project.

## Additional Information
Additional information can be found at these locations.

| Title | Document | Description |
| --- | --- | --- |
| Code of Conduct | [CODE_OF_CONDUCT.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/CODE_OF_CONDUCT.md) | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
| Contributing | [CONTRIBUTING.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/CONTRIBUTING.md) | Information about contributing to this project. |
| Development | [DEVELOPMENT.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/DEVELOPMENT.md) | Information about development activities involved in making changes to this project. |
| Governance | [GOVERNANCE.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/GOVERNANCE.md) | Information about how this project is governed. |
| Maintainers | [MAINTAINERS.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/MAINTAINERS.md) | Information about individuals who maintain this project. |
| Security | [SECURITY.md](https://github.com/davidbrownell/dbrownell_ToolsDirectory/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |

## License
`dbrownell_ToolsDirectory` is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
