Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit af3d4da

Browse filesBrowse files
authored
Merge pull request #1637 from stonebig/master
allow to compare two markdown files directly
2 parents 6bf5fd7 + 0c010cf commit af3d4da
Copy full SHA for af3d4da

File tree

Expand file treeCollapse file tree

1 file changed

+51
-5
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+51
-5
lines changed

‎winpython/diff.py

Copy file name to clipboardExpand all lines: winpython/diff.py
+51-5Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
import re
1212
import shutil
1313
from packaging import version
14+
import sys
15+
1416
from . import utils
1517

1618
CHANGELOGS_DIR = Path(__file__).parent.parent / "changelogs"
17-
assert CHANGELOGS_DIR.is_dir()
1819

1920
class Package:
2021
PATTERNS = [
@@ -48,7 +49,7 @@ class PackageIndex:
4849
def __init__(self, version, searchdir=None, flavor="", architecture=64):
4950
self.version = version
5051
self.flavor = flavor
51-
self.searchdir = searchdir
52+
self.searchdir = Path(searchdir) if searchdir else CHANGELOGS_DIR
5253
self.architecture = architecture
5354
self.packages = {"tools": {}, "python": {}, "wheelhouse": {}}
5455
self._load_index()
@@ -102,6 +103,10 @@ def find_previous_version(target_version, searchdir=None, flavor="", architectur
102103
return max(versions, key=version.parse, default=target_version)
103104

104105
def compare_package_indexes(version2, version1=None, searchdir=None, flavor="", flavor1=None, architecture=64):
106+
"""Comparison by looking versions in a given Changelog directory"""
107+
if not searchdir or (not Path(searchdir).is_dir() and not CHANGELOGS_DIR.is_dir()):
108+
print(f"Error: changelogs directory {CHANGELOGS_DIR} does not exist.")
109+
sys.exit(1)
105110
version1 = version1 or find_previous_version(version2, searchdir, flavor, architecture)
106111
flavor1 = flavor1 or flavor
107112

@@ -140,8 +145,49 @@ def write_changelog(version2, version1=None, searchdir=None, flavor="", architec
140145
f.write(changelog)
141146
# Copy to winpython/changelogs back to basedir
142147
if basedir:
143-
shutil.copyfile(output_file, basedir / output_file.name)
148+
shutil.copyfile(output_file, Path(basedir) / output_file.name)
149+
150+
def compare_two_markdown_files(file1, file2):
151+
"""Compare two arbitrary markdown files with WinPython changelog format."""
152+
class DummyPackageIndex(PackageIndex):
153+
def __init__(self, filename):
154+
self.packages = {"tools": {}, "python": {}, "wheelhouse": {}}
155+
self._load_index(filename)
156+
157+
def _load_index(self, filename):
158+
with open(filename, "r", encoding=utils.guess_encoding(filename)[0]) as f:
159+
self._parse_index(f.read())
160+
161+
pi1 = DummyPackageIndex(Path(file1))
162+
pi2 = DummyPackageIndex(Path(file2))
163+
164+
text = f"## Differences between {file1} and {file2}\n\n<details>\n\n"
165+
for key in PackageIndex.HEADERS:
166+
diff = compare_packages(pi1.packages[key], pi2.packages[key])
167+
if diff:
168+
text += f"\n{PackageIndex.HEADERS[key]}\n\n{diff}"
169+
return text + "\n</details>\n\n* * *\n"
170+
171+
def print_usage():
172+
print("Usage:")
173+
print(" python diff.py file1.md file2.md")
174+
print(" - Compare two markdown changelog files directly.")
175+
print(" python diff.py <version2> <version1> [searchdir] [flavor] [architecture]")
176+
print(" - Compare WinPython markdown changelogs by version.")
144177

145178
if __name__ == "__main__":
146-
print(compare_package_indexes("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37\budot", "Zero", architecture=32))
147-
write_changelog("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37\budot", "Ps2", architecture=64)
179+
if len(sys.argv) == 3 and all(arg.lower().endswith('.md') for arg in sys.argv[1:]):
180+
# Usage: python diff.py file1.md file2.md
181+
file1, file2 = sys.argv[1], sys.argv[2]
182+
print(compare_two_markdown_files(file1, file2))
183+
elif len(sys.argv) >= 3:
184+
# Original usage (version comparison)
185+
# Example: python diff.py 3.7.4.0 3.7.2.0 "C:\WinP\bd37\budot" "Zero" 32
186+
version2 = sys.argv[1]
187+
version1 = sys.argv[2]
188+
searchdir = Path(sys.argv[3]) if len(sys.argv) > 3 else CHANGELOGS_DIR
189+
flavor = sys.argv[4] if len(sys.argv) > 4 else ""
190+
architecture = int(sys.argv[5]) if len(sys.argv) > 5 else 64
191+
print(compare_package_indexes(version2, version1, searchdir, flavor, architecture=architecture))
192+
else:
193+
print_usage()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.