mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-11-23 23:10:57 +07:00
systemd-analyze: use argparse instead of getopt
Makes the output way nicer with shorter code. Also brings systemd-analyze behaviour more in line with other systemd-programs. Argparse is in Python since 2.6, and is available as a package for previous versions, if someone is stuck with very old Python.
This commit is contained in:
parent
c94f4b8b53
commit
0c0271841a
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import getopt, sys, os
|
||||
import sys, os
|
||||
import argparse
|
||||
from gi.repository import Gio
|
||||
try:
|
||||
import cairo
|
||||
@ -75,20 +76,6 @@ def draw_text(context, x, y, text, size = 12, r = 0, g = 0, b = 0, vcenter = 0.5
|
||||
|
||||
context.restore()
|
||||
|
||||
def usage():
|
||||
sys.stdout.write("""systemd-analyze [--user] time
|
||||
systemd-analyze [--user] blame
|
||||
systemd-analyze [--user] plot
|
||||
|
||||
Process systemd profiling information
|
||||
|
||||
-h --help Show this help
|
||||
""")
|
||||
|
||||
def help():
|
||||
usage()
|
||||
sys.exit()
|
||||
|
||||
def time():
|
||||
|
||||
initrd_time, start_time, finish_time = acquire_start_time()
|
||||
@ -279,34 +266,29 @@ def plot():
|
||||
|
||||
surface.finish()
|
||||
|
||||
def unknown_verb():
|
||||
sys.stderr.write("Unknown verb '%s'.\n" % args[0])
|
||||
usage()
|
||||
sys.exit(1)
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
description='Process systemd profiling information',
|
||||
epilog='''\
|
||||
time - print time spent in the kernel before reaching userspace
|
||||
blame - print list of running units ordered by time to init
|
||||
plot - output SVG graphic showing service initialization
|
||||
''')
|
||||
|
||||
bus = Gio.BusType.SYSTEM
|
||||
parser.add_argument('action', choices=('time', 'blame', 'plot'),
|
||||
default='time', nargs='?',
|
||||
help='action to perform (default: time)')
|
||||
parser.add_argument('--user', action='store_true',
|
||||
help='use the session bus')
|
||||
|
||||
try:
|
||||
opts, args = getopt.gnu_getopt(sys.argv[1:], "h", ["help", "user"])
|
||||
except getopt.GetoptError as err:
|
||||
sys.stdout.write(str(err) + "\n")
|
||||
usage()
|
||||
sys.exit(2)
|
||||
for o, a in opts:
|
||||
if o in ("-h", "--help"):
|
||||
help()
|
||||
elif o == '--user':
|
||||
bus = Gio.BusType.SESSION
|
||||
else:
|
||||
assert False, "unhandled option"
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.user:
|
||||
bus = Gio.BusType.SESSION
|
||||
else:
|
||||
bus = Gio.BusType.SYSTEM
|
||||
|
||||
verb = {'time' : time,
|
||||
'blame': blame,
|
||||
'plot' : plot,
|
||||
'help' : help,
|
||||
}
|
||||
|
||||
if len(args) == 0:
|
||||
time()
|
||||
else:
|
||||
verb.get(args[0], unknown_verb)()
|
||||
verb.get(args.action)()
|
||||
|
Loading…
Reference in New Issue
Block a user