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.

Files for clue_script, version 0.3.1
Filename, size & hash File type Python version Upload date
clue_script-0.3.1.tar.gz (7.5 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page