X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/7a6022a72e1729a029d2356f6425bb8b8bcf2454..16f9d918460fb645b3e64c65437fda2161abd93c:/lib/python/Components/Ipkg.py diff --git a/lib/python/Components/Ipkg.py b/lib/python/Components/Ipkg.py index df700d6b..eac26428 100644 --- a/lib/python/Components/Ipkg.py +++ b/lib/python/Components/Ipkg.py @@ -1,6 +1,6 @@ from enigma import eConsoleAppContainer -class Ipkg: +class IpkgComponent: EVENT_INSTALL = 0 EVENT_DOWNLOAD = 1 EVENT_INFLATING = 2 @@ -10,6 +10,7 @@ class Ipkg: EVENT_LISTITEM = 9 EVENT_DONE = 10 EVENT_ERROR = 11 + EVENT_MODIFIED = 12 CMD_INSTALL = 0 CMD_LIST = 1 @@ -35,25 +36,24 @@ class Ipkg: print "executing", self.ipkg, cmd self.cmd.execute(self.ipkg + " " + cmd) - def cmdFetchList(self, installed_only = False): - self.fetchedList = [] - if installed_only: - self.runCmd("list_installed") - else: - self.runCmd("list") - self.setCurrentCommand(self.CMD_LIST) - - def cmdUpgrade(self, test_only = False): - append = "" - if test_only: - append = " -test" - self.runCmd("upgrade" + append) - self.setCurrentCommand(self.CMD_UPGRADE) - - def cmdUpdate(self): - self.runCmd("update") - self.setCurrentCommand(self.CMD_UPDATE) - + def startCmd(self, cmd, args = None): + if cmd == self.CMD_UPDATE: + self.runCmd("update") + elif cmd == self.CMD_UPGRADE: + append = "" + if args["test_only"]: + append = " -test" + self.runCmd("upgrade" + append) + elif cmd == self.CMD_LIST: + self.fetchedList = [] + if args['installed_only']: + self.runCmd("list_installed") + else: + self.runCmd("list") + elif cmd == self.CMD_INSTALL: + self.runCmd("install " + args['package']) + self.setCurrentCommand(cmd) + def cmdFinished(self, retval): self.callCallbacks(self.EVENT_DONE) @@ -96,6 +96,9 @@ class Ipkg: self.callCallbacks(self.EVENT_ERROR, None) elif data.find('ipkg_download: ERROR:') == 0: self.callCallbacks(self.EVENT_ERROR, None) + elif data.find(' Configuration file') == 0: + self.callCallbacks(self.EVENT_MODIFIED, data.split(' \'', 1)[1][:-1]) + def callCallbacks(self, event, param = None): for callback in self.callbackList: callback(event, param) @@ -111,3 +114,9 @@ class Ipkg: def isRunning(self): return self.cmd.running() + + def write(self, what): + if what: + # We except unterminated commands + what += "\n" + self.cmd.write(what, len(what))