home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- program="`/usr/bin/basename $0`"
-
- usage () {
- echo "Usage: $program [SOURCE_DIRECTORY] [-o OUTPUT_DIRECTORY]"
- echo " Converts 3.x nib files in SOURCE_DIRECTORY to 4.0 nib files."
- echo " Writes the result to OUTPUT_DIRECTORY."
- echo " SOURCE_DIRECTORY defaults to \`.' if unspecified."
- echo " OUTPUT_DIRECTORY defaults to SOURCE_DIRECTORY if unspecified."
- }
-
- dirname () {
- /bin/expr "${1-.}/" : '\(/\)[^/]*//*$' \
- \| "${1-.}/" : '\(.*[^/]\)//*[^/][^/]*//*$' \
- \| .
- }
-
- error_filter () {
- egrep -v "\*\*\*warning: Object compatibility method '[_:a-zA-Z0-9]*' in class [_a-zA-Z0-9]* has been executed at least once"
- }
-
- while /bin/test $# -gt 0; do
- case "$1" in
- -o)
- if /bin/test $# -lt 2; then
- echo "$program: -o option requires an argument."
- usage
- exit 1
- else
- OUTPUT_DIRECTORY="$2"
- shift; shift
- fi
- ;;
-
- -*)
- echo "$program: Unknown option: $1"
- usage
- exit 1
- ;;
-
- *)
- if /bin/test -n "$SOURCE_DIRECTORY"; then
- echo "$program: Too many arguments."
- usage
- exit 1
- else
- SOURCE_DIRECTORY="$1"
- shift
- fi
- ;;
-
- esac
- done
-
- if /bin/test -z "$SOURCE_DIRECTORY"; then
- SOURCE_DIRECTORY=.
- fi
-
- if /bin/test -z "$OUTPUT_DIRECTORY"; then
- OUTPUT_DIRECTORY="$SOURCE_DIRECTORY"
- fi
-
- echo "Finding nibs in \`$SOURCE_DIRECTORY'..."
-
- cd $SOURCE_DIRECTORY
- for nib in `/usr/bin/find . -type d -name '*.nib' -print` ; do
- if /bin/test -f "$nib/data.nib"; then
- output_nib=$OUTPUT_DIRECTORY/$nib
- directory="`dirname $output_nib`"
- if /bin/test ! -d "$directory"; then
- mkdirs "$directory"
- fi
-
- echo "Converting $nib..."
- if /bin/test -d "$output_nib" -o -f "$output_nib"; then
- nibTool "$nib" --write "$output_nib~+~" 2>&1 | error_filter
- mv "$output_nib" "$output_nib~"
- mv "$output_nib~+~" "$output_nib"
- else
- nibTool "$nib" --write "$output_nib" 2>&1 | error_filter
- fi
- fi
- done
-