mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +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])
 | 
