summaryrefslogtreecommitdiffstats
path: root/doc/examples/inst.py
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples/inst.py')
-rw-r--r--doc/examples/inst.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/doc/examples/inst.py b/doc/examples/inst.py
new file mode 100644
index 0000000..892b43b
--- /dev/null
+++ b/doc/examples/inst.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+# example how to deal with the depcache
+
+import sys
+
+import apt
+from apt.progress import InstallProgress
+
+
+class TextInstallProgress(InstallProgress):
+ def __init__(self):
+ apt.progress.InstallProgress.__init__(self)
+ self.last = 0.0
+
+ def updateInterface(self):
+ InstallProgress.updateInterface(self)
+ if self.last >= self.percent:
+ return
+ sys.stdout.write(f"\r[{self.percent}] {self.status}\n")
+ sys.stdout.flush()
+ self.last = self.percent
+
+ def conffile(self, current, new):
+ print(f"conffile prompt: {current} {new}")
+
+ def error(self, errorstr):
+ print("got dpkg error: '%s'" % errorstr)
+
+
+cache = apt.Cache(apt.progress.OpTextProgress())
+
+fprogress = apt.progress.TextFetchProgress()
+iprogress = TextInstallProgress()
+
+pkg = cache["3dchess"]
+
+# install or remove, the importend thing is to keep us busy :)
+if pkg.is_installed:
+ print("Going to delete %s" % pkg.name)
+ pkg.mark_delete()
+else:
+ print("Going to install %s" % pkg.name)
+ pkg.mark_install()
+res = cache.commit(fprogress, iprogress)
+print(res)
+
+sys.exit(0)