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