home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / OpenStepConversion / UtilityScripts / shellscripts / convertNibs < prev    next >
Encoding:
Text File  |  1996-01-23  |  2.0 KB  |  85 lines

  1. #!/bin/sh
  2.  
  3. program="`/usr/bin/basename $0`"
  4.  
  5. usage () {
  6.   echo "Usage: $program [SOURCE_DIRECTORY] [-o OUTPUT_DIRECTORY]"
  7.   echo "  Converts 3.x nib files in SOURCE_DIRECTORY to 4.0 nib files."
  8.   echo "  Writes the result to OUTPUT_DIRECTORY."
  9.   echo "  SOURCE_DIRECTORY defaults to \`.' if unspecified."
  10.   echo "  OUTPUT_DIRECTORY defaults to SOURCE_DIRECTORY if unspecified."
  11. }
  12.  
  13. dirname () {
  14.   /bin/expr "${1-.}/" : '\(/\)[^/]*//*$' \
  15.     \| "${1-.}/" : '\(.*[^/]\)//*[^/][^/]*//*$' \
  16.     \| .
  17. }
  18.  
  19. error_filter () {
  20.   egrep -v "\*\*\*warning: Object compatibility method '[_:a-zA-Z0-9]*' in class [_a-zA-Z0-9]* has been executed at least once"
  21. }
  22.  
  23. while /bin/test $# -gt 0; do
  24.   case "$1" in
  25.     -o)
  26.       if /bin/test $# -lt 2; then
  27.         echo "$program: -o option requires an argument."
  28.         usage
  29.         exit 1
  30.       else
  31.         OUTPUT_DIRECTORY="$2"
  32.         shift; shift
  33.       fi
  34.       ;;
  35.  
  36.     -*)
  37.       echo "$program: Unknown option: $1"
  38.       usage
  39.       exit 1
  40.       ;;
  41.  
  42.     *)
  43.       if /bin/test -n "$SOURCE_DIRECTORY"; then
  44.         echo "$program: Too many arguments."
  45.         usage
  46.         exit 1
  47.       else
  48.         SOURCE_DIRECTORY="$1"
  49.         shift
  50.       fi
  51.       ;;
  52.  
  53.   esac
  54. done
  55.  
  56. if /bin/test -z "$SOURCE_DIRECTORY"; then
  57.   SOURCE_DIRECTORY=.
  58. fi
  59.  
  60. if /bin/test -z "$OUTPUT_DIRECTORY"; then
  61.   OUTPUT_DIRECTORY="$SOURCE_DIRECTORY"
  62. fi
  63.  
  64. echo "Finding nibs in \`$SOURCE_DIRECTORY'..."
  65.  
  66. cd $SOURCE_DIRECTORY
  67. for nib in `/usr/bin/find . -type d -name '*.nib' -print` ; do
  68.   if /bin/test -f "$nib/data.nib"; then
  69.     output_nib=$OUTPUT_DIRECTORY/$nib
  70.     directory="`dirname $output_nib`"
  71.     if /bin/test ! -d "$directory"; then
  72.       mkdirs "$directory"
  73.     fi
  74.  
  75.     echo "Converting $nib..."
  76.     if /bin/test -d "$output_nib" -o -f "$output_nib"; then
  77.       nibTool "$nib" --write "$output_nib~+~" 2>&1 | error_filter
  78.       mv "$output_nib" "$output_nib~"
  79.       mv "$output_nib~+~" "$output_nib"
  80.     else
  81.       nibTool "$nib" --write "$output_nib" 2>&1 | error_filter
  82.     fi
  83.   fi
  84. done
  85.