[Top][All Lists]
[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")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [myserver-commit] [3010] myserver-get: refactoring and search command added.,
Daniele Perrone <=