cmd3 Package

cmd3 Package

shell Module

This project is about developing a dynamic CMD class based on cmd.CMD. We assume the following directory structure:

./shell.py
./cyberaide/dynamic_cmd.py
./plugins/foo.py 
./plugins/bar.py 
./plugins/activate.py 

We have provides examples of the classes in this document

foo and bar contain some classes that include he usual do_ methods. It also includes an activate method that is called wih the acivation module, so you can control its behavior upon startup.

To specify the plugins please use:

plugins = ["foo", "bar","activate"]

Now you can set a name for your class:

name = "CmCLI"

The rest is pretty simple:

(cmd, plugin_objects) = DynamicCmd(name, plugins)
cmd.activate(plugin_objects)
cmd.cmdloop()

The activate method is not called automatically as to give more flexibility during startup.

Here are the sample classes:

class bar:

    def activate_bar(self):
        print "... activate bar"

    def do_that(self, arg):
        print "THAT", arg


class foo:

    def do_this(self, arg):
        print "THIS", arg
        self.activate_status()  

    def activate_foo(self):
        print "... activate foo"

class activate:

    active = False

    def do_on(self, arg):
        self.active = True
        self.activate_status()

    def do_off(self, arg):
        self.active = False
        self.activate_status()

    def activate_status(self):
        print "Active:", self.active

    def activate(self, plugins):
        d = dir(self)
        result = []
        for key in d:
            if key.startswith("activate_"):
                result.append(key)
        print result
        for key in result:
            print "> %s" % key.replace("_"," ")
            exec("self.%s()" % key)
cmd3.shell.main()