##// END OF EJS Templates
releasenotes: add custom admonitions support for release notes...
Rishabh Madan -
r33572:9a944e90 default
parent child Browse files
Show More
@@ -20,10 +20,12 b' import textwrap'
20 20
21 21 from mercurial.i18n import _
22 22 from mercurial import (
23 config,
23 24 error,
24 25 minirst,
25 26 registrar,
26 27 scmutil,
28 util,
27 29 )
28 30
29 31 cmdtable = {}
@@ -111,9 +113,15 b' class parsedreleasenotes(object):'
111 113 self.addnontitleditem(section, paragraphs)
112 114
113 115 class releasenotessections(object):
114 def __init__(self, ui):
115 # TODO support defining custom sections from config.
116 self._sections = list(DEFAULT_SECTIONS)
116 def __init__(self, ui, repo=None):
117 if repo:
118 sections = util.sortdict(DEFAULT_SECTIONS)
119 custom_sections = getcustomadmonitions(repo)
120 if custom_sections:
121 sections.update(custom_sections)
122 self._sections = list(sections.iteritems())
123 else:
124 self._sections = list(DEFAULT_SECTIONS)
117 125
118 126 def __iter__(self):
119 127 return iter(self._sections)
@@ -128,6 +136,22 b' class releasenotessections(object):'
128 136
129 137 return None
130 138
139 def getcustomadmonitions(repo):
140 ctx = repo['.']
141 p = config.config()
142
143 def read(f, sections=None, remap=None):
144 if f in ctx:
145 data = ctx[f].data()
146 p.parse(f, data, sections, remap, read)
147 else:
148 raise error.Abort(_(".hgreleasenotes file \'%s\' not found") %
149 repo.pathto(f))
150
151 if '.hgreleasenotes' in ctx:
152 read('.hgreleasenotes')
153 return p['sections']
154
131 155 def parsenotesfromrevisions(repo, directives, revs):
132 156 notes = parsedreleasenotes()
133 157
@@ -396,7 +420,7 b' def releasenotes(ui, repo, file_, rev=No'
396 420 that file. A particular use case for this is to tweak the wording of a
397 421 release note after it has been added to the release notes file.
398 422 """
399 sections = releasenotessections(ui)
423 sections = releasenotessections(ui, repo)
400 424
401 425 revs = scmutil.revrange(repo, [rev or 'not public()'])
402 426 incoming = parsenotesfromrevisions(repo, sections.names(), revs)
@@ -416,7 +440,7 b' def releasenotes(ui, repo, file_, rev=No'
416 440 fh.write(serializenotes(sections, notes))
417 441
418 442 @command('debugparsereleasenotes', norepo=True)
419 def debugparsereleasenotes(ui, path):
443 def debugparsereleasenotes(ui, path, repo=None):
420 444 """parse release notes and print resulting data structure"""
421 445 if path == '-':
422 446 text = sys.stdin.read()
@@ -424,7 +448,7 b' def debugparsereleasenotes(ui, path):'
424 448 with open(path, 'rb') as fh:
425 449 text = fh.read()
426 450
427 sections = releasenotessections(ui)
451 sections = releasenotessections(ui, repo)
428 452
429 453 notes = parsereleasenotesfile(sections, text)
430 454
@@ -255,6 +255,8 b' Now add bullet points to sections having'
255 255
256 256 * Short summary of fix 3
257 257
258 $ cd ..
259
258 260 Multiple 'Other Changes' sub-sections for every section
259 261
260 262 $ hg init multiple-otherchanges
@@ -324,3 +326,53 b" Multiple 'Other Changes' sub-sections fo"
324 326
325 327 * Short summary of fix 2
326 328
329 $ cd ..
330
331 Using custom sections in notes
332
333 $ hg init custom-section
334 $ cd custom-section
335 $ cat >> .hgreleasenotes << EOF
336 > [sections]
337 > testsection=Name of Section
338 > EOF
339
340 $ touch a
341 $ hg -q commit -A -l - << EOF
342 > commit 1
343 >
344 > .. testsection::
345 >
346 > First paragraph under this admonition.
347 > EOF
348
349 $ hg releasenotes -r . $TESTTMP/relnotes-custom-section
350 $ cat $TESTTMP/relnotes-custom-section
351 Name of Section
352 ===============
353
354 * First paragraph under this admonition.
355
356 Overriding default sections (For eg. by default feature = New Features)
357
358 $ cat >> .hgreleasenotes << EOF
359 > [sections]
360 > feature=Feature Additions
361 > EOF
362
363 $ touch b
364 $ hg -q commit -A -l - << EOF
365 > commit 2
366 >
367 > .. feature::
368 >
369 > Adds a new feature.
370 > EOF
371
372 $ hg releasenotes -r . $TESTTMP/relnotes-override-section
373 $ cat $TESTTMP/relnotes-override-section
374 Feature Additions
375 =================
376
377 * Adds a new feature.
378
General Comments 0
You need to be logged in to leave comments. Login now