Browse Source

mmgen-blocks-info: allow range spec of type -<num blocks>+<num blocks>

The MMGen Project 4 years ago
parent
commit
b9f0eb10d5
1 changed files with 11 additions and 4 deletions
  1. 11 4
      mmnode-blocks-info

+ 11 - 4
mmnode-blocks-info

@@ -146,20 +146,24 @@ class BlocksInfo:
 			first = last = c.blockcount
 		else:
 			arg = args[0]
+			from_current = arg[0] == '-'
+			if arg[0] == '-':
+				arg = arg[1:]
 			ps = arg.split('+')
 			if len(ps) == 2 and is_int(ps[1]):
-				if not ps[0]:
+				if not ps[0] and not from_current:
 					last = c.blockcount
 					first = last - int(arg[1:]) + 1
 				elif is_int(ps[0]):
-					first = int(ps[0])
+					first = (c.blockcount - int(ps[0])) if from_current else int(ps[0])
 					last = first + int(ps[1]) - 1
 				else:
 					opts.usage()
 			elif is_int(arg):
-				first = last = int(arg)
+				first = last = (c.blockcount - int(arg)) if from_current else int(arg)
 			else:
 				try:
+					assert not from_current
 					first,last = [int(ep) for ep in arg.split('-')]
 				except:
 					opts.usage()
@@ -301,7 +305,7 @@ opts_data = {
 	],
 	'text': {
 		'desc':    'Display information about a block or range of blocks',
-		'usage':   '[opts] [<block num>]+<N blocks>|<block num>[-<block num>]',
+		'usage':   '[opts] [<block num>|-<N blocks>]+<N blocks>|<block num>[-<block num>]',
 		'options': """
 -h, --help            Print this help message
 --, --longhelp        Print help message for long options (common options)
@@ -335,6 +339,9 @@ EXAMPLES:
     # Display default info for 20 blocks beginning from block 600000
     {p} 600000+20
 
+    # Display default info for 12 blocks beginning 100 blocks from chain tip
+    {p} -- -100+12
+
     # Display info for block 152817, adding miner field:
     {p} --miner-info 152817