summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-03 18:26:28 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-13 02:23:02 +0100
commit0c0271841ab45595f71528c50bcf1904d4b841d5 (patch)
treeffd3775b9406302447abed4599fdef33bd45b501
parentc94f4b8b53aad25ba364bb79fc53c5b79de28088 (diff)
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.
-rwxr-xr-xsrc/analyze/systemd-analyze60
1 files changed, 21 insertions, 39 deletions
diff --git a/src/analyze/systemd-analyze b/src/analyze/systemd-analyze
index 87a83ddb81..88699d6728 100755
--- a/src/analyze/systemd-analyze
+++ b/src/analyze/systemd-analyze
@@ -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)()