Warning, /sdk/kde-dev-scripts/rename_source_files is written in an unsupported language. File is not indexed.

0001 #! /usr/bin/env python
0002 #
0003 # Copyright David Faure <faure@kde.org>, License LGPL v2
0004 #
0005 # This script renames files (sources and headers), and take care of
0006 # - doing the svn command to rename the file
0007 # - updating Makefile.am
0008 # - updating #include lines (for headers and for .moc)
0009 #
0010 # The input is a file with a syntax like "kwframe KWFrame", one renaming on each line.
0011 # "oldName newName" will rename oldName.h to newName.h and oldName.{cc,cpp} to newName.cpp
0012 #
0013 import sys, os
0014 
0015 buildFile = "Makefile.am"
0016 if not os.path.exists( buildFile ):
0017         buildFile = "CMakeLists.txt"
0018         if not os.path.exists( buildFile ):
0019                 buildFile = ""
0020 
0021 MakefileAmContents = ""
0022 if buildFile:
0023         MakefileAmContents = file(buildFile, "r").read()
0024 origMakefileAmContents = MakefileAmContents
0025 
0026 def renameFile( oldFileName, newFileName ):
0027         global MakefileAmContents
0028         if oldFileName != newFileName and os.path.exists( oldFileName ):
0029                 print oldFileName + " -> " + newFileName
0030                 if os.path.exists( newFileName ):
0031                         print "Warning, erasing " + newFileName
0032                         os.unlink( newFileName )  # could be due to a former run
0033                 #os.rename( oldFileName, newFileName )
0034                 os.system( 'svn move --force ' + oldFileName + ' ' + newFileName )
0035                 MakefileAmContents = MakefileAmContents.replace( oldFileName, newFileName )
0036         
0037 def renameHeader( oldFileName, newFileName ):
0038         global MakefileAmContents
0039         renameFile( oldFileName, newFileName )
0040         MakefileAmContents = MakefileAmContents.replace( oldFileName.replace('.h','.skel'), newFileName.replace('.h','.skel') )
0041         # And now rename includes
0042         #  ... in source files
0043         files = os.popen('find . -name \'*[cph]\' | xargs grep -l '+oldFileName).readlines()
0044         for f in files:
0045                 data = file(f.strip(),"r").read()
0046                 data = data.replace( '#include <' + oldFileName + '>', '#include <' + newFileName + '>' )
0047                 data = data.replace( '#include "' + oldFileName + '"', '#include "' + newFileName + '"' )
0048                 data = data.replace( '#include "' + oldFileName.replace('.h','.moc') + '"', '#include "' + newFileName.replace('.h','.moc') + '"' )
0049                 file(f.strip(),"w").write( data )
0050         #  ... in ui files
0051         uifiles = os.popen('find . -name \'*.ui\' | xargs grep -l '+oldFileName).readlines()
0052         for f in uifiles:
0053                 data = file(f.strip(),"r").read()
0054                 data = data.replace( '>' + oldFileName + '</header', '>' + newFileName + '</header>' )
0055                 file(f.strip(),"w").write( data )
0056         #  ... and in kcfg files
0057         kcfgfiles = os.popen('find . -name \'*.kcfg\' | xargs grep -l '+oldFileName).readlines()
0058         for f in kcfgfiles:
0059                 data = file(f.strip(),"r").read()
0060                 data = data.replace( '>' + oldFileName + '</include', '>' + newFileName + '</include>' )
0061                 file(f.strip(),"w").write( data )
0062 
0063 def help():
0064         print "Usage: %s filename"
0065         print "where the file <filename> contains the definition of the files to rename."
0066         sys.exit()
0067 
0068 # Main
0069 
0070 if len(sys.argv) < 2:
0071         help()
0072 
0073 replaceFileName = sys.argv[1];
0074 
0075 for line in file(replaceFileName, "r").readlines():
0076         words = line.split()
0077         oldBaseName = words[0]
0078         newBaseName = words[1]
0079         renameHeader( oldBaseName + '.h', newBaseName + '.h' )
0080         if os.path.exists( oldBaseName + '.cc' ):
0081                 renameFile( oldBaseName + '.cc', newBaseName + '.cpp' )
0082         elif os.path.exists( oldBaseName + '.cpp' ):
0083                  renameFile( oldBaseName + '.cpp', newBaseName + '.cpp' )
0084         
0085 
0086 # Write Makefile.am back
0087 if buildFile and (origMakefileAmContents != MakefileAmContents):
0088         file(buildFile,"w").write( MakefileAmContents )