Commit d382ba27 authored by Marcello Golfieri's avatar Marcello Golfieri
Browse files

documenting commands is now inline, better menu checks, fixed a bug with usage

parent eb90e790
Loading
Loading
Loading
Loading
+22 −19
Original line number Diff line number Diff line
@@ -73,56 +73,53 @@ class MainMenu(object):

    def usage(self, banner=False):
        if banner:
            print(
                """######################################
            print("""######################################
Welcome to Stanford Workgroup CLI tool
######################################
"""
            )
        print(
            """
Commands are:
  workgroup <workgroup>
     to select a working workgroup
  workgroup_full <workgroup>
     to select a working workgroup and load it with stem-owners (slower)
  ls
     to list members
  tree
     to list members recursively

"""
        )
""")
        print("""Commands are:""")
        commands = [x for x in self.__dir__() if x.startswith('cmd_')] 
        # import IPython; IPython.embed()
        for c in commands:
            print(getattr(self, c).__doc__)

    def cmd_tree(self):
        "tree                              to list members recursively"
        print_workgroup("WORKGROUP", self.manager.workgroup(self.workgroup.name))

    def cmd_ls(self):
        """ls                                to list members"""
        print_workgroup(
            "WORKGROUP", self.manager.workgroup(self.workgroup.name), maxdepth=1
        )

    def cmd_workgroup(self, workgroup_name):
        """workgroup <workgroup>             to select a working workgroup"""
        logger.debug("loading workgroup {}...".format(workgroup_name))
        self.workgroup = self.manager.workgroup(workgroup_name, fetch_owners=False)
        logger.debug("workgroup loaded: {}".format(self.workgroup))

    def cmd_workgroup_full(self, workgroup_name):
        """workgroup_full <workgroup>        to select a working workgroup and load it with stem-owners"""
        logger.debug("loading workgroup in full {}...".format(workgroup_name))
        self.workgroup = self.manager.workgroup(workgroup_name, fetch_owners=True)
        logger.debug("workgroup fully loaded: {}".format(self.workgroup))

    def cmd_add(self, member_name):
        """add <sunet>                       to select a working workgroup"""
        self.workgroup.add_member(member_name)

    def cmd_remove(self, member_name):
        """remove <sunet>                    to select a working workgroup"""
        self.workgroup.remove_member(member_name)

    def cmd_reload(self):
        """reload                            to reload the workgroup fresh from server"""
        self.manager.clear()
        self.workgroup = self.manager.workgroup(self.workgroup.name)

    def cmd_exit(self):
        """exit                              to exit the CLI and return to shell"""
        sys.exit(0)

    def selector(self, argument):
@@ -158,11 +155,17 @@ Commands are:
            logger.debug("args: {}".format(args))
            try:
                selection = self.selector(choice)
                if not selection:
                    continue
                if choice in ["add", "remove", "reload", "ls", "tree"] and not self.workgroup:
                    print("Need to load a workgroup first")
                    self.usage()
                    continue
                cmd = selection[0]
                args_needed = selection[1]
                if args_needed != (len(args)):
                    print("Wrong number of args")
                    usage()
                    self.usage()
                    continue
                if args_needed > 0:
                    getattr(self, cmd)(*args)