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.

Source Distribution

chuda-0.1.1.tar.gz (11.9 kB view hashes)

Uploaded Source

Supported by

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