Skip to content

Commit

Permalink
Merge pull request #12592 from dswij/pathlib_whatsnew
Browse files Browse the repository at this point in the history
  • Loading branch information
Carreau committed Oct 12, 2020
2 parents 92860b5 + 9b33f2c commit 230bee5
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions tools/update_whatsnew.py
Expand Up @@ -7,57 +7,56 @@

import io
import sys
from glob import glob
from os.path import dirname, basename, abspath, join as pjoin
from pathlib import Path
from subprocess import check_call, check_output

repo_root = dirname(dirname(abspath(__file__)))
whatsnew_dir = pjoin(repo_root, 'docs', 'source', 'whatsnew')
pr_dir = pjoin(whatsnew_dir, 'pr')
target = pjoin(whatsnew_dir, 'development.rst')
repo_root = Path(__file__).resolve().parent.parent
whatsnew_dir = repo_root / "docs" / "source" / "whatsnew"
pr_dir = whatsnew_dir / "pr"
target = whatsnew_dir / "development.rst"

FEATURE_MARK = ".. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT."
INCOMPAT_MARK = ".. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT."

# 1. Collect the whatsnew snippet files ---------------------------------------

files = set(glob(pjoin(pr_dir, '*.rst')))
files = set(pr_dir.glob("*.rst"))
# Ignore explanatory and example files
files.difference_update({pjoin(pr_dir, f) for f in {
'incompat-switching-to-perl.rst',
'antigravity-feature.rst'}
})
files.difference_update(
{pr_dir / f for f in {"incompat-switching-to-perl.rst", "antigravity-feature.rst"}}
)

if not files:
print("No automatic update available for what's new")
sys.exit(0)


def getmtime(f):
return check_output(['git', 'log', '-1', '--format="%ai"', '--', f])
return check_output(["git", "log", "-1", '--format="%ai"', "--", f])


files = sorted(files, key=getmtime)

features, incompats = [], []
for path in files:
with io.open(path, encoding='utf-8') as f:
with io.open(path, encoding="utf-8") as f:
try:
content = f.read().rstrip()
except Exception as e:
raise Exception('Error reading "{}"'.format(f)) from e

if basename(path).startswith('incompat-'):
if path.name.startswith("incompat-"):
incompats.append(content)
else:
features.append(content)

# Put the insertion markers back on the end, so they're ready for next time.
feature_block = '\n\n'.join(features + [FEATURE_MARK])
incompat_block = '\n\n'.join(incompats + [INCOMPAT_MARK])
feature_block = "\n\n".join(features + [FEATURE_MARK])
incompat_block = "\n\n".join(incompats + [INCOMPAT_MARK])

# 2. Update the target file ---------------------------------------------------

with io.open(target, encoding='utf-8') as f:
with io.open(target, encoding="utf-8") as f:
content = f.read()

assert content.count(FEATURE_MARK) == 1
Expand All @@ -67,16 +66,16 @@ def getmtime(f):
content = content.replace(INCOMPAT_MARK, incompat_block)

# Clean trailing whitespace
content = '\n'.join(l.rstrip() for l in content.splitlines())
content = "\n".join(l.rstrip() for l in content.splitlines())

with io.open(target, 'w', encoding='utf-8') as f:
with io.open(target, "w", encoding="utf-8") as f:
f.write(content)

# 3. Stage the changes in git -------------------------------------------------

for file in files:
check_call(['git', 'rm', file])
check_call(["git", "rm", file])

check_call(['git', 'add', target])
check_call(["git", "add", target])

print("Merged what's new changes. Check the diff and commit the change.")

0 comments on commit 230bee5

Please sign in to comment.