myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [3010] myserver-get: refactoring and search command ad


From: Daniele Perrone
Subject: [myserver-commit] [3010] myserver-get: refactoring and search command added.
Date: Sun, 22 Feb 2009 23:14:08 +0000

Revision: 3010
          http://svn.sv.gnu.org/viewvc/?view=rev&root=myserver&revision=3010
Author:   dperrone
Date:     2009-02-22 23:14:07 +0000 (Sun, 22 Feb 2009)

Log Message:
-----------
myserver-get: refactoring and search command added.

Modified Paths:
--------------
    trunk/misc/myserver-get/myserver-get.py
    trunk/misc/myserver-get/myserverGetLib/config.py
    trunk/misc/myserver-get/myserverGetLib/general.py
    trunk/misc/myserver-get/myserverGetLib/local.py
    trunk/misc/myserver-get/myserverGetLib/remoteSvn.py

Added Paths:
-----------
    trunk/misc/myserver-get/myserverGetLib/console.py

Modified: trunk/misc/myserver-get/myserver-get.py
===================================================================
--- trunk/misc/myserver-get/myserver-get.py     2009-02-22 18:52:27 UTC (rev 
3009)
+++ trunk/misc/myserver-get/myserver-get.py     2009-02-22 23:14:07 UTC (rev 
3010)
@@ -1,34 +1,38 @@
 from myserverGetLib.general import MyServerGet
 import sys
 import getopt
+import myserverGetLib.config
 
+
 def usage(arg):
     print "usage: myserver-get update "    
         
 def main(argv):
-    myserverGet = MyServerGet()
-    argument = "" 
+    myserverGet = MyServerGet() 
     command = ""                        
     
-    commands = {"":usage, "update":myserverGet.update}
+    commands = {"":usage, "update":myserverGet.update, 
"search":myserverGet.search}
         
     try:                                
-        opts, args = getopt.getopt(argv, "h", ["help"]) 
+        opts, args = getopt.getopt(argv, "hv", ["help","verbose"]) 
     except getopt.GetoptError:           
         usage()                          
         sys.exit(2)
     for opt, arg in opts:                
         if opt in ("-h", "--help"):      
             usage("")                     
-            sys.exit()                  
+            sys.exit()
+        elif opt in ("-v", "--verbose"):      
+            myserverGetLib.config.VERBOSE = True   
     
+    arguments = []
     for arg in args:
-        if arg in ("update"):
+        if arg in ("update","search"):
             command = arg
         else:
-            argument = arg
+            arguments.append(arg)
     
-    commands[command](argument)
+    commands[command](arguments)
 
 if __name__ == "__main__":
     main(sys.argv[1:])
\ No newline at end of file

Modified: trunk/misc/myserver-get/myserverGetLib/config.py
===================================================================
--- trunk/misc/myserver-get/myserverGetLib/config.py    2009-02-22 18:52:27 UTC 
(rev 3009)
+++ trunk/misc/myserver-get/myserverGetLib/config.py    2009-02-22 23:14:07 UTC 
(rev 3010)
@@ -9,8 +9,8 @@
 
 PLUGIN_LIST_SUFFIX = "-plugin-list.xml"
 
+VERBOSE = False
 
-
 class ConfigLoader:
     def __init__(self, configFile):
         self.__configFile = configFile
\ No newline at end of file

Added: trunk/misc/myserver-get/myserverGetLib/console.py
===================================================================
--- trunk/misc/myserver-get/myserverGetLib/console.py                           
(rev 0)
+++ trunk/misc/myserver-get/myserverGetLib/console.py   2009-02-22 23:14:07 UTC 
(rev 3010)
@@ -0,0 +1,8 @@
+import sys
+
+def write(arg):
+    sys.stdout.write(arg)
+    sys.stdout.flush()
+    
+def writeln(arg):
+    write(arg + "\n")
\ No newline at end of file

Modified: trunk/misc/myserver-get/myserverGetLib/general.py
===================================================================
--- trunk/misc/myserver-get/myserverGetLib/general.py   2009-02-22 18:52:27 UTC 
(rev 3009)
+++ trunk/misc/myserver-get/myserverGetLib/general.py   2009-02-22 23:14:07 UTC 
(rev 3010)
@@ -3,6 +3,7 @@
 import config
 import remote
 import remoteSvn
+import console
 
 class MyServerGet:
     def __init__(self, repositoryFile = config.REP_LIST_FILE, listDir = 
config.PLUGIN_LIST_FILES_DIR):
@@ -11,6 +12,7 @@
         self.__repManager = remote.RepositoryManager()
         self.__repManager.addSupportedRepository("svn",remoteSvn.RepositorySvn)
         self.__list = []
+        self.loadRepositoryList()
     
     def loadRepositoryList(self):
         list = xml.dom.minidom.parse(self.__rep)
@@ -18,8 +20,28 @@
         self.__list = 
[local.ListManager(repXml.firstChild.data,self.__listDir) for repXml in 
repXmlList]
         
     def update(self, arg):
-        self.loadRepositoryList()
         for list in self.__list:
             rep = self.__repManager.getRepository(list.repository)
             rep = rep(list.repository)
