vimtabdiff/vimtabdiff.py

59 lines
1.5 KiB
Python
Raw Normal View History

2022-11-30 11:59:52 -05:00
#!/usr/bin/python3
import os,sys
2022-12-04 18:22:45 -05:00
import argparse
import pathlib
2022-12-04 19:21:14 -05:00
import itertools
2022-12-04 19:36:51 -05:00
from pathlib import Path
2022-12-04 18:22:45 -05:00
def parse_args():
parser = argparse.ArgumentParser(description="Show diff in vim tab pages")
parser.add_argument("pathA")
parser.add_argument("pathB")
return parser.parse_args()
def get_dir_info(dirname: Path):
if not dirname:
return [],[]
dirs, files = [], []
for p in dirname.iterdir():
if p.is_dir():
dirs.append(p)
else:
files.append(p)
return dirs, files
2022-12-04 19:36:51 -05:00
def get_pairs(aItems, bItems):
2022-12-04 19:21:14 -05:00
aItems = [(item, 'A') for item in aItems]
bItems = [(item, 'B') for item in bItems]
items = sorted(aItems + bItems)
2022-12-04 19:36:51 -05:00
for _, items in itertools.groupby(items, lambda item: item[0].name):
2022-12-04 19:21:14 -05:00
items = list(items)
if len(items) == 2:
2022-12-04 19:36:51 -05:00
(aItem, _), (bItem, _) = items
2022-12-04 19:21:14 -05:00
yield aItem, bItem
else:
assert(len(items) == 1)
2022-12-04 19:36:51 -05:00
(item, tag), = items
2022-12-04 19:21:14 -05:00
if tag == 'A':
yield item, None
else:
yield None, item
2022-12-04 18:22:45 -05:00
def get_file_pairs(a, b):
2022-12-04 19:21:14 -05:00
aDirs, aFiles = get_dir_info(Path(a))
bDirs, bFiles = get_dir_info(Path(b))
2022-12-04 19:36:51 -05:00
yield from get_pairs(aFiles, bFiles)
for aDir, bDir in get_pairs(aDirs, bDirs):
2022-12-04 19:21:14 -05:00
yield from get_file_pairs(aDir, bDir)
2022-11-30 11:59:52 -05:00
def main():
2022-12-04 18:22:45 -05:00
args = parse_args()
2022-11-30 11:59:52 -05:00
print("Helloworld")
2022-12-04 19:21:14 -05:00
for a, b in get_file_pairs(args.pathA, args.pathB):
print(f"{a=}, {b=}")
2022-11-30 11:59:52 -05:00
if __name__ == '__main__':
main()
2022-12-04 19:36:51 -05:00