From klik-devel Sun Apr 27 01:46:49 2008 From: codesite-noreply () google ! com Date: Sun, 27 Apr 2008 01:46:49 +0000 To: klik-devel Subject: [klik-devel] [klikclient commit] r1471 - in Message-Id: <0016e644d030ffeb07044bd0f8e6 () google ! com> X-MARC-Message: https://marc.info/?l=klik-devel&m=120926084804810 Author: KillerKiwi2005 Date: Sat Apr 26 18:45:53 2008 New Revision: 1471 Modified: trunk/client/trunk/klikclient/bin/klik trunk/client/trunk/klikclient/lib/klik/recipe.py Log: - Better prompt error message - Fix in recipe for __readEnviroment (missing self) Modified: trunk/client/trunk/klikclient/bin/klik ============================================================================== --- trunk/client/trunk/klikclient/bin/klik (original) +++ trunk/client/trunk/klikclient/bin/klik Sat Apr 26 18:45:53 2008 @@ -140,6 +140,8 @@ if __name__ == "__main__": + + first_arg = None result = False @@ -147,13 +149,16 @@ # Check not root xdg = XdgUtils() - - #if xdg.is_root(): - # print "Sorry, you should not run klik as root (or sudo)" - # exit(1) + if xdg.is_root(): + print "Sorry, you should not run klik as root (or sudo)" + exit(1) klik = KlikBase(sys.path[0]) + # Verbose... else it apears like we are spewing error messages all the time + if klik.settings.debug: + print "WARNING: Debug mode is on!" + sanity = klik.is_system_sane() """if False in sanity: print "System is not sane, aborting" @@ -249,7 +254,12 @@ elif first_arg == "prompt": cmg = KlikCmg( klik, args[0] ) - result, text = cmg.execute(args[1:], force_prompt=True) + if cmg.is_valid_cmg(): + result, text = cmg.execute(args[1:], force_prompt=True) + else: + + print "Error : No file found" + raise Exception("main.prompt") elif first_arg == "get": result, text = klik.download(args) Modified: trunk/client/trunk/klikclient/lib/klik/recipe.py ============================================================================== --- trunk/client/trunk/klikclient/lib/klik/recipe.py (original) +++ trunk/client/trunk/klikclient/lib/klik/recipe.py Sat Apr 26 18:45:53 2008 @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# klik2 +# klik2 # Copyright (C) 2008 Jason Taylor - killerkiwi2005@gmail.com # # This program is free software; you can redistribute it and/or modify @@ -32,10 +32,10 @@ size = None src = None file_type = None - + class Symlink (object): pathFrom = None - pathTo = None + pathTo = None class Enviroment (object): @@ -48,7 +48,7 @@ href = None md5 = None name = None - + def __init__(self, href, name = None, md5 = None): self.href = href self.name = name @@ -67,29 +67,29 @@ if p.startswith( base_path ): return p return None - + class KlikTustredActionUnzip(KlikTustredAction): def __init__(self, fileName): self.fileName = fileName - + def get_command(self, archivepath): - - + + fn = self.clean_path(archivepath, self.fileName) - - - + + + if fn.lower().endswith(".tgz") or fn.lower().endswith(".tar.gz"): return ["tar", "zxvf", fn] - + if fn.lower().endswith(".tbz") or fn.lower().endswith(".tar.bz2") or fn.lower().endswith(".tbz2"): return ["bunzip2", "-c", fn] - + if fn.lower().endswith(".zip"): return ["unzip", fn] - + return None @@ -97,24 +97,24 @@ def __init__(self, source, destination): self.source = source self.destination = destination - + def get_command(self, basepath): pf = self.clean_path( basepath, self.source ) pt = self.clean_path( basepath, self.destination ) if pf != None and pt != None and os.path.exists(pf): return ["mv", pf, pt] return None - + class KlikTustredActionDelete(KlikTustredAction): def __init__(self, path): self.path = path - + def get_command(self, basepath): p = self.clean_path( basepath, self.path) if p != None and os.path.exists(p): return ["rm", p] return None - + class KlikTustredActionSymLink(KlikTustredAction): def __init__(self, source, destination): self.source = source @@ -125,14 +125,14 @@ if pf != None: return ["ln", "-sf", self.destination, pf] return None - + class KlikTustredActionInformation(KlikTustredAction): def __init__(self, text): self.text = text - + class KlikScript(object): def __init__(self, script): - self.script = script + self.script = script class KlikTustredActionCollection(object): def __init__(self): @@ -142,7 +142,7 @@ self.information = [] self.script = [] self.unzip = [] - + class KlikRecipe (object): def __init__(self, recipe_path=None): @@ -157,14 +157,14 @@ self.description = "" self.summary = "" self.command = None - + self.icon = None self.packages = [] self.original_xml = None self.size = None self.source_uri = None - + self.preflight = [] self.postflight = [] self.prerun = [] @@ -174,9 +174,9 @@ self.needs = [] self.debtags = { } - + self.enviroment = [] - + if recipe_path: if type(recipe_path) is file: self.load_from_string( recipe_path.read() ) @@ -193,19 +193,19 @@ try: stream, sigs = check_string( self.original_xml ) assert sigs - + for sig in sigs: signed_by = str(sig) if isinstance(sig, ValidSig) == True : - signed_by = sig.get_details()[1][9] # get the name of the person who signed + signed_by = sig.get_details()[1][9] # get the name of the person who signed flag = True break except Exception, e: print "recipe.is_trusted() - Error:", e return [flag, signed_by] - - + + def load_from_file(self, path): try: f = open(path, "r") @@ -213,21 +213,21 @@ f.close() self.load_from_string(xml) except Exception, e: - raise SafeException("Error recipe could not be loaded does not appear to be valid XML (%s)" % e) - + raise SafeException("Error recipe could not be loaded does not appear to be valid XML (%s)" % e) + def load_from_string(self, xml): try: self.original_xml = xml document = parseString(xml) - + except Exception, e: raise SafeException("Error recipe could not be loaded does not appear to be valid XML (%s)" % e) - - + + self.__load_from_document(document) - - + + def print_details(self): print "Application details" print "===================" @@ -239,39 +239,39 @@ print "Trusted Contact: %s" % text else: print "Trust Level: UNTRUSTED - This recipe has not been signed by someone you trust" - + print "Summary: %s" % self.summary print "Description: %s" % self.description - - + + def __load_from_document(self, document): - + interface = self.__getFirstNode(document,"interface") error = self.__getFirstNode(document,"error") - + if interface != None: self.source_uri = interface.getAttribute("uri") - + name = self.__getFirstNode(interface, "name") - + if name != None and name.firstChild != None: self.name = self.__getNodeValue(name, "") - + # default command is app name self.command = self.name - + description = self.__getFirstNode(interface,"description") if description != None: self.description = self.__getNodeValue( description, "") - + summary = self.__getFirstNode(interface,"summary") if summary != None: self.summary = self.__getNodeValue( summary, "") - + needs = self.__getFirstNode(interface,"needs") if needs != None: self.needs = self.__getNodeValue( needs, "").split("+") - + icon = self.__getFirstNode(interface,"icon") if icon != None: self.icon = icon.getAttribute("href") @@ -279,7 +279,7 @@ debtags = self.__getFirstNode(interface,"debtags") if debtags != None: nodes = interface.getElementsByTagName("tag") - + if len(nodes) > 0: self.require_terminal = False for node in nodes: @@ -290,14 +290,14 @@ value = value.split("::") self.debtags[value[0]] = value[1] - + group = self.__getFirstNode(interface,"group") if group != None: if group.attributes["main"] != None: self.command = group.getAttribute("main") implementation = self.__getFirstNode(group,"implementation") - + if implementation != None: self.version = implementation.getAttribute("version") if implementation.attributes["downloadsize"] != None: @@ -305,84 +305,84 @@ self.size = implementation.getAttribute("downloadsize") except Exception, e: print "recipe.__load_from_document() - Error:", e - + for node in implementation.getElementsByTagName("environment"): try: - __readEnviroment( node ) + self.__readEnviroment( node ) except Exception, e: print "recipe.__load_from_document() - Error:", e - - + + for node in implementation.getElementsByTagName("archive"): try: ki = KlikIngredientPackage(node.getAttribute( "href" ), node.getAttribute( "name" ), node.getAttribute( "md5" )) self.packages.append( ki ) except Exception, e: print "recipe.__load_from_document() - Error:", e - - + + preflight = self.__getFirstNode(implementation, "klik-preflight") self.__readActions( preflight, self.preflight) - + postflight = self.__getFirstNode(implementation, "klik-postflight") self.__readActions( postflight, self.postflight) - + prerun = self.__getFirstNode(implementation, "klik-prerun") self.__readActions( prerun, self.prerun) - + postrun = self.__getFirstNode(implementation, "klik-postrun") self.__readActions( postrun, self.postrun) - return + return elif error != None: # hack to trim quotes... why does this happen? raise SafeException( self.__getNodeValue( error, "") ) return - + raise Exception("XML document does not appear to be a valid recipe") - - + + def __readEnviroment( self, node ): name = node.getAttribute( "name" ) - + if name != None and name != "": env = Enviroment() env.name = name env.insert = node.getAttribute( "insert" ) env.mode = node.getAttribute( "mode" ) env.default = node.getAttribute( "default" ) - - self.enviroment.append(env) + + self.enviroment.append(env) def __readActions(self, parent_node, action_collection): if parent_node != None: - + for node in parent_node.childNodes: - + if node.nodeType == 1: if node.tagName == "move": source = node.getAttribute("source") destination = node.getAttribute("destination") if source != None and destination != None: action_collection.append( KlikTustredActionMove(source, destination) ) - + if node.tagName == "delete": path = node.getAttribute("path") if path != None: action_collection.append( KlikTustredActionDelete(path) ) - + if node.tagName == "symlink": source = node.getAttribute("source") destination = node.getAttribute("destination") if source != None and destination != None: action_collection.append( KlikTustredActionSymLink(source, destination) ) - + if node.tagName == "information": text = self. __getNodeValue( node, "" ) if text != "": action_collection.append( KlikTustredActionInformation(text) ) - + if node.tagName == "script": content = self. __getNodeValue( node, "" ) if content != "": @@ -399,7 +399,7 @@ if len(nodes) > 0: return nodes[0] return None - + def __getNodeValue(self, element, defaultValue): node = element.firstChild if node != None: @@ -407,7 +407,4 @@ return node.nextSibling.nodeValue else: return node.nodeValue - return defaultValue - - - + return defaultValue _______________________________________________ klik-devel mailing list klik-devel@kde.org https://mail.kde.org/mailman/listinfo/klik-devel