mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
A script that replaces an old file with a new one, only if the contents
 | 
						|
actually changed.  If not, the new file is simply deleted.
 | 
						|
 | 
						|
This avoids wholesale rebuilds when a code (re)generation phase does not
 | 
						|
actually change the in-tree generated code.
 | 
						|
"""
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
 | 
						|
 | 
						|
def main(old_path, new_path):
 | 
						|
    with open(old_path, 'rb') as f:
 | 
						|
        old_contents = f.read()
 | 
						|
    with open(new_path, 'rb') as f:
 | 
						|
        new_contents = f.read()
 | 
						|
    if old_contents != new_contents:
 | 
						|
        os.replace(new_path, old_path)
 | 
						|
    else:
 | 
						|
        os.unlink(new_path)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    if len(sys.argv) != 3:
 | 
						|
        print("Usage: %s <path to be updated> <path with new contents>" % (sys.argv[0],))
 | 
						|
        sys.exit(1)
 | 
						|
    main(sys.argv[1], sys.argv[2])
 |