Skip to main content

Simple command line commands through decorators

Project description

Commandify

Allows simple creation of Python command line utilities through decorating functions. Builds on the argparse module in the standard library. Optionally uses the argcomplete module to provide command line tab-completion for bash/zsh.

Installation

pip install commandify

Running example and usage

Once commandify has been installed, it can be run with:

commandify_examples --help

commandify_examples code:

#!/usr/bin/env python
# Only required if you want to use argcomplete:
# PYTHON_ARGCOMPLETE_OK
'''Examples of a simple set of functions that use commandify
    usage::

        commandify_examples --help
        commandify_examples <command> --help
        commandify_examples --main-arg=22 <command>
        commandify_examples -m=22 <command>
        commandify_examples cmd_no_args

'''
from commandify import commandify, command, main_command


@main_command(main_arg={'flag': '-m'})
def main(main_arg=345):
    '''Example of how to use commandify
    Main command, called before any other command
    Can be used to set any global variables before any other commands executed.
    usage::

        commandify_examples --help
        commandify_examples --main-arg=22 cmd_no_args
        commandify_examples -m=22 cmd_no_args
        commandify_examples cmd_no_args

    '''
    print(type(main_arg))
    print("Main command: {0}".format(main_arg))


@command
def cmd_no_args():
    '''Simplest command
    usage::

        commandify_examples cmd_no_args

    '''
    print('cmd_no_args called')


@command
def cmd1(name):
    '''Simple command with argument
    usage::

        commandify_examples cmd1 --name=a1
        commandify_examples cmd1 --name a3
        commandify_examples cmd1 --name 'a4'

    '''
    print('cmd1 running')
    print(name)


@command(username={'flag': '-n'})
def cmd2(username, userid):
    '''Command with 2 args and a short flag set for name
    usage::

        commandify_examples cmd2 --username=steve --userid=55
        commandify_examples cmd2 -n=sarah --userid=56

    '''
    print('{0}: {1}'.format(userid, username))


@command(some_arg={'default': 377})
def cmd3(some_arg, arg_with_default='arg_default'):
    '''Command with defaults set in two ways
    first through decorator and second through function arguments.
    usage::

        commandify_examples cmd3
        commandify_examples cmd3 --arg-with-default=default_overridden

    '''
    # Type of some_arg will be int:
    print(type(some_arg))
    print(some_arg, arg_with_default)


@command
def cmd4(some_arg=False):
    '''Command with False bool default
    usage::

        commandify_examples cmd4
        commandify_examples cmd4 --some-arg

    '''
    # Type of some_arg will be bool:
    print(type(some_arg))
    # If it is called specifying --some-arg, it will be True.
    print(some_arg)


@command
def cmd5(some_arg=True):
    '''Command with True bool default
    Command line argument gets turned into negative to handle this.
    usage::

        commandify_examples cmd5
        commandify_examples cmd5 --not-some-arg

    '''
    # Type of some_arg will be bool:
    print(type(some_arg))
    # If it is called without specifying --not-some-arg, it will be True.
    print(some_arg)


@command
def cmd6():
    print('cmd6 called')


if __name__ == '__main__':
    try:
        import argcomplete
        commandify(suppress_warnings=['default_true'], use_argcomplete=True)
    except ImportError:
        commandify(suppress_warnings=['default_true'])

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

commandify-0.0.4.7.tar.gz (138.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

commandify-0.0.4.7-py2-none-any.whl (11.2 kB view details)

Uploaded Python 2

File details

Details for the file commandify-0.0.4.7.tar.gz.

File metadata

  • Download URL: commandify-0.0.4.7.tar.gz
  • Upload date:
  • Size: 138.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for commandify-0.0.4.7.tar.gz
Algorithm Hash digest
SHA256 61d712ed4c5f3e5882669dbe6c1d10d57028f3a4361c9695e9ef192935126c1e
MD5 ac913d6c6cc186809ba13fe720b7f214
BLAKE2b-256 9b282908cca843358c5efc559c42a7cc87b3aba876cda5ac9676370120a05689

See more details on using hashes here.

File details

Details for the file commandify-0.0.4.7-py2-none-any.whl.

File metadata

File hashes

Hashes for commandify-0.0.4.7-py2-none-any.whl
Algorithm Hash digest
SHA256 a1bf909165dbb94e4b6b99cdd9306742be0777fd66b8570f2a910cc1ea45dd56
MD5 722ef6646c47e7e58eca610db04e7f10
BLAKE2b-256 747c842fb019eae92bbbf90dd51fc677142eca1aadc1c1e435ad120e09ad154d

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