mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	Added scripts/prefix.py for automatically prefixing version numbers
Example: ./scripts/prefix.py lfs2 Will convert the following: lfs_* -> lfs2_* LFS_* -> LFS2_* -DLFS_* -> -DLFS2_*
This commit is contained in:
		
							
								
								
									
										61
									
								
								scripts/prefix.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										61
									
								
								scripts/prefix.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | #!/usr/bin/env python | ||||||
|  |  | ||||||
|  | # This script replaces prefixes of files, and symbols in that file. | ||||||
|  | # Useful for creating different versions of the codebase that don't | ||||||
|  | # conflict at compile time. | ||||||
|  | # | ||||||
|  | # example: | ||||||
|  | # $ ./scripts/prefix.py lfs2 | ||||||
|  |  | ||||||
|  | import os | ||||||
|  | import os.path | ||||||
|  | import re | ||||||
|  | import glob | ||||||
|  | import itertools | ||||||
|  | import tempfile | ||||||
|  | import shutil | ||||||
|  | import subprocess | ||||||
|  |  | ||||||
|  | DEFAULT_PREFIX = "lfs" | ||||||
|  |  | ||||||
|  | def subn(from_prefix, to_prefix, name): | ||||||
|  |     name, count1 = re.subn('\\b'+from_prefix, to_prefix, name) | ||||||
|  |     name, count2 = re.subn('\\b'+from_prefix.upper(), to_prefix.upper(), name) | ||||||
|  |     name, count3 = re.subn('\\B-D'+from_prefix.upper(), | ||||||
|  |             '-D'+to_prefix.upper(), name) | ||||||
|  |     return name, count1+count2+count3 | ||||||
|  |  | ||||||
|  | def main(from_prefix, to_prefix=None, files=None): | ||||||
|  |     if not to_prefix: | ||||||
|  |         from_prefix, to_prefix = DEFAULT_PREFIX, from_prefix | ||||||
|  |  | ||||||
|  |     if not files: | ||||||
|  |         files = subprocess.check_output([ | ||||||
|  |                 'git', 'ls-tree', '-r', '--name-only', 'HEAD']).split() | ||||||
|  |  | ||||||
|  |     for oldname in files: | ||||||
|  |         # Rename any matching file names | ||||||
|  |         newname, namecount = subn(from_prefix, to_prefix, oldname) | ||||||
|  |         if namecount: | ||||||
|  |             subprocess.check_call(['git', 'mv', oldname, newname]) | ||||||
|  |  | ||||||
|  |         # Rename any prefixes in file | ||||||
|  |         count = 0 | ||||||
|  |         with open(newname+'~', 'w') as tempf: | ||||||
|  |             with open(newname) as newf: | ||||||
|  |                 for line in newf: | ||||||
|  |                     line, n = subn(from_prefix, to_prefix, line) | ||||||
|  |                     count += n | ||||||
|  |                     tempf.write(line) | ||||||
|  |         shutil.copystat(newname, newname+'~') | ||||||
|  |         os.rename(newname+'~', newname) | ||||||
|  |         subprocess.check_call(['git', 'add', newname]) | ||||||
|  |  | ||||||
|  |         # Summary | ||||||
|  |         print '%s: %d replacements' % ( | ||||||
|  |                 '%s -> %s' % (oldname, newname) if namecount else oldname, | ||||||
|  |                 count) | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     import sys | ||||||
|  |     sys.exit(main(*sys.argv[1:])) | ||||||
		Reference in New Issue
	
	Block a user