Skip to main content

cmd.py from the standard library adapted to use prompt-toolkit instead of readline

Project description

ptkcmd

View API documentation

ptkcmd adapts the built-in cmd.py standard library module to use prompt-toolkit instead of readline

from ptkcmd import PtkCmd, Completion, complete_files

class MyCmd(PtkCmd):
    prompt='MyPtkCmd$ '
    def __init__(self,stdin=None,stdout=None,intro=None,interactive=True,do_complete_cmd=True,default_shell=False,**psession_kwargs):
    	"""
    stdin, stdout, intro are as defined in the standard library cmd.py

    If interactive is True, then the prompt-toolkit prompt() 
	method will be utilized from a PromptSession.
    If interactive is False, then the prompt will be written 
    to stdout and a line read from stdin

    If do_complete_cmd is True, then completion will be performed
	for the initial command of each line against the list of known
    commands.
    If do_complete_cmd is False, no completion will be attempted for 
   the initial command.
    In either case, completion can be attempted for the arguments 
    according to any 'complete_' methods defined.

    If default_shell is False, then receiving a command that does not 
    have a "do_" method will result in writing an error to self.stdout.
    If default_shell is True, then the command will be used as an 
    input to subprocess.run(). The shell input to run() will be 
    False.

    If additional keyword arguments are provided, they will be passed 
    to the PromptSession constructor that is used for prompts.
    The only PromptSession keyword argument not allowed is 'completer'.

	"""
        super().__init__(stdin,stdout,intro,interactive,do_complete_cmd,
	    default_shell,**psession_kwargs)

    def do_mycmd(self,args)
    	"""
	This is a command named 'mycmd'.
	When a command is executed by PtkCmd, the initial line that is 
        entered is split by shlex.split().
	The first item, i.e. the command, is used to determine which 
        "do_" method to call.
	The args input is the list, excluding the command itself.
	All commands will show up when the help command is invoked.

	Typing 'help mycmd' will show the docstring of do_mycmd().

	"""
        self.stdout.write('mycmd args were %s\n' % repr(args))

    def help_mytopic(self):
    	"""
	This is a help topic named 'mytopic'.
	All topics declared in this way will show up when the help command 
        is invoked.

	Typing 'help mytopic' will execute the help function, which 
        typically will write some text to self.stdout
	"""
        self.stdout.write('You called help for mytopic\n')

    def complete_mycmd(self,prev_args,curr_arg,document,complete_event):
    	"""
	This method defines completion rules for the command named 'mycmd'

	prev_args = the arguments prior to the current one being completed
	curr_arg = the current argument being completed. 
            May be an empty string or the start of an argument that
	    from the list of completable arguments.
	document and complete_event are as defined in the prompt-toolkit 
        documentation
	Should yield Completion objects as defined in prompt-toolkit
		Completion(text,start_position)
			text = a suggested completion
			start_position = non-positive number representing
			    how many characters from the cursor to go back
			    and overwrite.

	"""
        yield from complete_files(curr_arg)

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

ptkcmd-0.1.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

ptkcmd-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file ptkcmd-0.1.1.tar.gz.

File metadata

  • Download URL: ptkcmd-0.1.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9

File hashes

Hashes for ptkcmd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cd76d3504c138a7bf87ad0fa1ca77e0228cc7381c2a7878598eb43be761eb348
MD5 ba919f4561706d8210aafa33f8a0f7fa
BLAKE2b-256 09b4b70b79e8f554287049087d3b07e97dc1ae9caf523c3abbd0bf924cb463a1

See more details on using hashes here.

File details

Details for the file ptkcmd-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ptkcmd-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9

File hashes

Hashes for ptkcmd-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a9e6c12acc035e4ff11df58d23c9402d9b6074409c3d26671af58df6e68fce0c
MD5 6d04135fff7745044cb9c5e8e1a0ca71
BLAKE2b-256 caf129ff2ed8d4cce1b9d58d706923738041d971742c9e77eaae353621ef8a25

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page