diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2007-06-09 00:19:51 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2007-06-09 00:19:51 +0200 |
commit | 408a4726131e9db26ff868623a5d216a26c45a50 (patch) | |
tree | a8b470ee8fd8d22e74e1245edb2b36400b9226dd /cmdline/apt-mark | |
parent | 1979e742ad5e2a0b6e547fbe3f4c4066b5a9bd2e (diff) | |
parent | 484dbb814fd2b787b2206ffe9504798dfd73ae6c (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-x | cmdline/apt-mark | 64 |
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) |