Merge pull request #1250 from lethosor/changelog-gen
Add a script to automatically generate both changelogs from a single filedevelop
commit
953673e45d
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,26 @@
|
|||||||
|
.. comment
|
||||||
|
This is the changelog for stable releases. Entries are included from
|
||||||
|
changelog.txt.
|
||||||
|
|
||||||
|
.. _changelog:
|
||||||
|
|
||||||
|
#########
|
||||||
|
Changelog
|
||||||
|
#########
|
||||||
|
|
||||||
|
This file contains changes grouped by the stable release in which they first
|
||||||
|
appeared. See `build-changelog` for more information.
|
||||||
|
|
||||||
|
See `dev-changelog` for a list of changes grouped by development releases.
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:depth: 2
|
||||||
|
|
||||||
|
.. include:: /docs/_auto/news.rst
|
||||||
|
|
||||||
|
|
||||||
|
Older Changelogs
|
||||||
|
================
|
||||||
|
Are kept in a seperate file: `HISTORY`
|
||||||
|
|
||||||
|
.. that's ``docs/history.rst``, if you're reading the raw text.
|
@ -0,0 +1 @@
|
|||||||
|
*.rst
|
@ -0,0 +1,294 @@
|
|||||||
|
=== Scroll down for changes
|
||||||
|
|
||||||
|
===[[[
|
||||||
|
===help
|
||||||
|
|
||||||
|
Entries in docs/NEWS.rst and docs/NEWS-dev.rst are generated from
|
||||||
|
docs/changelog.txt. NEWS.rst groups entries by stable releases, and NEWS-dev.rst
|
||||||
|
groups them by all releases (stable and development). For example, an entry
|
||||||
|
listed under "0.44.05-alpha1" in changelog.txt will be listed under that in
|
||||||
|
NEWS-dev.rst as well, but under "0.44.05-r1" in NEWS.rst (assuming that is the
|
||||||
|
closest stable release after 0.44.05-alpha1). An entry listed under a stable
|
||||||
|
release in changelog.txt will be listed under that release in both NEWS.rst and
|
||||||
|
NEWS-dev.rst.
|
||||||
|
|
||||||
|
changelog.txt uses a syntax similar to RST, with a few special sequences:
|
||||||
|
|
||||||
|
- ``===`` indicates the start of a comment
|
||||||
|
- ``#`` indicates the start of a release name (do not include "DFHack")
|
||||||
|
- ``##`` indicates the start of a section name (this must be listed in ``gen_changelog.py``)
|
||||||
|
- ``-`` indicates the start of a changelog entry. **Note:** an entry currently must be only one line.
|
||||||
|
- ``:`` (colon followed by space) separates the name of a feature from a description of a change to that feature.
|
||||||
|
Changes made to the same feature are grouped if they end up in the same section.
|
||||||
|
- ``:\`` (colon, backslash, space) avoids the above behavior
|
||||||
|
- ``- @`` (the space is optional) indicates the start of an entry that should only be displayed in NEWS-dev.rst.
|
||||||
|
Use this sparingly, e.g. for immediate fixes to one development build in another development build that
|
||||||
|
are not of interest to users of stable builds only.
|
||||||
|
- Three ``[`` characters indicate the start of a block (possibly a comment) that
|
||||||
|
spans multiple lines. Three ``]`` characters indicate the end of such a block.
|
||||||
|
|
||||||
|
===end
|
||||||
|
]]]
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
======== IMPORTANT: rename this, and add a new "future" section, BEFORE ========
|
||||||
|
======== making a new DFHack release! ========
|
||||||
|
================================================================================
|
||||||
|
# Future
|
||||||
|
## Misc Improvements
|
||||||
|
- Reorganized changelogs and improved changelog editing process
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.09-alpha1
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `digtype`: stopped designating non-vein tiles (open space, trees, etc.)
|
||||||
|
- `labormanager`: fixed crash due to dig jobs targeting some unrevealed map blocks
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.08-alpha1
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `fix/dead-units`: fixed a bug that could remove some arriving (not dead) units
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.07-beta1
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
-@ Added symbols for Toady's `0.44.07 Linux test build <http://www.bay12forums.com/smf/index.php?topic=169839.msg7720111#msg7720111>`_ to fix :bug:`10615`
|
||||||
|
-@ ``world_site``: fixed alignment
|
||||||
|
|
||||||
|
## Misc improvements
|
||||||
|
- `modtools/item-trigger`: added the ability to specify inventory mode(s) to trigger on
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.07-alpha1
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- Support for building on Ubuntu 18.04
|
||||||
|
- Fixed some CMake warnings (CMP0022)
|
||||||
|
- `embark-assistant`: fixed detection of reanimating biomes
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- `embark-assistant`:
|
||||||
|
|
||||||
|
- Added search for adamantine
|
||||||
|
- Now supports saving/loading profiles
|
||||||
|
|
||||||
|
- `fillneeds`: added ``-all`` option to apply to all units
|
||||||
|
- `remotefortressreader`: added flows, instruments, tool names, campfires, ocean waves, spiderwebs
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- Several new names in instrument raw structures
|
||||||
|
- ``identity``: identified ``profession``, ``civ``
|
||||||
|
- ``manager_order_template``: fixed last field type
|
||||||
|
- ``viewscreen_createquotast``: fixed layout
|
||||||
|
- ``world.language``: moved ``colors``, ``shapes``, ``patterns`` to ``world.descriptors``
|
||||||
|
- ``world.reactions``, ``world.reaction_categories``:\ moved to new compound, ``world.reactions``. Requires renaming:
|
||||||
|
|
||||||
|
- ``world.reactions`` to ``world.reactions.reactions``
|
||||||
|
- ``world.reaction_categories`` to ``world.reactions.reaction_categories``
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.05-r2
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `devel/export-dt-ini`: fix language_name offsets for DT 39.2+
|
||||||
|
- `devel/inject-raws`: fixed gloves and shoes (old typo causing errors)
|
||||||
|
- `remotefortressreader`: fixed an issue with not all engravings being included
|
||||||
|
- `view-item-info`: fixed an error with some shields
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- `adv-rumors`: added more keywords, including names
|
||||||
|
- `autochop`: can now exclude trees that produce fruit, food, or cookable items
|
||||||
|
- `remotefortressreader`: added plant type support
|
||||||
|
|
||||||
|
## New Plugins
|
||||||
|
- `embark-assistant`: adds more information and features to embark screen
|
||||||
|
|
||||||
|
## New Scripts
|
||||||
|
- `adv-fix-sleepers`: fixes units in adventure mode who refuse to wake up (:bug:`6798`)
|
||||||
|
- `hermit`: blocks caravans, migrants, diplomats (for hermit challenge)
|
||||||
|
|
||||||
|
## New Features
|
||||||
|
- With ``PRINT_MODE:TEXT``, setting the ``DFHACK_HEADLESS`` environment variable will hide DF's display and allow the console to be used normally. (Note that this is intended for testing and is not very useful for actual gameplay.)
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.05-r1
|
||||||
|
|
||||||
|
## New Scripts
|
||||||
|
- `break-dance`: Breaks up a stuck dance activity
|
||||||
|
- `fillneeds`: Use with a unit selected to make them focused and unstressed
|
||||||
|
- `firestarter`: Lights things on fire: items, locations, entire inventories even!
|
||||||
|
- `flashstep`: Teleports adventurer to cursor
|
||||||
|
- `ghostly`: Turns an adventurer into a ghost or back
|
||||||
|
- `questport`: Sends your adventurer to the location of your quest log cursor
|
||||||
|
- `view-unit-reports`: opens the reports screen with combat reports for the selected unit
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `devel/inject-raws`: now recognizes spaces in reaction names
|
||||||
|
- `dig`: added support for designation priorities - fixes issues with designations from ``digv`` and related commands having extremely high priority
|
||||||
|
- `dwarfmonitor`:
|
||||||
|
- fixed display of creatures and poetic/music/dance forms on ``prefs`` screen
|
||||||
|
- added "view unit" option
|
||||||
|
- now exposes the selected unit to other tools
|
||||||
|
|
||||||
|
- `names`: fixed many errors
|
||||||
|
- `quicksave`: fixed an issue where the "Saving..." indicator often wouldn't appear
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- `gui/gm-unit`:
|
||||||
|
- added a profession editor
|
||||||
|
- misc. layout improvements
|
||||||
|
- `remotefortressreader`:
|
||||||
|
- support for moving adventurers
|
||||||
|
- support for vehicles, gem shapes, item volume, art images, item improvements
|
||||||
|
- `binpatch`: now reports errors for empty patch files
|
||||||
|
- `force`: now provides useful help
|
||||||
|
- `full-heal`:
|
||||||
|
- can now select corpses to resurrect
|
||||||
|
- now resets body part temperatures upon resurrection to prevent creatures from freezing/melting again
|
||||||
|
- now resets units' vanish countdown to reverse effects of `exterminate`
|
||||||
|
- `launch`: can now ride creatures
|
||||||
|
- `names`: can now edit names of units
|
||||||
|
|
||||||
|
## Removed
|
||||||
|
- `tweak`: ``kitchen-keys``: :bug:`614` fixed in DF 0.44.04
|
||||||
|
|
||||||
|
## Internals
|
||||||
|
- ``Gui::getAnyUnit()`` supports many more screens/menus
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- New globals: ``soul_next_id``
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.05-alpha1
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- `gui/liquids`: added more keybindings: 0-7 to change liquid level, P/B to cycle backwards
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
-@ ``incident``: re-aligned again to match disassembly
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.04-alpha1
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `devel/inject-raws`: now recognizes spaces in reaction names
|
||||||
|
- `exportlegends`: fixed an error that could occur when exporting empty lists
|
||||||
|
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- ``artifact_record``: fixed layout (changed in 0.44.04)
|
||||||
|
- ``incident``: fixed layout (changed in 0.44.01) - note that many fields have moved
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.03-beta1
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- `autolabor`, `autohauler`, `labormanager`: added support for "put item on display" jobs and building/destroying display furniture
|
||||||
|
- `gui/gm-editor`: fixed an error when editing primitives in Lua tables
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- @ `devel/dump-offsets`: now ignores ``index`` globals
|
||||||
|
- `gui/pathable`: added tile types to sidebar
|
||||||
|
- `modtools/skill-change`:
|
||||||
|
- now updates skill levels appropriately
|
||||||
|
- only prints output if ``-loud`` is passed
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- New globals:
|
||||||
|
- ``version``
|
||||||
|
- ``min_load_version``
|
||||||
|
- ``movie_version``
|
||||||
|
- ``basic_seed``
|
||||||
|
- ``title``
|
||||||
|
- ``title_spaced``
|
||||||
|
- ``ui_building_resize_radius``
|
||||||
|
- Added ``twbt_render_map`` code offset on x64
|
||||||
|
- Fixed an issue preventing ``enabler`` from being allocated by DFHack
|
||||||
|
- Added ``job_type.PutItemOnDisplay``
|
||||||
|
- Found ``renderer`` vtable on osx64
|
||||||
|
- ``adventure_movement_optionst``, ``adventure_movement_hold_tilest``, ``adventure_movement_climbst``: named coordinate fields
|
||||||
|
- ``mission``: added type
|
||||||
|
- ``unit``: added 3 new vmethods: ``getCreatureTile``, ``getCorpseTile``, ``getGlowTile``
|
||||||
|
- ``viewscreen_assign_display_itemst``: fixed layout on x64 and identified many fields
|
||||||
|
- ``viewscreen_reportlistst``: fixed layout, added ``mission_id`` vector
|
||||||
|
- ``world.status``: named ``missions`` vector
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.03-alpha1
|
||||||
|
|
||||||
|
## Lua
|
||||||
|
- Improved ``json`` I/O error messages
|
||||||
|
- Stopped a crash when trying to create instances of classes whose vtable addresses are not available
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.02-beta1
|
||||||
|
|
||||||
|
## New Scripts
|
||||||
|
- `devel/check-other-ids`: Checks the validity of "other" vectors in the ``world`` global
|
||||||
|
- `gui/cp437-table`: An in-game CP437 table
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- Fixed issues with the console output color affecting the prompt on Windows
|
||||||
|
- `createitem`: stopped items from teleporting away in some forts
|
||||||
|
- `gui/gm-unit`: can now edit mining skill
|
||||||
|
- `gui/quickcmd`: stopped error from adding too many commands
|
||||||
|
- `modtools/create-unit`: fixed error when domesticating units
|
||||||
|
|
||||||
|
## Misc Improvements
|
||||||
|
- The console now provides suggestions for built-in commands
|
||||||
|
- `devel/export-dt-ini`: avoid hardcoding flags
|
||||||
|
- `exportlegends`:
|
||||||
|
- reordered some tags to match DF's order
|
||||||
|
- added progress indicators for exporting long lists
|
||||||
|
- `gui/gm-editor`: added enum names to enum edit dialogs
|
||||||
|
- `gui/gm-unit`: made skill search case-insensitive
|
||||||
|
- `gui/rename`: added "clear" and "special characters" options
|
||||||
|
- `remotefortressreader`:
|
||||||
|
- includes item stack sizes
|
||||||
|
- some performance improvements
|
||||||
|
|
||||||
|
## Removed
|
||||||
|
- `warn-stuck-trees`: :bug:`9252` fixed in DF 0.44.01
|
||||||
|
|
||||||
|
## Lua
|
||||||
|
- Exposed ``get_vector()`` (from C++) for all types that support ``find()``, e.g. ``df.unit.get_vector() == df.global.world.units.all``
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- Located ``start_dwarf_count`` offset for all builds except 64-bit Linux; `startdwarf` should work now
|
||||||
|
- Added ``buildings_other_id.DISPLAY_CASE``
|
||||||
|
- Fixed ``viewscreen_titlest.start_savegames`` alignment
|
||||||
|
- Fixed ``unit`` alignment
|
||||||
|
- Identified ``historical_entity.unknown1b.deities`` (deity IDs)
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
# 0.44.02-alpha1
|
||||||
|
|
||||||
|
## New Scripts
|
||||||
|
- `devel/dump-offsets`: prints an XML version of the global table included in in DF
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
- Fixed a crash that could occur if a symbol table in symbols.xml had no content
|
||||||
|
|
||||||
|
## Lua
|
||||||
|
- Added a new ``dfhack.console`` API
|
||||||
|
- API can now wrap functions with 12 or 13 parameters
|
||||||
|
|
||||||
|
## Structures
|
||||||
|
- The ``ui_menu_width`` global is now a 2-byte array; the second item is the former ``ui_area_map_width`` global, which is now removed
|
||||||
|
- The former ``announcements`` global is now a field in ``d_init``
|
||||||
|
- ``world`` fields formerly beginning with ``job_`` are now fields of ``world.jobs``, e.g. ``world.job_list`` is now ``world.jobs.list``
|
||||||
|
|
@ -0,0 +1,202 @@
|
|||||||
|
import collections
|
||||||
|
import copy
|
||||||
|
import itertools
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
CHANGELOG_SECTIONS = [
|
||||||
|
'New Plugins',
|
||||||
|
'New Scripts',
|
||||||
|
'New Tweaks',
|
||||||
|
'New Features',
|
||||||
|
'New Internal Commands',
|
||||||
|
'Fixes',
|
||||||
|
'Misc Improvements',
|
||||||
|
'Removed',
|
||||||
|
'Internals',
|
||||||
|
'Structures',
|
||||||
|
'Lua',
|
||||||
|
'Ruby',
|
||||||
|
]
|
||||||
|
|
||||||
|
class ChangelogEntry(object):
|
||||||
|
def __init__(self, text, section, stable_version, dev_version):
|
||||||
|
text = text.lstrip('- ')
|
||||||
|
# normalize section to title case
|
||||||
|
self.section = ' '.join(word[0].upper() + word[1:].lower()
|
||||||
|
for word in section.strip().split())
|
||||||
|
self.stable_version = stable_version
|
||||||
|
self.dev_version = dev_version
|
||||||
|
self.dev_only = text.startswith('@')
|
||||||
|
text = text.lstrip('@ ')
|
||||||
|
self.children = []
|
||||||
|
|
||||||
|
split_index = text.find(': ')
|
||||||
|
if split_index != -1:
|
||||||
|
self.feature, description = text[:split_index], text[split_index+1:]
|
||||||
|
if description.strip():
|
||||||
|
self.children.insert(0, description.strip())
|
||||||
|
else:
|
||||||
|
self.feature = text
|
||||||
|
self.feature = self.feature.replace(':\\', ':').rstrip(':')
|
||||||
|
|
||||||
|
self.sort_key = self.feature.upper()
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return 'ChangelogEntry(%r, %r)' % (self.feature, self.children)
|
||||||
|
|
||||||
|
def parse_changelog():
|
||||||
|
cur_stable = None
|
||||||
|
cur_dev = None
|
||||||
|
cur_section = None
|
||||||
|
last_entry = None
|
||||||
|
entries = []
|
||||||
|
|
||||||
|
with open('docs/changelog.txt') as f:
|
||||||
|
multiline = ''
|
||||||
|
for line_id, line in enumerate(f.readlines()):
|
||||||
|
line_id += 1
|
||||||
|
|
||||||
|
if multiline:
|
||||||
|
multiline += line
|
||||||
|
elif '[[[' in line:
|
||||||
|
multiline = line
|
||||||
|
|
||||||
|
if ']]]' in multiline:
|
||||||
|
line = multiline.replace(']]]', '')
|
||||||
|
multiline = ''
|
||||||
|
elif multiline:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not line.strip() or line.startswith('==='):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith('##'):
|
||||||
|
cur_section = line.lstrip('#').strip()
|
||||||
|
elif line.startswith('#'):
|
||||||
|
cur_dev = line.lstrip('#').strip().lower()
|
||||||
|
if ('alpha' not in cur_dev and 'beta' not in cur_dev and
|
||||||
|
'rc' not in cur_dev):
|
||||||
|
cur_stable = cur_dev
|
||||||
|
elif line.startswith('-'):
|
||||||
|
if not cur_stable or not cur_dev or not cur_section:
|
||||||
|
raise ValueError(
|
||||||
|
'changelog.txt:%i: Entry without section' % line_id)
|
||||||
|
last_entry = ChangelogEntry(line.strip(), cur_section,
|
||||||
|
cur_stable, cur_dev)
|
||||||
|
entries.append(last_entry)
|
||||||
|
elif line.lstrip().startswith('-'):
|
||||||
|
if not cur_stable or not cur_dev:
|
||||||
|
raise ValueError(
|
||||||
|
'changelog.txt:%i: Sub-entry without section' % line_id)
|
||||||
|
if not last_entry:
|
||||||
|
raise ValueError(
|
||||||
|
'changelog.txt:%i: Sub-entry without parent' % line_id)
|
||||||
|
last_entry.children.append(line.strip('- \n'))
|
||||||
|
else:
|
||||||
|
raise ValueError('Invalid line: ' + line)
|
||||||
|
|
||||||
|
return entries
|
||||||
|
|
||||||
|
def consolidate_changelog(all_entries):
|
||||||
|
for sections in all_entries.values():
|
||||||
|
for section, entries in sections.items():
|
||||||
|
# sort() is stable, so reverse entries so that older entries for the
|
||||||
|
# same feature are on top
|
||||||
|
entries.reverse()
|
||||||
|
entries.sort(key=lambda entry: entry.sort_key)
|
||||||
|
new_entries = []
|
||||||
|
for feature, group in itertools.groupby(entries,
|
||||||
|
lambda e: e.feature):
|
||||||
|
old_entries = list(group)
|
||||||
|
children = list(itertools.chain(*[entry.children
|
||||||
|
for entry in old_entries]))
|
||||||
|
new_entry = copy.deepcopy(old_entries[0])
|
||||||
|
new_entry.children = children
|
||||||
|
new_entries.append(new_entry)
|
||||||
|
entries[:] = new_entries
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def print_changelog(versions, all_entries, path):
|
||||||
|
# all_entries: version -> section -> entry
|
||||||
|
with open(path, 'w') as f:
|
||||||
|
write = lambda s: f.write(s + '\n')
|
||||||
|
for version in versions:
|
||||||
|
sections = all_entries[version]
|
||||||
|
if not sections:
|
||||||
|
continue
|
||||||
|
version = 'DFHack ' + version
|
||||||
|
write(version)
|
||||||
|
write('=' * len(version))
|
||||||
|
write('')
|
||||||
|
for section in CHANGELOG_SECTIONS:
|
||||||
|
entries = sections[section]
|
||||||
|
if not entries:
|
||||||
|
continue
|
||||||
|
write(section)
|
||||||
|
write('-' * len(section))
|
||||||
|
for entry in entries:
|
||||||
|
if len(entry.children) == 1:
|
||||||
|
write('- ' + entry.feature + ': ' +
|
||||||
|
entry.children[0].strip('- '))
|
||||||
|
continue
|
||||||
|
elif entry.children:
|
||||||
|
write('- ' + entry.feature + ':')
|
||||||
|
write('')
|
||||||
|
for child in entry.children:
|
||||||
|
write(' - ' + child)
|
||||||
|
write('')
|
||||||
|
else:
|
||||||
|
write('- ' + entry.feature)
|
||||||
|
write('')
|
||||||
|
write('')
|
||||||
|
|
||||||
|
|
||||||
|
def generate_changelog():
|
||||||
|
entries = parse_changelog()
|
||||||
|
|
||||||
|
# scan for unrecognized sections
|
||||||
|
for entry in entries:
|
||||||
|
if entry.section not in CHANGELOG_SECTIONS:
|
||||||
|
raise RuntimeWarning('Unknown section: ' + entry.section)
|
||||||
|
|
||||||
|
# ordered versions
|
||||||
|
versions = ['future']
|
||||||
|
# map versions to stable versions
|
||||||
|
stable_version_map = {}
|
||||||
|
# version -> section -> entry
|
||||||
|
stable_entries = collections.defaultdict(lambda:
|
||||||
|
collections.defaultdict(list))
|
||||||
|
dev_entries = collections.defaultdict(lambda:
|
||||||
|
collections.defaultdict(list))
|
||||||
|
for entry in entries:
|
||||||
|
if entry.dev_version not in versions:
|
||||||
|
versions.append(entry.dev_version)
|
||||||
|
stable_version_map.setdefault(entry.dev_version, entry.stable_version)
|
||||||
|
if not entry.dev_only:
|
||||||
|
stable_entries[entry.stable_version][entry.section].append(entry)
|
||||||
|
dev_entries[entry.dev_version][entry.section].append(entry)
|
||||||
|
|
||||||
|
consolidate_changelog(stable_entries)
|
||||||
|
|
||||||
|
print_changelog(versions, stable_entries, 'docs/_auto/news.rst')
|
||||||
|
print_changelog(versions, dev_entries, 'docs/_auto/news-dev.rst')
|
||||||
|
|
||||||
|
return entries
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
os.chdir(os.path.abspath(os.path.dirname(__file__)))
|
||||||
|
os.chdir('..')
|
||||||
|
entries = generate_changelog()
|
||||||
|
if '--check' in sys.argv:
|
||||||
|
with open('docs/_auto/news.rst') as f:
|
||||||
|
content_stable = f.read()
|
||||||
|
with open('docs/_auto/news-dev.rst') as f:
|
||||||
|
content_dev = f.read()
|
||||||
|
for entry in entries:
|
||||||
|
for description in entry.children:
|
||||||
|
if not entry.dev_only and description not in content_stable:
|
||||||
|
print('stable missing: ' + description)
|
||||||
|
if description not in content_dev:
|
||||||
|
print('dev missing: ' + description)
|
Loading…
Reference in New Issue