mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 00:38:29 +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