#! /bin/sh
#----------------------------------------------------------------------------
# /var/install/bin/package-search - Search package
#
# Creation: 2012-01-31 hbfl
# Last Update: $Id$
#
# Copyright (c) 2012-@@YEAR@@ the eisfair team, team(at)eisfair(dot)org
#
# Usage: package-search
# or
# package-search package-name
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#----------------------------------------------------------------------------
# include eislib
. /var/install/include/eislib
# set ask
ask=/var/install/bin/ask
#debug_package_search=true
if ${debug_package_search:-false}
then
exec 2>/tmp/$(basename ${0})-trace$$.log
set -x
ask_debug=true
export ask_debug
fi
## ---------------------------------------------------------------------------
## {u}mount cdrom or usb devices
## ---------------------------------------------------------------------------
#mount_cdrom ()
#{
# if ! mount | grep ' /cdrom' >/dev/null
# then
# mount /cdrom
# retvar=${?}
# if [ ${retvar} -eq 0 ]
# then
# _cdrom_mounted=true
# _mounted=true
# echo "DATETIME" >/tmp/cdrom_installer_mounted
# fi
# else
# _mounted=true
# fi
#}
#
#umount_cdrom ()
#{
# if "${_cdrom_mounted:-false}"
# then
# umount /cdrom
# _cdrom_mounted=false
# fi
#}
#
#mount_usb ()
#{
# # extract usb/sd.. from $url like
# # file:///usb/sd??/download/packages/eis-list.txt
# usb_dev=`echo ${eislist} | cut -d/ -f3-5`
# if ! mount | grep "${usb_dev}" >/dev/null
# then
# /var/install/bin/system-devices-mount-usb
# retvar=${?}
# if [ ${retvar} -eq 0 ]
# then
# _usb_mounted=true
# _mounted=true
# echo "DATETIME" >/tmp/usb_installer_mounted
# fi
# else
# _mounted=true
# fi
#}
#
#umount_usb ()
#{
# if "${_usb_mounted:-false}"
# then
# /var/install/bin/system-devices-umount-usb
# retvar=${?}
# if [ ${retvar} -eq 0 ]
# then
# _usb_mounted=false
# fi
# fi
#}
# ---------------------------------------------------------------------------
# remove check file
# ---------------------------------------------------------------------------
remove_check_file ()
{
if ${_index_get:-false}
then
/var/install/bin/post-setup-packages-menu
fi
}
# ---------------------------------------------------------------------------
# show question
# ---------------------------------------------------------------------------
show_question ()
{
while [ "${#}" -gt "0" ]
do
case "${1}" in
-l)
_location="${2}"
shift 2
;;
esac
done
clrhome
mecho --info "Package search"
echo
_ask_tmpfile=$(mktemp -t XXXXXXXXXXXXX)
${ask} "Enter your searchstring (ENTER=Return, 0=Exit)" '' "*" >${_ask_tmpfile}
rc=${?}
search="$(cat ${_ask_tmpfile})"
rm -f ${_ask_tmpfile}
if [ ${rc} = 255 ]
then
search=0
fi
case ${search} in
'')
umount_cdrom
umount_usb
exit 0
;;
0)
umount_cdrom
umount_usb
exit 127
;;
*)
${_location} -p "${search}"
;;
esac
}
# ---------------------------------------------------------------------------
# search pack-eis
# ---------------------------------------------------------------------------
search_pack_eis ()
{
# this functio was covered from packeis-search, but packeis-search
# was obsolet in the future
# while [ "${#}" -gt "0" ]
# do
# case "${1}" in
# -p)
# search="${2}"
# shift 2
# ;;
# esac
# done
# encoded_search=$(echo ${search} | sed 's/ /%20/')
# /var/install/bin/install-package "http://www.pack-eis.de/index.php?q=${encoded_search}&type=eis-list"
# packeis_ret=${?}
# if [ ${packeis_ret} -eq 127 ]
# then
# exit 127
# fi
# if "${show_question:-true}"
# then
# show_question -l "search_pack_eis"
# fi
encoded_search=$(echo ${pname} | sed 's/ /%20/')
_list_tmp_file="/var/tmp/${encoded_search}-eislist"
if ${wget} -t 1 -q --spider http://www.pack-eis.de/index.php
then
${wget} -q -O ${_list_tmp_file} "http://www.pack-eis.de/index.php?q=${encoded_search}&type=eis-link"
if grep -q '#' ${_list_tmp_file}
then
if ! ${_header:-false}
then
write_header
fi
grep '#' ${_list_tmp_file} |
grep -v 'Results' >> $eislist_txt_file
rm -f ${_list_tmp_file}
return 0
fi
rm -f ${_list_tmp_file}
fi
}
# ---------------------------------------------------------------------------
# search installer
# ---------------------------------------------------------------------------
search_installer ()
{
while [ "${#}" -gt "0" ]
do
case "${1}" in
-p)
search="${2}"
shift 2
;;
esac
done
index_txt_file="/tmp/index.txt"
eislist_txt_file="/var/tmp/list-packages-list.txt"
wget=/usr/local/bin/wget.sh
_default_base=1.6.1
get_indextxt
# get the required base version from index.txt, or set the default
_req_base=$(awk '/^# required_base/ {print $3}' ${index_txt_file} 2>/dev/null)
if [ -z "${_req_base}" ]
then
_req_base=${_default_base}
fi
# check for installed base version
installed_base=$(/var/install/bin/check-version base ${_req_base})
case ${installed_base} in
not-installed|new)
_inst_base=false
;;
*)
_inst_base=true
;;
esac
get_packages ${search}
ret=${?}
if [ ${ret} -eq 0 ]
then
/var/install/bin/install-package "file://${eislist_txt_file}"
fi
rm -f ${eislist_txt_file}
# rm -f ${index_txt_file}
show_question -l "search_installer"
}
# ---------------------------------------------------------------------------
# get index.txt
# ---------------------------------------------------------------------------
get_indextxt ()
{
_clear=''
if [ ! -s /tmp/index.txt ]
then
_clear="--clear"
# _index_get=true
fi
# get-index handle multiple index.txt files
/var/install/bin/get-index ${_clear}
_index_ret=${?}
if [ ${_index_ret} -eq 0 ]
then
return 0
else
return 1
fi
}
# ---------------------------------------------------------------------------
# write header
# ---------------------------------------------------------------------------
write_header ()
{
{
echo "# Temporary package list for ${pname} packages"
echo "# Copyright (c) 2001-`date +%Y` the eisfair team, team(at)eisfair(dot)org"
echo "# index.txt"
echo "#"
echo "# Available packages:"
} > $eislist_txt_file
_header=true
}
# ---------------------------------------------------------------------------
# get packages
# ---------------------------------------------------------------------------
get_packages ()
{
pname="$1"
if [ -f $index_txt_file -a -s $index_txt_file ]
then
pnames=$(grep -i "${pname}" ${index_txt_file} | grep -v '#')
if [ -n "${pnames}" ]
then
# package found
write_header
echo "${pnames}" |
while read line
do
set -- ${line}
case ${4} in
*:*) pfile_name=${4} ;;
*) pfile_name=${index_path}/${4} ;;
esac
case ${1} in
base)
# write eis-list entry, for base without version
echo "# ${pfile_name}" >> $eislist_txt_file
;;
*)
# write eis-list entry
echo "# ${pfile_name}" >> $eislist_txt_file
;;
esac
done
search_pack_eis
_header=false
return 0
else
search_pack_eis
_header=false
return ${?:-1}
fi
pnames=""
fi
}
# ---------------------------------------------------------------------------
# main
# ---------------------------------------------------------------------------
if [ -n "${1}" ]
then
show_question=false
search="${1}"
_index_get=true
search_installer -p "${search}"
remove_check_file
exit 0
fi
show_question -l "search_installer"
# ---------------------------------------------------------------------------
# end
# ---------------------------------------------------------------------------