Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/littlefs-project/littlefs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Haster <chaster@utexas.edu>2019-01-26 02:07:17 +0300
committerChristopher Haster <chaster@utexas.edu>2019-04-08 21:55:28 +0300
commit7f7b7332e3a356587b814ceebf23a8e68f06da9e (patch)
treea8e9a6ecd67e229cae6e2cf5deedbbf735f9542f /scripts
parentd3a2cf48d449f259bc15a3a1058323132f3eeef7 (diff)
Added scripts/prefix.py for automatically prefixing version numbers
Example: ./scripts/prefix.py lfs2 Will convert the following: lfs_* -> lfs2_* LFS_* -> LFS2_* -DLFS_* -> -DLFS2_*
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/prefix.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/scripts/prefix.py b/scripts/prefix.py
new file mode 100755
index 0000000..ca547b6
--- /dev/null
+++ b/scripts/prefix.py
@@ -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:]))