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.3.1 (Jul-27-2011)

  • Fixed silly bug where print_usage() was being called wrong

0.3 (Jul-10-2011)

  • Added rfoo support for launching a shell to connect with live-running server http://code.google.com/p/rfoo/

  • Improved formatting of command usage

  • Removed mostly useless make_syncdb command

  • Made Commander.commands a little more exposed

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

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

clue_script-0.3.1.tar.gz (7.5 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