################################################################################
#   Copyright (c) [2020] [Radisys]                                        #
#                                                                              #
#   Licensed under the Apache License, Version 2.0 (the "License");            #
#   you may not use this file except in compliance with the License.           #
#   You may obtain a copy of the License at                                    #
#                                                                              #
#       http://www.apache.org/licenses/LICENSE-2.0                             #
#                                                                              #
#   Unless required by applicable law or agreed to in writing, software        #
#   distributed under the License is distributed on an "AS IS" BASIS,          #
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
#   See the License for the specific language governing permissions and        #
#   limitations under the License.                                             #
################################################################################
# This script is used to clean-up the system environment
#!/bin/bash

echo "***** Environment Clean-up Start *****"

if [ -f /etc/os-release ]; then
   . /etc/os-release
   OS=$ID
fi

echo "===> Uninstalling GCC"
if [ $OS == "ubuntu" ] ; then
   sudo apt-get remove -y build-essential
else
   sudo yum groups mark remove -y "Development Tools"
fi

echo ""
echo "===> Uninstalling LKSCTP"
if [ $OS == "ubuntu" ] ; then
   sudo apt-get remove -y libsctp-dev
else
   sudo yum remove -y lksctp-tools-devel
fi

echo ""
echo "===> Uninstalling PCAP"
if [ $OS == "ubuntu" ] ; then
   sudo apt-get remove -y libpcap-dev
else
   sudo yum remove -y libpcap-devel
fi

echo ""
echo "===> Uninstalling XTERM"
if [ $OS == "ubuntu" ] ; then
   sudo apt-get remove -y xterm
else
   sudo yum remove -y xterm
fi

echo ""
echo "***** Environment Clean-up Complete *****"

################################################################################
#                              End of file                                     #
################################################################################

