The question may be not clear enough to get.
Let me clear in details. I'm using python cmd library to implement my own CLI framework and when hit the enter button without typing any command it executes last command. This it not one I wanna do.
mycli~: cmd --args
executes command
execution stops
mycli~:[hit enter button]
Then it will execute again cmd --args. However I just want to go down with new line.
def emptyline(self):
pass
Will do just fine!
After a long googling I could not find a valuable advise to prevent this. I decide to go inside the cmd library and override the method.
I figured it out that cmd execute precmd, onecmd and postcmd methods sequentially. I traced the code and see that onecmd is the main one which exetues the given line. It checks parses then check the line. If line is empty it calls the emptyline method and it returns the last command which is a global variable called as lastcmd. I override the emptyline method then my issue got fixed.
Here is the method I've written override.
def emptyline(self):
"""Called when an empty line is entered in response to the prompt.
If this method is not overridden, it repeats the last nonempty
command entered.
"""
if self.lastcmd:
return self.onecmd(self.lastcmd)
And here is mine:
def emptyline(self):
"""Called when an empty line is entered in response to the prompt.
If this method is not overridden, it repeats the last nonempty
command entered.
"""
if self.lastcmd:
self.lastcmd = ""
return self.onecmd('\n')
It might not be a big deal but keep that in mind just in case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With