-            rep.synchronizeListWithRepository(list)
\ No newline at end of file
+            rep.synchronizeListWithRepository(list)
+    
+  
+    def __search(self,arg):
+        import string
+        results = []
+        for list in self.__list:
+            plugins = list.getPluginsList()
+            for plugin in plugins:
+                if string.find(plugin["name"][0]["value"],arg)!=-1:
+                    results.append(plugin)
+        return results
+        
+    def search(self,arg):
+        arg = " ".join(arg)     
+        if config.VERBOSE:
+            results = ["- " + plugin["name"][0]["value"] + " (compatible with 
GNU MyServer version ["+plugin.getMyServerMinVersion() + "," + 
plugin.getMyServerMinVersion() + "])\n    " + plugin["description"][0]["value"] 
+ "\n    Dependences: " + " ".join(dep["value"] + "[" + dep["min-version"] + 
"," + dep["max-version"] + "]"  for dep in plugin["depends"]) for plugin in 
self.__search(arg)]
+        else: 
+            results = [plugin["name"][0]["value"] + " - " + 
plugin["description"][0]["value"] for plugin in self.__search(arg)]
+        console.writeln("\n".join(results))
+
+            
\ No newline at end of file

Modified: trunk/misc/myserver-get/myserverGetLib/local.py
===================================================================
--- trunk/misc/myserver-get/myserverGetLib/local.py     2009-02-22 18:52:27 UTC 
(rev 3009)
+++ trunk/misc/myserver-get/myserverGetLib/local.py     2009-02-22 23:14:07 UTC 
(rev 3010)
@@ -1,6 +1,7 @@
 import xml.dom.minidom
 import error
 import config
+import string
 
 class PluginInfoElement:
     def __init__(self,name,element, document):
@@ -9,13 +10,15 @@
         self.document = document
     
     def __getitem__(self, key):
+        key = string.lower(key)
         if key == "value":
-            return self.__element.firstChild.data
+            return string.replace(self.element.firstChild.data,'\n','')
         att = self.element.attributes[key]
         if att!=None:
             return att.value
     
     def __setitem__(self, key, item):
+        key = string.lower(key)
         if key == "value":
             self.document.createTextNode(item)
             oldChild = self.__element.firstChild
@@ -29,11 +32,13 @@
         self.__manager = manager
     
     def __getitem__(self, key):
+        key = string.upper(key)
         elementList = self.__xmlElement.getElementsByTagName(key)
         
-        return [PluginInfoElement(key,element.childNodes[0].data, element, 
self.__manager) for element in elementList]
+        return [PluginInfoElement(key, element, self.__manager) for element in 
elementList]
 
     def __setitem__(self, key, item):
+        key = string.upper(key)
         elementList = self.__xmlElement.getElementsByTagName(key) 
         for element in elementList:
             self.__xmlElement.removeChild(element)
@@ -43,10 +48,10 @@
             element.document = self.__manager.listDOM
     
     def getMyServerMinVersion(self):
-        return self.__mxlElement.getAttribute("min-version")
+        return self.__xmlElement.getAttribute("min-version")
     
     def getMyServerMaxVersion(self):
-        return self.__mxlElement.getAttribute("max-version")
+        return self.__xmlElement.getAttribute("max-version")
     
     def finalize(self):
         self.__manager.synchronizeListWithFileSystem()
@@ -130,7 +135,7 @@
         
         return [PluginInfo(plugin,self) for plugin in plugins]
     
-    
+
     def getRevision(self):
         pluginsList = self.listDOM.getElementsByTagName("PLUGINS")
         plugins = pluginsList[0]

Modified: trunk/misc/myserver-get/myserverGetLib/remoteSvn.py
===================================================================
--- trunk/misc/myserver-get/myserverGetLib/remoteSvn.py 2009-02-22 18:52:27 UTC 
(rev 3009)
+++ trunk/misc/myserver-get/myserverGetLib/remoteSvn.py 2009-02-22 23:14:07 UTC 
(rev 3010)
@@ -3,7 +3,7 @@
 import error
 import xml.dom.minidom
 from remote import Repository
-import sys
+import console
 
 class RepositorySvn(Repository):
     def __init__ (self,url):
@@ -17,34 +17,27 @@
         return plugins[1:]
     
     def synchronizeListWithRepository(self, list):
-        sys.stdout.write("update: "+ list.repository + '\n')
-        sys.stdout.write("loading ")
-        sys.stdout.flush()
+        console.write("update: "+ list.repository + '\n')
+        console.write("loading ")
         localRevision = int(list.getRevision())
         info = self.client.info2(self.url, recurse=False)
-        sys.stdout.write(". ")
-        sys.stdout.flush()
+        console.write(". ")
         remoteRevision = int(info[0][1]["rev"].number)
         if localRevision == remoteRevision:
-            sys.stdout.write("local list already updated.\n")
-            sys.stdout.flush()
+            console.write("local list already updated.\n")
         if localRevision > remoteRevision:
             raise error.FatalError("Local plugins list corrupted!!")
         
         if localRevision < remoteRevision:
             list.resetToEmptyListFile(`remoteRevision`)
-            sys.stdout.write(". ")
-            sys.stdout.flush()
+            console.write(". ")
             plugins = self.__getPluginsList()
-            sys.stdout.write(". ")
-            sys.stdout.flush()
+            console.write(". ")
             for plugin in plugins:
                 url = self.url + "/src/" + plugin + "/plugin.xml"
                 pluginXml =  xml.dom.minidom.parseString(self.client.cat(url))
-                sys.stdout.write(". ")
-                sys.stdout.flush()
+                console.write(". ")
                 element = pluginXml.getElementsByTagName("PLUGIN")
                 pluginInfo = list.addPluginWithXml(element[0])
             list.synchronizeListWithFileSystem()
-            sys.stdout.write("DONE.\n")
-            sys.stdout.flush()
+            console.write("DONE.\n")






reply via email to

[Prev in Thread] Current Thread [Next in Thread]