Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commitaf3d4da

Browse files
authored
Merge pull request#1637 from stonebig/master
allow to compare two markdown files directly
2 parents6bf5fd7 +0c010cf commitaf3d4da

File tree

1 file changed

+51
-5
lines changed

1 file changed

+51
-5
lines changed

‎winpython/diff.py

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
importre
1212
importshutil
1313
frompackagingimportversion
14+
importsys
15+
1416
from .importutils
1517

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

1920
classPackage:
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)ifsearchdirelseCHANGELOGS_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
returnmax(versions,key=version.parse,default=target_version)
103104

104105
defcompare_package_indexes(version2,version1=None,searchdir=None,flavor="",flavor1=None,architecture=64):
106+
"""Comparison by looking versions in a given Changelog directory"""
107+
ifnotsearchdiror (notPath(searchdir).is_dir()andnotCHANGELOGS_DIR.is_dir()):
108+
print(f"Error: changelogs directory{CHANGELOGS_DIR} does not exist.")
109+
sys.exit(1)
105110
version1=version1orfind_previous_version(version2,searchdir,flavor,architecture)
106111
flavor1=flavor1orflavor
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
ifbasedir:
143-
shutil.copyfile(output_file,basedir/output_file.name)
148+
shutil.copyfile(output_file,Path(basedir)/output_file.name)
149+
150+
defcompare_two_markdown_files(file1,file2):
151+
"""Compare two arbitrary markdown files with WinPython changelog format."""
152+
classDummyPackageIndex(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+
withopen(filename,"r",encoding=utils.guess_encoding(filename)[0])asf:
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+
forkeyinPackageIndex.HEADERS:
166+
diff=compare_packages(pi1.packages[key],pi2.packages[key])
167+
ifdiff:
168+
text+=f"\n{PackageIndex.HEADERS[key]}\n\n{diff}"
169+
returntext+"\n</details>\n\n* * *\n"
170+
171+
defprint_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+
iflen(sys.argv)==3andall(arg.lower().endswith('.md')forarginsys.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+
eliflen(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])iflen(sys.argv)>3elseCHANGELOGS_DIR
189+
flavor=sys.argv[4]iflen(sys.argv)>4else""
190+
architecture=int(sys.argv[5])iflen(sys.argv)>5else64
191+
print(compare_package_indexes(version2,version1,searchdir,flavor,architecture=architecture))
192+
else:
193+
print_usage()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp