Skip to main content

Click Command Loader, permit to load Click command from a given folder.

Project description

Click Command Loader (CCL)

Click Command Loader

Click Command Loader (Referred as CCL) is an additional package for Click to load Click commands from a folder.

As such, by having the following folder structure:

my_project/
├─ commands/
│  ├─ create.py
│  ├─ delete.py
│  ├─ list.py
├─ __init__.py

The commands create, delete and list will be registered in your Click app!

Installation

I'm a package that is available on PyPi!

With Pip

pip install clickloader

With Poetry

poetry add clickloader

Example

Let's consider you have the following commands structure:

my_project/
├─ commands/
│  ├─ create.py
│  ├─ delete.py
│  ├─ list.py
├─ cli.py

Inside your cli.py, you should have your base logic for your CLI app. Originally, this is where all your commands would be registered, but CCL will help you leverage the work here.

Here's is what the content of the cli.py would be:

import click
import ccl
import pathlib


path_to_commands = pathlib.Path(__file__, "..", "commands")

my_cli = click.Group("MyCLI")
ccl.register_commands(my_cli, path_to_commands)

if __name__ == "__main__":
    my_cli()

And voilà! All commands inside your "commands" folder have been registered!

Behind the scene

When registering commands, CCL will do the following:

  1. List files and folder inside the given source.

  2. Iterate over directory, if a file is found, go to step 3, if a folder is found, go to step 2.1

    2.1. If folder, see if a __init__.py exist, if it exist, attempt to export a function that contains a click decorator (MUST BE A GROUP). If not found, create a click group, then continue to step 3 using the indicated group.

  3. If file, attempt to export a function that contains a click decorator (MUST BE A COMMAND), then add it to the given group.

  4. Continue until all files/folder have been scanned.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clickloader-0.1.1.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clickloader-0.1.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file clickloader-0.1.1.tar.gz.

File metadata

  • Download URL: clickloader-0.1.1.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-1041-azure

File hashes

Hashes for clickloader-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8e38cad5de762de49c1da42d0a81594175747b90e74d65649f2119bbac806b6e
MD5 2143c4c805e527c129e38d29b3bdb5c5
BLAKE2b-256 28599cb70016dcdcd43245ab1ce38408378d4b671be3d0510b2717f1a5fbb653

See more details on using hashes here.

File details

Details for the file clickloader-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: clickloader-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-1041-azure

File hashes

Hashes for clickloader-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3520377dc1d62e8e0325e898eea0a4d7834cd90cd94fcd428084181af36ba579
MD5 7bd67741d833676437fae4f8c174e4aa
BLAKE2b-256 59ef35adb3b828af06d9c68a68ba3639b18478f769875bb61589ce252fdeebcd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page