mirror of https://github.com/aristocratos/bashtop
116 lines
3.3 KiB
Bash
Executable File
116 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
|
|
# this little script is just to automate the creation of the .deb package under debian and also the automatic installation of the bashtop program in the system.
|
|
# How does it work?
|
|
# ----
|
|
# It parses the bashtop file to retrieve the last version specified in the script to allow a fresh creation of the .deb package
|
|
# +by also retrieving the most recent version of the script then it proceeds to the installation ...
|
|
|
|
set -o errexit
|
|
#set -x # just for debuging
|
|
|
|
readonly file_src_location=../bashtop # bashtop location ^
|
|
readonly ubin=usr/bin/
|
|
readonly file_name=${file_src_location##*/}
|
|
readonly ctrl_file=DEBIAN/control
|
|
readonly architecture=`dpkg --print-architecture` # for all architectures
|
|
readonly root_uid=0
|
|
declare version build_version
|
|
|
|
[[ ROOT::PERMISSION ]]
|
|
{
|
|
[[ $UID -ne ${root_uid} ]] && {
|
|
echo -e "require root user"
|
|
exit $UID
|
|
}
|
|
}
|
|
|
|
[[ ARGUMENTS::HANDLER ]]
|
|
{
|
|
if [[ -n $1 ]] ; then
|
|
case $1 in
|
|
"--remove")
|
|
[[ -x /${ubin}/${file_name} ]] && {
|
|
dpkg --remove ${file_name}
|
|
test $? -eq 0 && exit 0
|
|
}||{
|
|
echo -e "~ nothing todo: bashtop is removed "
|
|
exit 0
|
|
}
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
echo -e "+ building package ..."
|
|
sleep 1
|
|
[[ FILECHECK ]]
|
|
{
|
|
#+ require bashtop file to read inside
|
|
[[ ! -f ${file_src_location} ]] && {
|
|
echo -e "undefine ${file_name}"
|
|
exit 3 # just a basic exit
|
|
}|| {
|
|
echo -e "+ populate DEB folder "
|
|
[[ -d $ubin ]] || mkdir -p $ubin
|
|
`cp $file_src_location $ubin`
|
|
}
|
|
|
|
#+ require control file to write inside
|
|
[[ ! -f ${ctrl_file} ]] && {
|
|
echo -e "undefined ${ctrl_file##*/}"
|
|
exit 3
|
|
}
|
|
}
|
|
[[ IO::SEMVERS ]]
|
|
{
|
|
echo -e "+ fetching the lastest version of ${file_name}"
|
|
|
|
get_current_version () {
|
|
local watch_version=`grep -i "declare version" ${file_src_location}`
|
|
local semvers=${watch_version##*=}
|
|
echo ${semvers:1:-1}
|
|
}
|
|
|
|
set_new_version_ctrl() {
|
|
local catch_package_version=`grep -i version ${ctrl_file}`
|
|
version=${catch_package_version%%:*}
|
|
build_version=${catch_package_version##*:}
|
|
[[ -n $1 ]] && build_version=$1
|
|
version+=": ${build_version}"
|
|
|
|
echo -e "+ set new version control"
|
|
`sed -i "s/$catch_package_version/${version}/g" ${ctrl_file}`
|
|
}
|
|
|
|
set_new_version_ctrl $(get_current_version)
|
|
}
|
|
|
|
[[ PACKAGER_BUILD::DEB ]]
|
|
{
|
|
build_for_debian_base (){
|
|
local debian_package_name=${file_name}_${build_version}-${architecture}.deb
|
|
#echo ${debian_package_name}
|
|
dpkg-deb --build ../DEB ${debian_package_name}
|
|
test $? -eq 0 && {
|
|
if [[ -f ${debian_package_name} ]] ;then
|
|
dpkg -i ${debian_package_name}
|
|
[[ $? -eq 0 ]] && {
|
|
exit $?
|
|
}||{
|
|
echo -e "Installation failed"
|
|
exit $?
|
|
}
|
|
fi
|
|
}||{
|
|
echo -e "build failed"
|
|
exit 5
|
|
}
|
|
}
|
|
|
|
build_for_debian_base
|
|
}
|
|
|
|
|