Skip to main content

Moke transforms a Python module into a command line script. Every function can become a sub-command, with options inferred from the argument list and the optional doc string.

A command line application that greets exactly two persons. (put the following into a file called mokefile.py:

from moke import task, log

@task
def greet(who, shout=False, times=1):
    """
    Sends greetings from moke.

     - who(str2) two persons to greet
     - shout(switch) triggers CAPS

    """
    greetings = ("Hello %s and %s!" % (who[0], who[1])) * times
    if shout:
        greetings = greetings.upper()
    print greetings
    log("greeted: %s and %s" % (who[0], who[1]), INFO)

if __name__ == "main":
    task()

Execute the mokefile by calling moke:

moke greet --shout -times 2 Mary Kate

this returns:

2011-09-30 14:12:52,815 moke (version 1.0.0)
2011-09-30 14:12:52,815 cwd: "/home/.../moke/test/scripts"
2011-09-30 14:12:52,815 mokefile: "/home/.../moke/test/scripts/mokefile.py"
2011-09-30 14:12:52,815 task: greet
2011-09-30 14:12:52,815 params: ('who', ['Mary', 'Kate']) ('shout', True) ('times', 2)
HELLO MARY AND KATE!
HELLO MARY AND KATE!

If you forgot what your mokefile.py does, just ask for help:

moke --help

usage: mokefile.py [-h] [-ls LS] [-ll {info,warn,error}] [-lf {tab}]
  {greet} ...

positional arguments:
  {greet}
    greet               Sends greetings from moke.

optional arguments:
  -h, --help            show this help message and exit
  -ls LS                (file_a) [default: <stderr>] logging stream
  -ll {info,warn,error}
                        (str) [default: info] logging level
  -lf {tab}             (str) [default: tab] logging format

Sub-command specific help is also generated:

moke greet --help

usage: mokefile.py greet [-h] [--shout] [-times TIMES] who who

positional arguments:
  who           (str) two persons to greet

optional arguments:
  -h, --help    show this help message and exit
  --shout       (switch) triggers CAPS
  -times TIMES  (int) [default: 1]

Now it’s time to start your own Mokefile:

moke new [filename]

Which creates a skeleton file for you:

$ moke new Mokefile
moke: *** Created /...path.../Mokefile
moke: *** Running 'moke Mokefile --help'

Have fun!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moke-1.2.0.tar.gz (204.8 kB view details)

Uploaded Source

File details

Details for the file moke-1.2.0.tar.gz.

File metadata

  • Download URL: moke-1.2.0.tar.gz
  • Upload date:
  • Size: 204.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.9

File hashes

Hashes for moke-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9956367ecc8e0eef4c87a01c178620e1f4f1eeb32e9369f899caef6caca790fa
MD5 5fa83114acfc1cf59c2f25c76aace577
BLAKE2b-256 b5bb9114c8206d3b805fbe11065045e8bb18b2822d484c76537dd2b1eb33f836

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 Sentry Error logging StatusPage Status page