@@ -141,7 +141,7 @@ def multi_version_git_tags(args: argparse.Namespace):
141
141
tags = sorted (tags , key = lambda t : t [1 ], reverse = True )
142
142
tags .insert (0 , (default_branch , (999999 , 999999 , 999999 , 999999 )))
143
143
144
- if 0 :
144
+ if args . squash_patches :
145
145
# squash patch/rev differences
146
146
seen_versions = set ()
147
147
for i in range (len (tags )):
@@ -152,14 +152,42 @@ def multi_version_git_tags(args: argparse.Namespace):
152
152
seen_versions .add (normalized_version )
153
153
tags = [t for t in tags if t ]
154
154
155
+ if args .min_version is not None :
156
+ args .min_version = re .sub (r'[ \t]+' , '' , str (args .min_version ).strip ())
157
+ m = re .fullmatch (r'^[vV]?([0-9]+)(?:[.]([0-9]+)(?:[.]([0-9]+)(?:[.]([0-9]+))?)?)?$' , args .min_version )
158
+ if m :
159
+ min_ver = (
160
+ (int (m [1 ] if m [1 ] else 0 )),
161
+ (int (m [2 ] if m [2 ] else 0 )),
162
+ (int (m [3 ] if m [3 ] else 0 )),
163
+ (int (m [4 ] if m [4 ] else 0 )),
164
+ )
165
+ tags = [t for t in tags if t [1 ] >= min_ver ]
166
+ else :
167
+ try :
168
+ max_vers = int (args .min_version )
169
+ assert max_vers < 0
170
+ tags = tags [:- max_vers ]
171
+ except :
172
+ raise Error (rf'min-version: expected semver tag or negative integer' )
173
+
155
174
tags = [t for t , _ in tags ]
156
175
print ("Versions:" )
157
176
print ("\n " .join ([rf' { t } ' for t in tags ]))
158
177
159
178
worker_args = [
160
179
arg
161
180
for arg in sys .argv [1 :]
162
- if arg not in (r'--bug-report' , r'--git-tags' , r'--worker' , r'--versions-in-navbar' , r'--verbose' , r'-v' )
181
+ if arg
182
+ not in (
183
+ r'--bug-report' ,
184
+ r'--git-tags' ,
185
+ r'--worker' ,
186
+ r'--versions-in-navbar' ,
187
+ r'--verbose' ,
188
+ r'-v' ,
189
+ r'--higest-patch-only' ,
190
+ )
163
191
]
164
192
for key in (r'--output-dir' , r'--temp-dir' , r'--copy-config-to' ):
165
193
pos = - 1
@@ -430,7 +458,7 @@ def main(invoker=True):
430
458
type = str ,
431
459
default = None ,
432
460
metavar = r'<regex>' ,
433
- help = r"pattern matching HTML file names to exclude from post-processing (default: none )" ,
461
+ help = r"pattern matching HTML file names to exclude from post-processing (default: %(default)s )" ,
434
462
)
435
463
args .add_argument (
436
464
r'--theme' , #
@@ -456,6 +484,19 @@ def main(invoker=True):
456
484
args .add_argument (
457
485
r'--git-tags' , action = r'store_true' , help = r"add git-tag-based semver version switcher to the generated HTML" #
458
486
)
487
+ make_boolean_optional_arg (
488
+ args ,
489
+ r'squash-patches' ,
490
+ default = True ,
491
+ help = 'when using --git-tags and two version tags differ by a patch number,\n generate docs for the highest one only (default: %(default)s)' ,
492
+ )
493
+ args .add_argument (
494
+ r'--min-version' ,
495
+ type = str ,
496
+ default = None ,
497
+ metavar = '<version>' ,
498
+ help = 'sets the minimum version number to emit when using --git-tags,\n or a negative integer to mean "the last N versions". (default: %(default)s)' ,
499
+ )
459
500
460
501
# --------------------------------------------------------------
461
502
# hidden/developer-only/deprecated/diagnostic arguments
0 commit comments