Kaydet (Commit) a0504777 authored tarafından Faik Uygur's avatar Faik Uygur

* this is not a place to play with "python's signal module", api.finalize was

  a critical and it now protects itself.

* also some fixes to call Cancel anytime
üst 206883ad
...@@ -12,14 +12,16 @@ ...@@ -12,14 +12,16 @@
# #
import string import string
import signal
import pisi.api try:
import pisi.installdb import pisi.api
import pisi.packagedb import pisi.installdb
import pisi.lockeddbshelve import pisi.packagedb
import pisi.ui import pisi.lockeddbshelve
import pisi.context import pisi.ui
import pisi.context
except KeyboardInterrupt:
fail("System.Manager.cancelled")
class UI(pisi.ui.UI): class UI(pisi.ui.UI):
def error(self, msg): def error(self, msg):
...@@ -70,17 +72,17 @@ def _init_pisi(): ...@@ -70,17 +72,17 @@ def _init_pisi():
ui = UI() ui = UI()
try: try:
pisi.api.init(ui=ui) pisi.api.init(ui=ui)
except KeyboardInterrupt:
cancelled()
except pisi.lockeddbshelve.Error, e: except pisi.lockeddbshelve.Error, e:
notify("System.Manager.error","%s" % str(e)) notify("System.Manager.error","%s" % str(e))
def cancelled(): def cancelled():
signal.signal(signal.SIGINT, signal.SIG_IGN) if pisi.context.initialized:
pisi.api.finalize() pisi.api.finalize()
fail("System.Manager.cancelled") fail("System.Manager.cancelled")
def finished(operation=""): def finished(operation=""):
signal.signal(signal.SIGINT, signal.SIG_IGN)
pisi.api.finalize()
notify("System.Manager.finished", operation) notify("System.Manager.finished", operation)
def installPackage(package=None): def installPackage(package=None):
...@@ -89,7 +91,7 @@ def installPackage(package=None): ...@@ -89,7 +91,7 @@ def installPackage(package=None):
try: try:
package = package.split(",") package = package.split(",")
pisi.api.install(package) pisi.api.install(package)
finished("System.Manager.installPackage") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception,e: except Exception,e:
...@@ -102,7 +104,7 @@ def updatePackage(package=None): ...@@ -102,7 +104,7 @@ def updatePackage(package=None):
try: try:
package = package.split(",") package = package.split(",")
pisi.api.upgrade(package) pisi.api.upgrade(package)
finished("System.Manager.updatePackage") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception,e: except Exception,e:
...@@ -115,7 +117,7 @@ def removePackage(package=None): ...@@ -115,7 +117,7 @@ def removePackage(package=None):
try: try:
package = package.split(",") package = package.split(",")
pisi.api.remove(package) pisi.api.remove(package)
finished("System.Manager.removePackage") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception, e: except Exception, e:
...@@ -128,7 +130,7 @@ def updateRepository(repo=None): ...@@ -128,7 +130,7 @@ def updateRepository(repo=None):
try: try:
notify("System.Manager.updatingRepo","%s" % repo) notify("System.Manager.updatingRepo","%s" % repo)
pisi.api.update_repo(repo) pisi.api.update_repo(repo)
finished("System.Manager.updateRepository") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception, e: except Exception, e:
...@@ -141,7 +143,7 @@ def updateAllRepositories(): ...@@ -141,7 +143,7 @@ def updateAllRepositories():
try: try:
notify("System.Manager.updatingRepo","%s" % repo) notify("System.Manager.updatingRepo","%s" % repo)
pisi.api.update_repo(repo) pisi.api.update_repo(repo)
finished("System.Manager.updateAllRepositories") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception, e: except Exception, e:
...@@ -153,7 +155,7 @@ def addRepository(name=None,uri=None): ...@@ -153,7 +155,7 @@ def addRepository(name=None,uri=None):
if name and uri: if name and uri:
try: try:
pisi.api.add_repo(name,uri) pisi.api.add_repo(name,uri)
finished("System.Manager.addRepository") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception, e: except Exception, e:
...@@ -165,7 +167,7 @@ def removeRepository(repo=None): ...@@ -165,7 +167,7 @@ def removeRepository(repo=None):
if repo: if repo:
try: try:
pisi.api.remove_repo(repo) pisi.api.remove_repo(repo)
finished("System.Manager.removeRepository") pisi.api.finalize()
except KeyboardInterrupt: except KeyboardInterrupt:
cancelled() cancelled()
except Exception, e: except Exception, e:
...@@ -208,4 +210,5 @@ def setRepositories(repos=None): ...@@ -208,4 +210,5 @@ def setRepositories(repos=None):
pisi.api.add_repo(repoList[index],repoList[index+1]) pisi.api.add_repo(repoList[index],repoList[index+1])
index = index + 2 index = index + 2
pisi.api.finalize()
finished("System.Manager.setRepositories") finished("System.Manager.setRepositories")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment