Skip to main content

Framework for creating CLI apps using Python

Project description

Python CLI App

Framework for creating CLI apps using Python

The purpose of this library is to speed up bulding CLI applications by providing abstract classes representing an app and its commands. It uses argparse to define and parse command line arguments.

Concepts

App

An "App" is the main entry point of an application. It groups together one or more commands

Command

A "Command" is a single operation that the application can perform. It is identified by a positional argument on the command line. Let's take git as an example. git would be the app that provides different commands, such as add, commit, merge, checkout, etc.

Example

git.py

#!/usr/bin/env python3

from cli_app import App
from commands.checkout import Checkout
from commands.merge import Merge


class Git(App):
    """Git - fast, scalable, distributed revision control system"""

    def register_commands(self):
        self.add_command('checkout', Checkout)  # make the Checkout command available through `git.py checkout …`
        self.add_command('merge', Merge)  # make the Merge command available through `git.py merge …`


if __name__ == '__main__':
    app = Git()
    app.run()

commands/checkout.py

from cli_app import Command


class Checkout(Command):
    """Switch branches or restore working tree files"""

    @staticmethod
    def register_arguments(parser):
        parser.add_argument('ref', type=str, help='The ref (branch name, tag, commit sha) to checkout')

    def run(self):
        # Do whatever needs to be done to checkout given ref
        print('Checking out %s' % self.app.args.ref)

commands/merge.py

from cli_app import Command


class Merge(Command):
    """Join two or more development histories together"""

    @staticmethod
    def register_arguments(parser):
        parser.add_argument('branch', type=str, help='The branch to merge into the currently checked-out branch')

    def run(self):
        # Do whatever needs to be done to merge given branch
        print('Merging %s into current branch' % self.app.args.branch)

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

cli-app-0.1.0.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

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

cli_app-0.1.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file cli-app-0.1.0.tar.gz.

File metadata

  • Download URL: cli-app-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for cli-app-0.1.0.tar.gz
Algorithm Hash digest
SHA256 826e541f3aa3243ba2d134d20435ace714912166b34f74bfe64852e55a49d90d
MD5 6fd6d298c21cfc542aa4452da265a71d
BLAKE2b-256 74aee7a944793bd87ff96e0f488419fe780848f83fea4134329b0893a2ac50e7

See more details on using hashes here.

File details

Details for the file cli_app-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cli_app-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for cli_app-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 652d829e6cfa44a776d9442f142178406741f3cec7e9fa597b1fe954873ed495
MD5 301944fb0904255738b5ab06700b7ea4
BLAKE2b-256 02f97cc1737a26d9133e5dd3f94945a5e685cca9735aa93c56c216d0c3865851

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