#!/bin/sh
#
# Based on renameprj
#
# 2018-12-20: Version 1.2
# 2018-12-17: Changed to use GIANT_DATA_DIR instead of BIO_DATA_DIR
# 2014-02-18: Now prints usage when the wrong number of parameters are given.
# 2007-05-07: Fixed subdir handling
# 2007-04-27: Now handles subdirs of capture. i.e.
#               copyprj myproject newdir/newproject

if [ $# != 2 ]; then
  echo
  echo "copyprj 1.2"
  echo
  echo "Usage: copyprj <old name> <new name>"
  echo
  echo "Description:  Copies a project file, the project directory, and "
  echo "all files in the project directory to the new name."
  echo "Do not use the .prj extension when specifying a project name"
  echo "Names are relative to the capture directory."
  echo
  echo "Example: copyprj scenes/001/test1 scenes/001/test2"
  echo
  exit 1
fi

old_name=$1
new_name=$2
if [ "`expr $old_name : '\.'`" != 0 ]; then
  echo "Invalid name: $old_name"
  exit 1
fi
if [ "`expr $new_name : '\.'`" != 0 ]; then
  echo "Invalid name: $new_name"
  exit 1
fi
old_name=`echo "$old_name" | sed 's/\.prj$//'`
new_name=`echo "$new_name" | sed 's/\.prj$//'`
capture_dir=$GIANT_DATA_DIR/capture
old_prj=$capture_dir/$old_name.prj
new_prj=$capture_dir/$new_name.prj
old_dir=$capture_dir/$old_name
new_dir=$capture_dir/$new_name
old_basename=`basename "$old_name"`
new_basename=`basename "$new_name"`
if [ ! -f "$old_prj" ]; then
  echo >&2
  echo "$old_prj does not exist" >&2
  echo >&2
  exit
fi
if [ -e "$new_prj" ]; then
  echo >&2
  echo "$new_prj already exists" >&2
  echo >&2
  exit
fi
if [ ! -d "$old_dir" ]; then
  echo >&2
  echo "$old_dir does not exist" >&2
  echo >&2
  exit
fi
if [ -e "$new_dir" ]; then
  echo >&2
  echo "$new_dir already exists" >&2
  echo >&2
  exit
fi
# Change capture/dir1/name1/name1.bmo to capture/dir2/name2/name2.bmo
# Change capture/dir1/name1/images/1.jpeg to capture/dir2/name2/images/1.jpeg
awk \
-v old_name="$old_name" \
-v old_basename="$old_basename" \
-v new_name="$new_name" \
-v new_basename="$new_basename" \
'
  {
    if (!gsub(old_name"/"old_basename,new_name"/"new_basename)) {
      gsub(old_name,new_name)
    }
    print
  }
' <"$old_prj" >"$new_prj"
if [ $? != 0 ]; then
  echo "Couldn't create $new_prj"
  exit 1
fi
mkdir $new_dir | exit 1
if [ -d $old_dir/images ]; then
  cp -ai $old_dir/images $new_dir/.
fi

for arg in $old_dir/*; do
  newarg=`echo $arg | sed "
s%$old_name/$old_basename%$new_name/$new_basename%
t
s%$old_name%$new_name%
"
`
  cp -ir $arg $newarg
done
