]>
git.saurik.com Git - apt.git/blob - cmdline/apt-mark
3 from optparse
import OptionParser
11 print "Error importing apt_pkg, is python-apt installed?"
14 actions
= { "markauto" : 1,
18 def show_automatic(filename
):
19 if not os
.path
.exists(STATE_FILE
):
22 tagfile
= apt_pkg
.ParseTagFile(open(STATE_FILE
))
24 pkgname
= tagfile
.Section
.get("Package")
25 autoInst
= tagfile
.Section
.get("Auto-Installed")
28 print "\n".join(sorted(auto
))
31 def mark_unmark_automatic(filename
, action
, pkgs
):
32 " mark or unmark automatic flag"
34 if os
.path
.exists(STATE_FILE
):
36 tagfile
= apt_pkg
.ParseTagFile(open(STATE_FILE
))
37 outfile
= open(STATE_FILE
+".tmp","w")
39 print "%s, are you root?" % (msg
)
42 pkgname
= tagfile
.Section
.get("Package")
43 autoInst
= tagfile
.Section
.get("Auto-Installed")
46 print "changing %s to %s" % (pkgname
,action
)
47 newsec
= apt_pkg
.RewriteSection(tagfile
.Section
,
49 [ ("Auto-Installed",str(action
)) ]
51 outfile
.write(newsec
+"\n")
53 outfile
.write(str(tagfile
.Section
)+"\n")
54 # all done, rename the tmpfile
55 os
.chmod(outfile
.name
, 0644)
56 os
.rename(outfile
.name
, STATE_FILE
)
57 os
.chmod(STATE_FILE
, 0644)
60 if __name__
== "__main__":
64 parser
= OptionParser()
65 parser
.usage
= "%prog [options] {markauto|unmarkauto} packages..."
66 parser
.add_option("-f", "--file", action
="store", type="string",
68 help="read/write a different file")
69 parser
.add_option("-v", "--verbose",
70 action
="store_true", dest
="verbose", default
=False,
71 help="print verbose status messages to stdout")
72 (options
, args
) = parser
.parse_args()
75 if not options
.filename
:
76 STATE_FILE
= apt_pkg
.Config
.FindDir("Dir::State") + "extended_states"
78 STATE_FILE
=options
.filename
80 if args
[0] == "showauto":
81 show_automatic(STATE_FILE
)
84 if args
[0] not in actions
.keys():
85 parser
.error("first argument must be 'markauto', 'unmarkauto' or 'showauto'")
87 action
= actions
[args
[0]]
88 mark_unmark_automatic(STATE_FILE
, action
, pkgs
)