openh264/test/encoder_binary_comparison/Scripts/run_SafeDelete.sh
2014-07-08 13:15:57 -04:00

250 lines
6.3 KiB
Bash
Executable File

#!/bin/bash
#*******************************************************************************
# Encoder binary comparison test model
# -- Compared with benchmark version using SHA-1 string
# -- Test bit stream under folder openh264/res
# -- SHA-1 string of benchmark version for all cases of all bit streams
# under folder openh264/test/encoder_binary_comparion/SHA1Table
# -- For more detail,please refer to file AboutTest.
#
#brief:
# -- Usage: ./run_SafeDelere.sh $DeleteItermPath
# eg: 1 ./run_SafeDelere.sh tempdata.info --->delete only one file
# eg: 2 ./run_SafeDelere.sh ../TempDataFolder --->delete entire folder
# ./run_SafeDelere.sh /opt/TempData/ABC --->delete entire folder ABC
#
# date: 10/06/2014 Created
#*******************************************************************************
#usage: runGetFileName $FilePath
runGetFileName()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFileName \$FilePath"
return 1
fi
local PathInfo=$1
local FileName=""
if [[ $PathInfo =~ ^"/" ]]
then
FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'`
echo "${FileName}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'`
echo "${FileName}"
return 0
else
FileName=${PathInfo}
echo "${FileName}"
return 0
fi
}
#******************************************************************************************************
#usage: runGetFileFullPath $FilePathInfo
#eg: current path is /opt/VideoTest/openh264/ABC
# runGetFileFullPath abc.txt --->/opt/VideoTest/openh264/ABC
# runGetFileFullPath ../123.txt --->/opt/VideoTest/openh264
# runGetFileFullPath /opt/VieoTest/456.txt --->/opt/VieoTest
runGetFileFullPath()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFileFullPath \$FilePathInfo "
return 1
fi
local PathInfo=$1
local FullPath=""
local CurrentDir=`pwd`
if [[ $PathInfo =~ ^"/" ]]
then
FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'`
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'`
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
else
FullPath=${CurrentDir}
echo "${FullPath}"
return 0
fi
}
#******************************************************************************************************
#usage: runGetFolderFullPath $FolderPathInfo
#eg: current path is /opt/VideoTest/openh264/ABC
# runGetFolderFullPat SubFolder --->/opt/VideoTest/openh264/ABC/ SubFolder
# runGetFolderFullPat ../EFG --->/opt/VideoTest/openh264/EFG
# runGetFolderFullPat /opt/VieoTest/MyFolder --->/opt/VieoTest/MyFolder
runGetFolderFullPath()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFolderFullPath \$FolderPathInfo "
return 1
fi
local PathInfo=$1
local FullPath=""
local CurrentDir=`pwd`
if [[ $PathInfo =~ ^"/" ]]
then
FullPath=${PathInfo}
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
cd ${PathInfo}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
else
FullPath="${CurrentDir}/${PathInfo}"
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
fi
}
#******************************************************************************************************
#usage: runUserNameCheck $whoami
runUserNameCheck()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runUserNameCheck \$whoami"
return 1
fi
local UserName=$1
if [ ${UserName} = "root" ]
then
echo ""
echo "*********************************************"
echo "delete files under root is not allowed"
echo "detected by run_SafeDelere.sh"
return 1
else
echo ""
return 0
fi
}
#******************************************************************************************************
#usage: runFolderLocationCheck $FullPath
runFolderLocationCheck()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runFolderLocationCheck \$FullPath"
return 1
fi
local Location=$1
local FileDirDepth=`echo ${Location} | awk 'BEGIN {FS="/"} {print NF}'`
#for other non-project folder data protection
#eg /opt/VideoTest/DeletedItem depth=4
if [ $FileDirDepth -lt 5 ]
then
echo ""
echo "*********************************************"
echo "FileDepth is $FileDirDepth, and it is less thab the minimum depth(5)"
echo "unsafe delete! try to delete non-project related files: $FileDir"
echo "detected by run_SafeDelere.sh"
return 1
fi
return 0
}
#******************************************************************************************************
#usage runSafeDelete $Pathinfo
runSafeDelete()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage runSafeDelete \FileFullPath"
return 1
fi
local PathInfo=$1
local UserName=`whoami`
local FullPath=""
local DeleteIterm=""
local FileName=""
#user validity check
runUserNameCheck ${UserName}
if [ ! $? -eq 0 ]
then
return 1
fi
#get full path
if [ -d $PathInfo ]
then
FullPath=`runGetFolderFullPath ${PathInfo} `
elif [ -f $PathInfo ]
then
FullPath=`runGetFileFullPath ${PathInfo} `
else
echo "delete iterm does not exist"
echo "detected by run_SafeDelere.sh"
return 1
fi
#location validity check
runFolderLocationCheck ${FullPath}
if [ ! $? -eq 0 ]
then
return 1
fi
#delete file/folder
if [ -d $PathInfo ]
then
DeleteIterm=${FullPath}
echo "deleted folder is: $DeleteIterm"
rm -rf ${DeleteIterm}
elif [ -f $PathInfo ]
then
FileName=`runGetFileName ${PathInfo}`
DeleteIterm="${FullPath}/${FileName}"
echo "deleted file is: $DeleteIterm"
rm ${DeleteIterm}
fi
echo ""
}
PathInfo=$1
runSafeDelete $PathInfo