class CommandsContainer(object): """ CommandsContainer class. """ prefix = "The name is" __arguments__ = [ap_arg('--arguments', help="Class arguments")] __shared_arguments__ = [ ap_arg('name', help="The name"), ap_arg('--prefix', help="string prefix", default='We have')] @arg() def name(self, name, prefix): """ Print the name. """ print prefix, 'name', name @arg() def surname(self, name, prefix): """ Print the surname. """ print prefix, 'surname', name @arg() def nickname(self, name, prefix): """ Print the nickname. """ print prefix, "nickname", name
class Commands(ArgParseInated): """Commands for greets""" # we have the same params for all the commands so we can share them __shared_arguments__ = [ ap_arg("who", help="The who", nargs="?", default="World!"), ap_arg("-l", "--lang", default="en", help="Language") ] def __preinator__(self): # Actually we are not sure we have a configuration so is better # add some default. cfg = { 'lang': 'en', 'words_en': { 'greet': 'Greetings', 'hello': 'Hello', 'bye': 'Goodbye', } } cfg.update(self.cfg) self.cfg = cfg def get_language(self, word, lang=None): """Get right word for configured language""" lang = lang or self.cfg.get('lang', 'en') # let's retrieve the word from configuration dict. try: return self.cfg['words_' + lang][word] except StandardError: return 'Do not know how to "{}" in "{}"'.format(word, lang) @arg() def greet(self, who, lang): """Greets""" # we added the add_output param so we use the writeln to greet on the # right output. writeln(self.get_language('greet', lang), who) @arg() def hallo(self, who, lang): """Hallo""" writeln(self.get_language('hello', lang), who) @arg() def bye(self, who, lang): """Bye""" writeln(self.get_language('bye', lang), who)
class HttpRequest(ArgParseInated): """Silly Http retrieving.""" __shared_arguments__ = [ap_arg('url', help="url to retrieve")] @arg() def get(self, url): """Retrieve an url.""" self.writeln("Getting data from url", url) response = self.session.get(url) if response.status_code == 200: self.writeln(response.text) else: self.writeln(str(response.status_code), response.reason) @arg('var', help="Posta data in NAME=VALUE form", nargs="*") def post(self, url, var): """Post data to an url.""" data = {b[0]: b[1] for b in [a.split("=") for a in var]} self.writeln("Sending data to url", url) response = self.session.post(url, data=data) if response.status_code == 200: self.writeln(response.text) else: self.writeln(str(response.status_code), response.reason)
class Admin(ArgParseInated): """Administrations commands.""" # Our command name. __cmd_name__ = "admin" __shared_arguments__ = [ ap_arg("-p", "--passwd", help="User parssword"), ap_arg("username", help="username"), ] @arg() def useradd(self, username, passwd): """Fake Create new user command.""" self.writeln("Creating user", username, '...') try: # ... create user code. pass except UserExistsError: return 1, "User {} already exists".format(username) if passwd: # ... set password code. pass return 0, "User {} created".format(username) @arg() def userdelete(self, username): """Fake Delete user command.""" self.writeln("Deleting user", username, '...') try: # ... delete user code. pass except UserNotExistsError: return 1, "User {} do not exists".format(username) return 0, "User {} deleted".format(username) @arg() @cmd_auth("yesiwantit") def deleteallusers(self): """Fake delete all users command""" self.writeln("Deleting ALL users...") # ... delete all users code return 0, "All users deleted"
class Greetings(object): """ Greeting command. """ __cmd_name__ = 'greet' __arguments__ = [ap_arg( '-p', '--prefix', help='greeting prefix', default="We say")] __shared_arguments__ = [ap_arg('name', help='the name')] @arg() def ciao(self, name, prefix): """ Say ciao. """ print prefix, 'Ciao', 'to', name @arg() def hello(self, name, prefix): """ Say hello. """ print prefix, 'hello', 'to', name
Greeting command. """ __cmd_name__ = 'greet' __arguments__ = [ap_arg( '-p', '--prefix', help='greeting prefix', default="We say")] __shared_arguments__ = [ap_arg('name', help='the name')] @arg() def ciao(self, name, prefix): """ Say ciao. """ print prefix, 'Ciao', 'to', name @arg() def hello(self, name, prefix): """ Say hello. """ print prefix, 'hello', 'to', name if __name__ == "__main__": inator = argparseinator.ArgParseInator( description="Silly script", args=[ ap_arg('--address', help='Person address', default='Home'), ] ) inator.check_command()