Skip to main content

Minimal command-line interface using a plugin-based architecture

This project demonstrates a minimal (but featureful) command-line interface (CLI) using a plugin-based architecture (PBA). The CLI itself is constructed using Typer.

The PBA is achieved using a combination of:

For a working plugin example, see minimal-pba-cli-plugin-example.

Installation

Install the core CLI using the following command:

$ pipx install minimal-pba-cli

Usage

List available commands using the help:

$ pba-cli --help

Plugins

List available plugins using the following command (requires a Libraries.io API key):

LIBRARIES_IO_API_KEY=<your API key> pba-cli plugin catalog

Install a plugin using the following command:

$ pba-cli plugin install <plugin name>

List installed plugins using the following command:

$ pba-cli plugin list

Install a plugin from a local directory using the following command:

$ pba-cli plugin install-local <path to plugin directory>

Uninstall a plugin using the following command:

$ pba-cli plugin uninstall <plugin name>

Custom scripts

To create a custom script that registers in the CLI, create an executable anywhere on your PATH that follows the naming convention minimal-pba-cli-<name>. This script will be registered as a command named <name> in the CLI.

As an example, create a script named minimal-pba-cli-hello with the following content:

#!/usr/bin/env sh

echo "Hello, world!"

Make the script executable:

$ chmod +x minimal-pba-cli-hello

Now, if the script is located in a directory on your PATH, you can run it using the following command:

$ pba-cli hello
Hello, world!

Scripts can be written in any language, as long as they are executable and follow the naming convention:

#!/usr/bin/env python

# minimal-pba-cli-quote

import json
import urllib.request


if __name__ == "__main__":
    response = urllib.request.urlopen("https://zenquotes.io/api/random")
    data = json.loads(response.read().decode("utf-8"))
    print(f"""
"{data[0]['q']}"

- {data[0]['a']}
$ pba-cli quote

"Educating the mind without educating the heart is no education at all."

- Aristotle

Download files

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

Source Distribution

minimal_pba_cli-0.0.5.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

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

minimal_pba_cli-0.0.5-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file minimal_pba_cli-0.0.5.tar.gz.

File metadata

  • Download URL: minimal_pba_cli-0.0.5.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for minimal_pba_cli-0.0.5.tar.gz
Algorithm Hash digest
SHA256 609586da1ddeafb900802043eed8aba27f59e2521af8bb1eb4b3d6ccd2927990
MD5 e43b233519a555879500f8dc0c847053
BLAKE2b-256 b8db1b255e1295016c43bdb2006cc3c529bbafdc12c93324c742d8e3c244347b

See more details on using hashes here.

File details

Details for the file minimal_pba_cli-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for minimal_pba_cli-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 11ece826d926401ced28b01cc2921ffe5fd7421b8391ec5f720d1eff51fb3210
MD5 573c2315727123beb67713e4e34a796e
BLAKE2b-256 4ee50bc2653a7ff8643707170623a764acbb9a4938e27d8cbec1c9ff38a48cfe

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

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