Skip to content

Instantly share code, notes, and snippets.

@bedros
Last active October 9, 2015 05:12
Show Gist options
  • Save bedros/f1b4c1b5154886d2b143 to your computer and use it in GitHub Desktop.
Save bedros/f1b4c1b5154886d2b143 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import filecmp
import sys, os
def print_diff_files(dcmp, diff_list, dname):
for name in dcmp.diff_files:
cdir =os.path.join(dname, name)
diff_list.append(cdir)
for subdir in dcmp.subdirs.keys():
cname = os.path.join(dname, subdir)
print_diff_files(dcmp.subdirs[subdir], diff_list, dname=cname)
def print_left_only_files(dcmp, left_list, dname):
for name in dcmp.left_only:
cdir = os.path.join(dname, name)
left_list.append(cdir)
for subdir in dcmp.subdirs.keys():
cname = os.path.join(dname, subdir)
print_left_only_files(dcmp.subdirs[subdir], left_list, dname= cname)
def print_right_only_files(dcmp, right_list, dname):
for name in dcmp.right_only:
cdir = os.path.join(dname, name)
right_list.append(cdir)
for subdir in dcmp.subdirs.keys():
cname = os.path.join(dname, subdir)
print_right_only_files(dcmp.subdirs[subdir], right_list, dname=cname)
def main():
if len(sys.argv) <3:
sys.exit('Usage: %s dir0 dir1' % sys.argv[0])
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: %s was not found!' % sys.argv[1])
if not os.path.exists(sys.argv[2]):
sys.exit('ERROR: %s was not found!' % sys.argv[2])
dc = filecmp.dircmp(sys.argv[1], sys.argv[2])
#dc.report()
#dc.report_full_closure()
#dc.report_partial_closure()
diff_list = []
print_diff_files(dc, diff_list, dname='')
if len(diff_list)>0:
print "========= CHANGED FILES ========="
for item in diff_list:
print item
else:
print "========= NO CHANGED FILES ========="
left_list = []
print_left_only_files(dc, left_list, dname=sys.argv[1])
if len(left_list)>0:
print "========= FOUND in only in %s =========" % dc.left
for item in left_list:
print item
right_list = []
print_right_only_files(dc, right_list, dname = sys.argv[2])
if len(right_list)>0:
print "========= FOUND in only in %s =========" % dc.right
for item in right_list:
print item
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment