Commit 7b677df7 authored by Sébastien Luttringer's avatar Sébastien Luttringer
Browse files

Handle new tag system

parent 498ae6f2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -67,6 +67,11 @@ class Cli(object):
        self.printer.debug("Loaded aliases: %d"%len(self.aliases))
        # load tagdisplay
        self.tagdisplay.load(self.settings.get("tagdisplay", ""))
        # export tags to server
        self.rpc.call('tags_register', name='version', ttl=None)
        self.rpc.call('tags_register', name='os', ttl=None)
        self.rpc.call('tags_register', name='uname', ttl=None)
        self.rpc.call('tags_register', name='uptime', ttl=3)
        # parsing
        self._parse_loop()
        # save history
+12 −27
Original line number Diff line number Diff line
@@ -21,49 +21,34 @@ class CliHandler(RpcHandler):
        '''Call back function on server disconnect'''
        Printer().warn("Disconnected from server!")

    def get_tags(self, complete=None, partial=None):
    def get_tags(self, tags):
        '''Return a dict of local tags'''
        # prepare work
        taglist = [ x[8:] for x in dir(self) if x.startswith("get_tag_") ]
        ctag = set(taglist) if complete is None else set(complete)
        ptag = set(taglist) if partial is None else set(partial)
        d = dict()
        # remove unknown tags
        ctag.intersection_update(taglist)
        ptag.intersection_update(taglist)
        # build partial tags
        for t in ptag:
            d[t] = { "ttl": getattr(self, "get_tag_%s"%t).ttl }
        # build complete tags
        for t in ctag:
            method = "get_tag_%s"%t
            d[t] = { "value": getattr(self, method)(), "ttl": getattr(self, method).ttl}
        # answer
        return d

    def get_tag_version(self):
        ans = {}
        for tag in tags:
            method = "_get_tag_%s" % tag
            if hasattr(self, method):
                ans[tag] = getattr(self, method)()
        return ans

    def _get_tag_version(self):
        '''Return tag version'''
        return cccli.version
    get_tag_version.ttl = -1

    def get_tag_os(self):
    def _get_tag_os(self):
        '''Return Operating system tag'''
        return platform.system().lower()
    get_tag_os.ttl = -1

    def get_tag_uname(self):
    def _get_tag_uname(self):
        '''Return uname output'''
        try:
            p = subprocess.Popen(["uname", "-a"], close_fds=True, shell=False, stdout=subprocess.PIPE)
            return  p.stdout.read().rstrip("\n")
        except Exception:
            return ""
    get_tag_uname.ttl = -1

    def get_tag_uptime(self):
    def _get_tag_uptime(self):
        '''Return uptime output'''
        try:
            return int(float(open("/proc/uptime", "r").readline().split()[0]))
        except Exception:
            return ""
    get_tag_uptime.ttl = 3