Adding a Version Option to Your App¶

Almost every app out there supports a --version option of some sort that provides the end user with version information. This is pretty important to include, so we’ve added an example below.

from import CementApp
from cement.core.controller import CementBaseController

VERSION = '0.9.1'

BANNER = """
My Awesome Application v%s
Copyright (c) 2014 John Doe Enterprises

class MyBaseController(CementBaseController):
    class Meta:
        label = 'base'
        description = 'MyApp Does Amazing Things'
        arguments = [
            (['-v', '--version'], dict(action='version', version=BANNER)),

class MyApp(CementApp):
    class Meta:
        label = 'myapp'
        base_controller = MyBaseController

with MyApp() as app:

This looks like:

$ python --help
usage: (sub-commands ...) [options ...] {arguments ...}

MyApp Does Amazing Things

optional arguments:
  -h, --help     show this help message and exit
  --debug        toggle debug output
  --quiet        suppress all output
  -v, --version  show program's version number and exit

$ python --version
My Awesome Application v0.9.1
Copyright (c) 2014 John Doe Enterprises