<!-- markdownlint-disable -->
<p align="center">
<a href="https://github.com/DevelopersToolbox/">
<img src="https://cdn.wolfsoftware.com/assets/images/github/organisations/developerstoolbox/black-and-white-circle-256.png" alt="DevelopersToolbox logo" />
</a>
<br />
<a href="https://github.com/DevelopersToolbox/template-package-cli/actions/workflows/cicd.yml">
<img src="https://img.shields.io/github/actions/workflow/status/DevelopersToolbox/template-package-cli/cicd.yml?branch=master&label=build%20status&style=for-the-badge" alt="Github Build Status" />
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/blob/master/LICENSE.md">
<img src="https://img.shields.io/github/license/DevelopersToolbox/template-package-cli?color=blue&label=License&style=for-the-badge" alt="License">
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli">
<img src="https://img.shields.io/github/created-at/DevelopersToolbox/template-package-cli?color=blue&label=Created&style=for-the-badge" alt="Created">
</a>
<br />
<a href="https://github.com/DevelopersToolbox/template-package-cli/releases/latest">
<img src="https://img.shields.io/github/v/release/DevelopersToolbox/template-package-cli?color=blue&label=Latest%20Release&style=for-the-badge" alt="Release">
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/releases/latest">
<img src="https://img.shields.io/github/release-date/DevelopersToolbox/template-package-cli?color=blue&label=Released&style=for-the-badge" alt="Released">
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/releases/latest">
<img src="https://img.shields.io/github/commits-since/DevelopersToolbox/template-package-cli/latest.svg?color=blue&style=for-the-badge" alt="Commits since release">
</a>
<br />
<a href="https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/CODE_OF_CONDUCT.md">
<img src="https://img.shields.io/badge/Code%20of%20Conduct-blue?style=for-the-badge" />
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/CONTRIBUTING.md">
<img src="https://img.shields.io/badge/Contributing-blue?style=for-the-badge" />
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/SECURITY.md">
<img src="https://img.shields.io/badge/Report%20Security%20Concern-blue?style=for-the-badge" />
</a>
<a href="https://github.com/DevelopersToolbox/template-package-cli/issues">
<img src="https://img.shields.io/badge/Get%20Support-blue?style=for-the-badge" />
</a>
</p>
## Overview
This is the package template that we use internally when creating new python cli based tools. It has all of the basic functionality and workflows needed to create,
build and publish new package to [PyPI](https://pypi.org/).
This package provides a command-line utility for processing and handling various tasks using a set of predefined arguments and configurations. The project
aims to serve as a baseline for developing similar command-line applications.
It includes features such as argument parsing, configuration management, and a modular structure to facilitate scalable and maintainable code development.
We also provide 2 other templates which we use.
- [template python project](https://github.com/DevelopersToolbox/template-python-project)
- [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 cli package, clone the repository and navigate to the project directory:
```bash
git clone https://github.com/DevelopersToolbox/template-package-cli.git
cd template-package-cli
```
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 cli package, execute the `main` function from the main script:
```bash
python -m wolfsoftware.template_package_cli.main --required <value>
```
### 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 -m wolfsoftware.template_package_cli.main -r "required_value" -i 10 -s "optional_string"
```
## Project Structure
The project is organized as follows:
```sh
template-package-cli/
├── wolfsoftware/
│ └── template_package_cli/
│ ├── __init__.py
│ ├── cli.py
│ ├── config.py
│ ├── exceptions.py
│ ├── globals.py
│ └── main.py
├── README.md
├── setup.py
└── requirements.txt
```
- `wolfsoftware/template_package_cli`: 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.
<br />
<p align="right"><a href="https://wolfsoftware.com/"><img src="https://img.shields.io/badge/Created%20by%20Wolf%20on%20behalf%20of%20Wolf%20Software-blue?style=for-the-badge" /></a></p>
Raw data
{
"_id": null,
"home_page": "https://github.com/DevelopersToolbox/template-package-cli",
"name": "wolfsoftware.template-package-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Wolf Software",
"author_email": "pypi@wolfsoftware.com",
"download_url": "https://files.pythonhosted.org/packages/ff/ae/06027cb8f79d58a2e1b494442f1584a25524966fc0ae0f26ea85d3e07107/wolfsoftware_template_package_cli-0.1.2.tar.gz",
"platform": null,
"description": "<!-- markdownlint-disable -->\n<p align=\"center\">\n <a href=\"https://github.com/DevelopersToolbox/\">\n <img src=\"https://cdn.wolfsoftware.com/assets/images/github/organisations/developerstoolbox/black-and-white-circle-256.png\" alt=\"DevelopersToolbox logo\" />\n </a>\n <br />\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/actions/workflows/cicd.yml\">\n <img src=\"https://img.shields.io/github/actions/workflow/status/DevelopersToolbox/template-package-cli/cicd.yml?branch=master&label=build%20status&style=for-the-badge\" alt=\"Github Build Status\" />\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/blob/master/LICENSE.md\">\n <img src=\"https://img.shields.io/github/license/DevelopersToolbox/template-package-cli?color=blue&label=License&style=for-the-badge\" alt=\"License\">\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli\">\n <img src=\"https://img.shields.io/github/created-at/DevelopersToolbox/template-package-cli?color=blue&label=Created&style=for-the-badge\" alt=\"Created\">\n </a>\n <br />\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/releases/latest\">\n <img src=\"https://img.shields.io/github/v/release/DevelopersToolbox/template-package-cli?color=blue&label=Latest%20Release&style=for-the-badge\" alt=\"Release\">\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/releases/latest\">\n <img src=\"https://img.shields.io/github/release-date/DevelopersToolbox/template-package-cli?color=blue&label=Released&style=for-the-badge\" alt=\"Released\">\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/releases/latest\">\n <img src=\"https://img.shields.io/github/commits-since/DevelopersToolbox/template-package-cli/latest.svg?color=blue&style=for-the-badge\" alt=\"Commits since release\">\n </a>\n <br />\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/CODE_OF_CONDUCT.md\">\n <img src=\"https://img.shields.io/badge/Code%20of%20Conduct-blue?style=for-the-badge\" />\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/CONTRIBUTING.md\">\n <img src=\"https://img.shields.io/badge/Contributing-blue?style=for-the-badge\" />\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/blob/master/.github/SECURITY.md\">\n <img src=\"https://img.shields.io/badge/Report%20Security%20Concern-blue?style=for-the-badge\" />\n </a>\n <a href=\"https://github.com/DevelopersToolbox/template-package-cli/issues\">\n <img src=\"https://img.shields.io/badge/Get%20Support-blue?style=for-the-badge\" />\n </a>\n</p>\n\n## Overview\n\n\nThis is the package template that we use internally when creating new python cli based tools. It has all of the basic functionality and workflows needed to create,\nbuild and publish new package to [PyPI](https://pypi.org/).\n\nThis package provides a command-line utility for processing and handling various tasks using a set of predefined arguments and configurations. The project\naims to serve as a baseline for developing similar command-line applications.\n\nIt includes features such as argument parsing, configuration management, and a modular structure to facilitate scalable and maintainable code development.\n\nWe also provide 2 other templates which we use.\n\n- [template python project](https://github.com/DevelopersToolbox/template-python-project)\n- [template package importable](https://github.com/DevelopersToolbox/template-package-importable)\n\n## Features\n\n- **Modular Architecture**: Organize your code into modules for better maintainability.\n- **Argument Parsing**: Easily handle command-line arguments using `argparse`.\n- **Configuration Management**: Generate configuration objects from command-line arguments.\n- **Custom Exceptions**: Implement custom exceptions for specific error handling.\n\n## Installation\n\nTo install the cli package, clone the repository and navigate to the project directory:\n\n```bash\ngit clone https://github.com/DevelopersToolbox/template-package-cli.git\ncd template-package-cli\n```\n\nIt is recommended to use a virtual environment to manage dependencies. You can create and activate a virtual environment using the following commands:\n\n```bash\npython -m venv venv\nsource venv/bin/activate # On Windows, use `venv\\Scripts\\activate`\n```\n\nInstall the required dependencies:\n\n```bash\npip install -r requirements.txt\n```\n\n## Usage\n\nTo run the cli package, execute the `main` function from the main script:\n\n```bash\npython -m wolfsoftware.template_package_cli.main --required <value>\n```\n\n### Command-Line Arguments\n\nThe application supports several command-line arguments:\n\n- `-h, --help`: Show help message and exit.\n- `-d, --debug`: Enable debug mode for verbose output.\n- `-v, --verbose`: Enable verbose output to show scan results as they come in.\n- `-V, --version`: Show the program's version number and exit.\n- `-i, --optional-integer`: An optional integer argument (default: 2).\n- `-s, --optional-string`: An optional string argument (default: \"me\").\n- `-r, --required`: A required string argument.\n\nExample usage:\n\n```bash\npython -m wolfsoftware.template_package_cli.main -r \"required_value\" -i 10 -s \"optional_string\"\n```\n\n## Project Structure\n\nThe project is organized as follows:\n\n```sh\ntemplate-package-cli/\n\u251c\u2500\u2500 wolfsoftware/\n\u2502 \u2514\u2500\u2500 template_package_cli/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 cli.py\n\u2502 \u251c\u2500\u2500 config.py\n\u2502 \u251c\u2500\u2500 exceptions.py\n\u2502 \u251c\u2500\u2500 globals.py\n\u2502 \u2514\u2500\u2500 main.py\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 setup.py\n\u2514\u2500\u2500 requirements.txt\n```\n\n- `wolfsoftware/template_package_cli`: Contains the core modules of the application.\n - `cli.py`: Handles the command-line arguments and main program flow.\n - `config.py`: Handles configuration creation from command-line arguments.\n - `exceptions.py`: Handles custom exceptions.\n - `globals.py`: Defines global constants used across the application.\n - `main.py`: The main script that orchestrates argument parsing and program execution.\n- `requirements.txt`: Lists the dependencies required for the project.\n- `README.md`: The file you are currently reading.\n\n<br />\n<p align=\"right\"><a href=\"https://wolfsoftware.com/\"><img src=\"https://img.shields.io/badge/Created%20by%20Wolf%20on%20behalf%20of%20Wolf%20Software-blue?style=for-the-badge\" /></a></p>\n",
"bugtrack_url": null,
"license": null,
"summary": "A template python command line package.",
"version": "0.1.2",
"project_urls": {
"Documentation": "https://github.com/DevelopersToolbox/template-package-cli",
"Homepage": "https://github.com/DevelopersToolbox/template-package-cli",
"Source": "https://github.com/DevelopersToolbox/template-package-cli",
"Sponsor": "https://github.com/sponsors/WolfSoftware",
"Tracker": "https://github.com/DevelopersToolbox/template-package-cli/issues/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7496cb22ff1bbac7bf48f68df2a43dad2b8348c282e3cb1ff83b78f4dd3ef6ff",
"md5": "f2f682b285320b747dcba663f0caf19f",
"sha256": "9f2a0edef4b5241ec008482ab0f91b1342317c2745c1ffb48d0374d70e92c341"
},
"downloads": -1,
"filename": "wolfsoftware.template_package_cli-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f2f682b285320b747dcba663f0caf19f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 9169,
"upload_time": "2024-06-26T17:29:45",
"upload_time_iso_8601": "2024-06-26T17:29:45.922319Z",
"url": "https://files.pythonhosted.org/packages/74/96/cb22ff1bbac7bf48f68df2a43dad2b8348c282e3cb1ff83b78f4dd3ef6ff/wolfsoftware.template_package_cli-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ffae06027cb8f79d58a2e1b494442f1584a25524966fc0ae0f26ea85d3e07107",
"md5": "2ecf7b381e642b2793f8606de88cfe0a",
"sha256": "0cc5f38024aa5f02b46e804b9006d0e5783c74e83e56ed7b34283bed3d77c140"
},
"downloads": -1,
"filename": "wolfsoftware_template_package_cli-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "2ecf7b381e642b2793f8606de88cfe0a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 9118,
"upload_time": "2024-06-26T17:29:46",
"upload_time_iso_8601": "2024-06-26T17:29:46.882342Z",
"url": "https://files.pythonhosted.org/packages/ff/ae/06027cb8f79d58a2e1b494442f1584a25524966fc0ae0f26ea85d3e07107/wolfsoftware_template_package_cli-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-26 17:29:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "DevelopersToolbox",
"github_project": "template-package-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "wolfsoftware.template-package-cli"
}