1
0
SEm-Labos/zz-solutions/03-DigitalToAnalogConverter/Scripts/changeDefaultViews.bash
2024-03-15 15:03:34 +01:00

94 lines
3.0 KiB
Bash

#!/bin/bash
#================================================================================
# changeDefaultViews.bash - change HDL Project views
# * Usage master => student: ``changeDefaultViews.bash -v -a masterVersion -n studentVersion``
# * Usage student => master: ``changeDefaultViews.bash -v -a studentVersion -n masterVersion``
# * Usage: add ``-r`` for deleting the specified actual view **dangerous**
#
base_directory="$(dirname "$(readlink -f "$0")")"
pushd $base_directory
base_directory="$base_directory/.."
SEPARATOR='--------------------------------------------------------------------------------'
INDENT=' '
echo "$SEPARATOR"
echo "-- ${0##*/} Started!"
echo ""
#--------------------------------------------------------------------------------
# Parse command line options
#
project_directory=''
actual_view='masterVersion'
new_view='studentVersion'
usage='Usage: changeDefaultViews.bash [-p projectDir] [-r] [-v] [-h]'
while getopts 'p:a:n:rvh' options; do
case $options in
p ) project_directory=$OPTARG;;
a ) actual_view=$OPTARG;;
n ) new_view=$OPTARG;;
r ) delete_actual_view=1;;
v ) verbose=1;;
h ) echo -e $usage
exit 1;;
* ) echo -e $usage
exit 1;;
esac
done
if [ -z "$project_directory" ]; then
project_directory="$base_directory"
else
project_directory="$base_directory/$project_directory"
fi
#-------------------------------------------------------------------------------
# Display info
#
if [ -n "$verbose" ] ; then
echo "$SEPARATOR"
echo "Changing default views for HDL Designer"
echo "${INDENT}in $project_directory"
echo "${INDENT}from $actual_view to $new_view"
if [ -n "$delete_actual_view" ] ; then
echo "Delete all $actual_view in $project_directory"
fi
fi
#-------------------------------------------------------------------------------
# Remove generated and cache files
#
./cleanGenerated.bash
#-------------------------------------------------------------------------------
# Change views in configuration files
#
find $project_directory -type f -name '*._epf' \
| xargs sed -i "s/$actual_view/$new_view/g"
#-------------------------------------------------------------------------------
# Remove all acutal views File
#
if [ -n "$delete_actual_view" ] ; then
project_directory=`realpath $project_directory`
echo $project_directory
echo "Delete $actual_view"
find $project_directory/ -type f -iname "*$actual_view*" -exec echo "rm {}" \;
find $project_directory/ -type f -iname "*$actual_view*" -exec rm {} \;
# For HDL Designer file naming convention
# making uppercase letters to @lowercase masterVersion = master@version
actual_view="$(sed -E s/\([A-Z]\)/@\\L\\1/g <<< $actual_view)"
find $project_directory/ -type f -name "*$actual_view*" -exec echo "rm {}" \;
find $project_directory/ -type f -name "*$actual_view*" -exec rm {} \;
fi
#-------------------------------------------------------------------------------
# Exit
#
echo ""
echo "-- ${0##*/} Finished!"
echo "$SEPARATOR"
popd