Skip to main content

Easy utils for creating a script runner

Project description

Overview

clue_script is used for defining subcommands with a special focus on web-style apps. The functionality is inspired by the Django manage.py script.

Requirements

  • Python 2.6 or 2.7 (not tested with Python 3.x)

runserver support (optional)

  • Paste

  • argparse (if deploying on Python < 2.7)

Usage

A simple example to add a command that prints “hello world”:

from clue_script import command, Commander

@command
def helloworld():
    print 'hello world'

if __name__ == '__main__':
    Commander.scan(globals()).run()

To do a more complicated command you can use something similar to Python 2.7’s argparse (also available on 2.6).

import argparse
from clue_script import command, Commander

@command
def foo(*argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('-x', help='simple test',
                        default='yes', metavar='x')
    ns = parser.parse_args(argv)
    # do something

if __name__ == '__main__':
    Commander.scan(globals()).run()

Provided Commands

There are currently two provided command factories.

  1. make_reloadable_server_command (see above note about requirements for runserver)

  2. make_syncdb_command

A typical web app could use these commands as follows:

if __name__ == '__main__':
    def createtables(session):
        models.Base.metadata.create_all(session.bind)

    settings = init_settings()
    commander = script.Commander([script.make_reloadable_server_command(make_app),
                                  script.make_syncdb_command(settings['spitter.db_session_factory'],
                                                             createtables)])
    commander.scan(globals())
    commander.run()

Running the script with no args will yield something similar to:

Commands:
    runserver     Run a reloadable development web server.
    syncdb        Update the database.

Credits

  • Developed and maintained by Rocky Burt <rocky AT serverzen DOT com>

Changes

0.2.4 (Mar-3-2011)

  • Fixed problem where the non-reloader portion would shut down the app if code was changed

0.2.3 (Feb-20-2011)

  • Renamed from Khufu-Script to clue_script

0.2.2 (Feb-16-2011)

  • Updated project urls

0.2.1 (Jan-26-2011)

  • Fixed scan() method to return commander instance

0.2 (Jan-3-2011)

  • first release

Supported by

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