Skip to main content

A simple framework to create CLI tools

Project description

Chuda

PyPI PyPI - Python Version GitHub Documentation Status codecov CircleCI

Chuda is a very simple Python3 framework to create CLI (Command-Line-Interface) tools.

It will handle for you some basic stuff: parse configuration file, logging, argument parsing, signal handling etc...

Features

  • Represent commands and argparse arguments by Python classes
  • Handle parsing of a configuration file for you (INI, JSON, or YAML with pyyaml)
  • Provide you a configurable logger, and some basic options to quiet/verbose mode
  • Signals handling by decorator

Documentation

The documentation is accessible here

Example

import sys
import signal
from chuda import App, autorun, Command signal_handler, Option


class FooSubcommand(Command):
    command_name = "foo"
    description = "a foo subcommand"

    def main(self):
        self.logger.info("foo")
        self.app.subcommands["bar"].run()


class BarSubcommand(Command):
    command_name = "bar"
    description = "the ultimate bar subcommand"

    arguments = [
        Option(name=["--path"], default="~")
    ]

    def main(self):
        process = self.shell.run(
            "ls", cwd=self.arguments.path
        )
        self.logger.info(process.output)


@autorun()
class FooBarApp(App):
    app_name = "foobar"
    description = "Foobar application"

    config_path = ["./config.ini", "../config.ini"]

    subcommands = [FooSubcommand, BarSubcommand]

    @signal_handler(signal.SIGINT)
    def handle_ctrl_c(self, signum, frame):
        self.logger.info("Stopping...")
        sys.exit(2)

Project details


Download files

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

Files for chuda, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size chuda-0.1.1.tar.gz (11.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page