Skip to main content

Class BaseCommand

A base class for handling nestable command lines.

This class provides the basic parse and dispatch mechanisms for command lines. To implement a command line one instantiates a subclass of BaseCommand:

class MyCommand(BaseCommand):
  GETOPT_SPEC = 'ab:c'
...
the_cmd = MyCommand()

Running a command is done by:

the_cmd.run(argv)

The subclass is customised by overriding the following methods:

  • apply_defaults(options): prepare the initial state of options before any command line options are applied
  • apply_opts(options,opts): apply the opts to options. opts is an option value mapping as returned by getopot.getopt.
  • cmd_subcmd(argv,options): if the command line options are followed by an argument whose value is subcmd, then method cmd_subcmd(argv,options) will be called where argv contains the command line arguments after subcmd.
  • main(argv,options): if there are no command line aguments after the options or the first argument does not have a corresponding cmd_subcmd method then method main(argv,options) will be called where argv contains the command line arguments.
  • run_context(argv,options,cmd): a context manager to provide setup or teardown actions to occur before and after the command implementation respectively. If the implementation is a cmd_subcmd method then this is called with cmd=subcmd; if the implementation is main then this is called with cmd=None.

To aid recursive use it is intended that all the per command state is contained in the options object and therefore that in typical use all of apply_opts, cmd_subcmd, mainandrun_contextshould be static methods making no reference toself`.

Editorial: why not arparse? Primarily because when incorrectly invoked an argparse command line prints the help/usage messgae and aborts the whole programme with SystemExit.

Method BaseCommand.__init__(self, getopt_spec=None)

Initialise the BaseCommand.

Parameters:

  • getopt_spec: optional getopt.getopt compatible option specifier. The default comes from the class' .GETOPT_SPEC attribute.

Function docmd(dofunc)

Decorator for Cmd subclass methods to supply some basic quality of service.

This decorator:

  • wraps the function call in a cs.pfx.Pfx for context
  • intercepts getopt.GetoptErrors, issues a warning and runs self.do_help with the method name, then returns None
  • intercepts other Exceptions, issues an exception log message and returns None

The intended use is to decorate cmd.Cmd do_* methods:

from cmd import Cmd
class MyCmd(Cmd):
  @docmd
  def do_something(...):
    ... do something ...

Download files

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

Source Distribution

cs.cmdutils-20190619.tar.gz (4.9 kB view details)

Uploaded Source

File details

Details for the file cs.cmdutils-20190619.tar.gz.

File metadata

  • Download URL: cs.cmdutils-20190619.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for cs.cmdutils-20190619.tar.gz
Algorithm Hash digest
SHA256 5217cfe769a2ed67a3482453587f6e7af9b6206218040e8f8bc05a9c8a52c422
MD5 26472cb47bf238d811293ad312a392c3
BLAKE2b-256 05855356f1808dc1baf4e4e9edf64f02ed485926e3a44573313329b281623ced

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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