From 9ccd4efa292e2a169cf77fa3582122b24d60dc2b Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 7 Nov 2014 06:40:06 -0500 Subject: [PATCH] Make "--" do the right thing in pramble, and document it. --- src | 52 ++++++++++++++++++++++++++++++---------------------- src.asc | 6 +++++- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src b/src index 558b1fb..977cb60 100755 --- a/src +++ b/src @@ -205,6 +205,11 @@ def help_method(*args): "Summarize src commands, or (with argument) show help for a single command." print""" A revision-spec can be a 1-origin revno or a pair of them separated by '-'. +Revisions can be designated by named tags + +The token "--" tells the command-line interpreter that revision-specs +ad subcommands are done - everything after it is a filename, even +if it looks like a subcommand or revision number. src help [command] Displays help for commands. @@ -265,28 +270,31 @@ def preamble(cmd, args): "Common setup code." args = list(args) revspec = None - if args and args[0].isdigit(): - revspec = args.pop(0) - try: - if "-" in revspec: - (start, end) = revspec.split("-") - try: - start = int(start) - except ValueError: - pass - try: - end = int(end) - except ValueError: - pass - else: - try: - start = int(revspec) - except ValueError: - pass - end = start - except ValueError: - croak("malformed revision spec: %s" % revspec) - revspec = (start, end) + if args: + if args[0] == "--": + args.pop(0) + elif args[0].isdigit(): + revspec = args.pop(0) + try: + if "-" in revspec: + (start, end) = revspec.split("-") + try: + start = int(start) + except ValueError: + pass + try: + end = int(end) + except ValueError: + pass + else: + try: + start = int(revspec) + except ValueError: + pass + end = start + except ValueError: + croak("malformed revision spec: %s" % revspec) + revspec = (start, end) if not args: masters = os.listdir(".src") if len(masters) == 1: diff --git a/src.asc b/src.asc index c892d08..f105ed4 100644 --- a/src.asc +++ b/src.asc @@ -29,7 +29,11 @@ an editor instance when you perform a commit. A revision spec is a 1-origin integer N, or a range literal M..N. Revisions can be designated by named tags -src help [command] +The token "--" tells the command-line interpreter that revision-specs +ad subcommands are done - everything after it is a filename, even +if it looks like a subcommand or revision number. + +src help [command]:: Displays help for commands. src init:: -- 2.43.0