summaryrefslogtreecommitdiff
path: root/cmdline/apt-mark
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2009-06-03 12:05:20 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2009-06-03 12:05:20 +0200
commita9b5e24b6bb392c4de88d965c33120d4a7fcb4f6 (patch)
tree3df7ffb6e2b7e84acd2c743fd081829162bcbd4b /cmdline/apt-mark
parent526334a0e19626c0a77e029ba0ac546cc20f6756 (diff)
* cmdline/apt-mark:
- add "showauto" option to show automatically installed packages
Diffstat (limited to 'cmdline/apt-mark')
-rwxr-xr-xcmdline/apt-mark72
1 files changed, 45 insertions, 27 deletions
diff --git a/cmdline/apt-mark b/cmdline/apt-mark
index f6e749eb5..226d2079b 100755
--- a/cmdline/apt-mark
+++ b/cmdline/apt-mark
@@ -14,34 +14,21 @@ 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.filename
+def show_automatic(filename):
+ if not os.path.exists(STATE_FILE):
+ return
+ auto = set()
+ tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
+ while tagfile.Step():
+ pkgname = tagfile.Section.get("Package")
+ autoInst = tagfile.Section.get("Auto-Installed")
+ if int(autoInst):
+ auto.add(pkgname)
+ print "\n".join(sorted(auto))
+
+def mark_unmark_automatic(filename, action, pkgs):
+ " mark or unmark automatic flag"
# open the statefile
if os.path.exists(STATE_FILE):
tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
@@ -63,3 +50,34 @@ if __name__ == "__main__":
os.chmod(outfile.name, 0644)
os.rename(outfile.name, STATE_FILE)
os.chmod(STATE_FILE, 0644)
+
+
+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()
+
+ # get the state-file
+ if not options.filename:
+ STATE_FILE = apt_pkg.Config.FindDir("Dir::State") + "extended_states"
+ else:
+ STATE_FILE=options.filename
+
+ if args[0] == "showauto":
+ show_automatic(STATE_FILE)
+ else:
+ # get pkgs to change
+ if args[0] not in actions.keys():
+ parser.error("first argument must be 'markauto', 'unmarkauto' or 'showauto'")
+ pkgs = args[1:]
+ action = actions[args[0]]
+ mark_unmark_automatic(STATE_FILE, action, pkgs)