diff --git a/c++-copy-class-and-file b/c++-copy-class-and-file index c32152e..d247942 100755 --- a/c++-copy-class-and-file +++ b/c++-copy-class-and-file @@ -1,63 +1,68 @@ #!/bin/sh if [ $# != 2 ]; then echo "Usage: $0 old_classname new_classname" exit 1 fi oldname=$1 newname=$2 -oldfile=`echo $oldname | tr A-Z a-z` -newfile=`echo $newname | tr A-Z a-z` +if [ -f $oldname.cpp ]; then + oldfile=$oldname + newfile=$newname +else + oldfile=`echo $oldname | tr A-Z a-z` + newfile=`echo $newname | tr A-Z a-z` +fi echo "Copying $oldfile.{cpp,h} to $newfile.{cpp,h}" if [ ! -f $newfile.h ]; then cp $oldfile.h $newfile.h cp $oldfile.cpp $newfile.cpp if [ -f ${oldfile}_p.h ]; then cp ${oldfile}_p.h ${newfile}_p.h fi git add $newfile.h git add $newfile.cpp if [ -f ${newfile}_p.h ]; then git add ${newfile}_p.h fi if [ -f ${newfile}.ui ]; then git add ${newfile}.ui fi fi # Update build system if test -f CMakeLists.txt; then buildsystemfile=CMakeLists.txt else buildsystemfile=`ls -1 *.pro 2>/dev/null | head -n 1` fi if test -n "$buildsystemfile"; then perl -pi -e '$_ .= "$1'$newfile.cpp'\n" if (m/^(\s*)'$oldfile'\.cpp/)' $buildsystemfile perl -pi -e '$_ .= "$1'$newfile.h'\n" if (m/^(\s*)'$oldfile'\.h/)' $buildsystemfile perl -pi -e '$_ .= "$1'$newfile.ui'\n" if (m/^(\s*)'$oldfile'\.ui/)' $buildsystemfile fi # Rename class perl -pi -e "s/$oldname/$newname/g" $newfile.h $newfile.cpp if [ -f ${newfile}_p.h ]; then perl -pi -e "s/$oldname/$newname/g" ${newfile}_p.h fi if [ -f ${newfile}.ui ]; then perl -pi -e "s/$oldname/$newname/g" ${newfile}.ui fi oldinclguard=`echo $oldname | tr a-z A-Z` newinclguard=`echo $newname | tr a-z A-Z` # Update include guard perl -pi -e "s/$oldinclguard/$newinclguard/g" $newfile.h # Update includes in cpp file perl -pi -e 's/\b'$oldfile'\.h/'$newfile'\.h/' $newfile.cpp perl -pi -e 's/\b'$oldfile'\.moc/'$newfile'\.moc/' $newfile.cpp diff --git a/c++-rename-class-and-file b/c++-rename-class-and-file index 2082b40..d97d88d 100755 --- a/c++-rename-class-and-file +++ b/c++-rename-class-and-file @@ -1,96 +1,101 @@ #!/bin/sh oldname=$1 newname=$2 if [ $# != 2 ]; then echo "Usage: $0 old_classname new_classname" exit 1 fi -oldfile=`echo $oldname | tr A-Z a-z` -newfile=`echo $newname | tr A-Z a-z` +if [ -f $oldname.cpp ]; then + oldfile=$oldname + newfile=$newname +else + oldfile=`echo $oldname | tr A-Z a-z` + newfile=`echo $newname | tr A-Z a-z` +fi findup() { parg="$1" _hit="" spwd="$PWD" if test -z "$parg"; then return 1; fi while ! test -e "$parg"; do cd .. if test "$PWD" = "/"; then cd "$spwd" return 1 fi done _hit="$PWD/$parg" cd "$spwd" } my_mv() { _src="$1" _dest="$2" findup .svn if test -n "$_hit"; then svn mv "$_src" "$_dest" || mv "$_src" "$_dest" return fi findup .git if test -n "$_hit"; then git mv "$_src" "$_dest" || mv "$_src" "$_dest" return fi mv "$_src" "$_dest" } if [ ! -f $newfile.h ]; then if [ -f ${oldfile}.h ]; then my_mv $oldfile.h $newfile.h fi my_mv $oldfile.cpp $newfile.cpp if [ -f ${oldfile}_p.h ]; then my_mv ${oldfile}_p.h ${newfile}_p.h fi if [ -f ${oldfile}.ui ]; then my_mv ${oldfile}.ui ${newfile}.ui fi fi # Update buildsystem if test -f CMakeLists.txt; then buildsystemfile=CMakeLists.txt else buildsystemfile=`ls -1 *.pro 2>/dev/null | head -n 1` fi if test -n "$buildsystemfile"; then perl -pi -e "s/\b$oldfile\.cpp/$newfile.cpp/;s/\b$oldfile\.h/$newfile\.h/;s/\b$oldfile\.ui/$newfile\.ui/" $buildsystemfile fi # Rename class if [ -f ${newfile}.h ]; then perl -pi -e "s/$oldname/$newname/g" ${newfile}.h fi perl -pi -e "s/$oldname/$newname/g" $newfile.cpp if [ -f ${newfile}_p.h ]; then perl -pi -e "s/$oldname/$newname/g" ${newfile}_p.h fi if [ -f ${newfile}.ui ]; then perl -pi -e "s/$oldname/$newname/g" ${newfile}.ui fi oldinclguard=`echo $oldname | tr a-z A-Z` newinclguard=`echo $newname | tr a-z A-Z` # Update include guard if [ -f ${newfile}.h ]; then perl -pi -e "s/$oldinclguard/$newinclguard/g" $newfile.h fi if [ -f ${newfile}_p.h ]; then perl -pi -e "s/$oldinclguard/$newinclguard/g" ${newfile}_p.h fi # Update include in cpp file perl -pi -e 's/\b'$oldfile'\.h/'$newfile'\.h/;s/\b'$oldfile'_p\.h/'$newfile'_p\.h/' $newfile.cpp