An open API service indexing awesome lists of open source software.

https://github.com/developerstoolbox/template-python-project

A baseline for creating python projects for security projects.
https://github.com/developerstoolbox/template-python-project

baseline defensive-security neutral-security offsensive-security security security-tools wolfsoftware

Last synced: 3 months ago
JSON representation

A baseline for creating python projects for security projects.

Awesome Lists containing this project

README

          



GreyTeamToolbox logo




Github Build Status


License


Created




Release


Released


Commits since release















## Overview

This is the template project template that we use internally when creating new python tools. It includes features such as argument parsing, configuration management, and a
modular structure to facilitate scalable and maintainable code development.

We decided to make this available along with our other tools to allow people to use a well engineered starting point when creating their own tools.

We also proide 2 other templates which we use.

- [template package CLI](https://github.com/DevelopersToolbox/template-package-cli)
- [template package importable](https://github.com/DevelopersToolbox/template-package-importable)

## Features

- **Modular Architecture**: Organize your code into modules for better maintainability.
- **Argument Parsing**: Easily handle command-line arguments using `argparse`.
- **Configuration Management**: Generate configuration objects from command-line arguments.
- **Custom Exceptions**: Implement custom exceptions for specific error handling.

## Installation

To install the template roject, clone the repository and navigate to the project directory:

```bash
git clone https://github.com/DevelopersToolbox/template-python-project.git
cd template-python-project
```

It is recommended to use a virtual environment to manage dependencies. You can create and activate a virtual environment using the following commands:

```bash
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
```

Install the required dependencies:

```bash
pip install -r requirements.txt
```

## Usage

To run the template roject, execute the `run` function from the main script:

```bash
python main.py --required
```

### Command-Line Arguments

The application supports several command-line arguments:

- `-h, --help`: Show help message and exit.
- `-d, --debug`: Enable debug mode for verbose output.
- `-v, --verbose`: Enable verbose output to show scan results as they come in.
- `-V, --version`: Show the program's version number and exit.
- `-i, --optional-integer`: An optional integer argument (default: 2).
- `-s, --optional-string`: An optional string argument (default: "me").
- `-r, --required`: A required string argument.

Example usage:

```bash
python main.py -r "required_value" -i 10 -s "optional_string"
```

## Project Structure

The project is organized as follows:

```
template-python-project/
├── modules/
│ ├── __init__.py
│ ├── cli.py
│ ├── config.py
│ ├── exceptions.py
│ └── globals.py
├── main.py
├── requirements.txt
└── README.md
```

- `modules/`: Contains the core modules of the application.
- `cli.py`: Handles the command-line arguments and main program flow.
- `config.py`: Handles configuration creation from command-line arguments.
- `exceptions.py`: Handles custom exceptions.
- `globals.py`: Defines global constants used across the application.
- `main.py`: The main script that orchestrates argument parsing and program execution.
- `requirements.txt`: Lists the dependencies required for the project.
- `README.md`: The file you are currently reading.