Skip to main content

A framework that facilitates shell and batch scripting in Python

Project description

Introduction

BlazeCommandHelper (BCH) is a framework that facilitates the quick creation of shell and batch scripts. It provides a core command (bch) which locates sub-commands from system dirs, user dirs, and installed python packages (through the “blazech.commands” setuptools endpoint).

It also provides a library for quickly creating console applications based on the argparse parser.

Features

  • locates plugin commands from various places

  • provides logging facilities

  • provides configuration file facilities (needs work)

The goal is to have an API that facilitates interaction between the environment, command line options, and configuration files ala pip.

Usage

Install BCH using easy_install or pip. Once installed, create a file for your first command:

# file location:
# *nix: ~/.blazech/command_hwp.py
# windows: %APPDATA%\.blazech\command_hwp.py

# file contents
from blazech.commands import BaseCommand

class Command(BaseCommand):
    name = 'hello-world'
    help = 'say hello'

    def create_arguments(self):
        #self.parser is the argparse parser for this sub-command
        self.parser.add_argument(
            '-n', '--name',
            help='who do you want to say hello to',
            default='world'
        )

    def execute(self, args):
        print 'hello %s' % args.name

to run:

# bch -h
usage: bch [-h] [-v] [-q] {hello-world} ...

positional arguments:
  {hello-world}
    hello-world     say hello
<...snip...>

$ bch hello-world
hello world

$ bch hello-world -n foo
hello foo

Alternate Usage

BCH can also be used as a library to help quickly create commands line scripts:

# setup.py
#<...snip...>
entry_points="""
        [console_scripts]
        fooapp = foopackage.commands:script_entry
    """

Run python setup.py develop (or install, etc.). Then, you will need:

# foopackage.commands
from blazech.application import Application
from blazech.commands import BaseCommand

def script_entry():
    app = Application('fooapp')
    app.load_commands(globals())
    # could also use
    # import foopackage.altcommands
    # app.load_commands(foopackage.altcommands)
    app.run_cmd()

class BarCommand(BaseCommand):
    name = 'bar'
    help = 'process bar file'

    def create_arguments(self):
        #self.parser is the argparse parser for this sub-command, see
        # argparser docs for usage
        self.parser.add_argument(
            'fpath',
            help = 'path of the file to process',
        )

    def execute(self, args):
        if args.fpath:
            print 'bar file is: %s' % args.fpath

You should then be able to:

$ fooapp -h
$ fooapp bar -h
$ fooapp bar ../my/bar/file.txt

Questions & Comments

Please visit: http://groups.google.com/group/blazelibs

Current Status

Primary use cases work for me, but b/c of time constraints will probably move forward slowly.

The development version is installable with easy_install BlazeCommandHelper==dev.

Changelog

0.2.0 – 2011.04.29

  • feature: added support to be used as a library

  • bug: fixed some setup related bugs

  • bug: fix windows drive calculation

  • bug: reworked tests, all tests are now passing

Project details


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