summaryrefslogtreecommitdiff
path: root/cmdline/apt-mark
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2007-06-09 00:19:51 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2007-06-09 00:19:51 +0200
commit408a4726131e9db26ff868623a5d216a26c45a50 (patch)
treea8b470ee8fd8d22e74e1245edb2b36400b9226dd /cmdline/apt-mark
parent1979e742ad5e2a0b6e547fbe3f4c4066b5a9bd2e (diff)
parent484dbb814fd2b787b2206ffe9504798dfd73ae6c (diff)
* huge merge to bring the apt debian-sid and ubuntu branches as close
as possible to apt--mvo again
Diffstat (limited to 'cmdline/apt-mark')
-rwxr-xr-xcmdline/apt-mark64
1 files changed, 64 insertions, 0 deletions
diff --git a/cmdline/apt-mark b/cmdline/apt-mark
new file mode 100755
index 000000000..dadc01366
--- /dev/null
+++ b/cmdline/apt-mark
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+
+from optparse import OptionParser
+
+try:
+ import apt_pkg
+except ImportError:
+ print "Error importing apt_pkg, is python-apt installed?"
+
+import sys
+import os.path
+
+actions = { "markauto" : 1,
+ "unmarkauto": 0
+ }
+
+if __name__ == "__main__":
+ apt_pkg.init()
+
+ # option parsing
+ parser = OptionParser()
+ parser.usage = "%prog [options] {markauto|unmarkauto} packages..."
+ parser.add_option("-f", "--file", action="store", type="string",
+ dest="filename",
+ help="read/write a different file")
+ parser.add_option("-v", "--verbose",
+ action="store_true", dest="verbose", default=False,
+ help="print verbose status messages to stdout")
+ (options, args) = parser.parse_args()
+ if len(args) < 2:
+ parser.error("not enough argument")
+
+ # get pkgs to change
+ if args[0] not in actions.keys():
+ parser.error("first argument must be 'markauto' or 'unmarkauto'")
+ pkgs = args[1:]
+ action = actions[args[0]]
+
+ # get the state-file
+ if not options.filename:
+ STATE_FILE = apt_pkg.Config.FindDir("Dir::State") + "extended_states"
+ else:
+ STATE_FILE=options.state_file
+
+ # open the statefile
+ if os.path.exists(STATE_FILE):
+ tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
+ outfile = open(STATE_FILE+".tmp","w")
+ while tagfile.Step():
+ pkgname = tagfile.Section.get("Package")
+ autoInst = tagfile.Section.get("Auto-Installed")
+ if pkgname in pkgs:
+ if options.verbose:
+ print "changing %s to %s" % (pkgname,action)
+ newsec = apt_pkg.RewriteSection(tagfile.Section,
+ [],
+ [ ("Auto-Installed",str(action)) ]
+ )
+ outfile.write(newsec+"\n")
+ else:
+ outfile.write(str(tagfile.Section)+"\n")
+ # all done, rename the tmpfile
+ os.chmod(outfile.name, 0644)
+ os.rename(outfile.name, STATE_FILE)