diff options
author | Jason Shoemaker <kutsuya@gentoo.org> | 2003-02-17 03:05:14 +0000 |
---|---|---|
committer | Jason Shoemaker <kutsuya@gentoo.org> | 2003-02-17 03:05:14 +0000 |
commit | 498941bbd9f33f243d3e173a204d704a6588d9b7 (patch) | |
tree | 3cace866cdf03164ff419b88121889257d7bea96 /app-admin/zprod-update | |
parent | initial ebuild (diff) | |
download | historical-498941bbd9f33f243d3e173a204d704a6588d9b7.tar.gz historical-498941bbd9f33f243d3e173a204d704a6588d9b7.tar.bz2 historical-498941bbd9f33f243d3e173a204d704a6588d9b7.zip |
inital import
Diffstat (limited to 'app-admin/zprod-update')
-rw-r--r-- | app-admin/zprod-update/ChangeLog | 7 | ||||
-rw-r--r-- | app-admin/zprod-update/files/0.1/zprod-update | 313 | ||||
-rw-r--r-- | app-admin/zprod-update/files/digest-zprod-update-0.1 | 0 | ||||
-rw-r--r-- | app-admin/zprod-update/zprod-update-0.1.ebuild | 20 |
4 files changed, 340 insertions, 0 deletions
diff --git a/app-admin/zprod-update/ChangeLog b/app-admin/zprod-update/ChangeLog new file mode 100644 index 000000000000..419ec2563034 --- /dev/null +++ b/app-admin/zprod-update/ChangeLog @@ -0,0 +1,7 @@ +# ChangeLog for app-admin/zprod-update +# Copyright 2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-update/ChangeLog,v 1.1 2003/02/17 03:05:14 kutsuya Exp $ + +*zprod-update-0.1 (16 Feb 2003) + + 16 Feb 2003; Jason Shoemaker <kutsuya@gentoo.org> : Initial import.
\ No newline at end of file diff --git a/app-admin/zprod-update/files/0.1/zprod-update b/app-admin/zprod-update/files/0.1/zprod-update new file mode 100644 index 000000000000..020006e05c8e --- /dev/null +++ b/app-admin/zprod-update/files/0.1/zprod-update @@ -0,0 +1,313 @@ +#!/bin/bash +# Gentoo Zope Product selection tool. +# Copyright 2003 Jason Shoemaker <kutsuya@gentoo.org> +# Distributed under GPL v2 + +VERSION="0.1" +COMMAND_LIST="add del" +ZS_DIR="/usr/share/zope/" +ZI_DIR="/var/lib/zope/" +ZPROD_DIR="/usr/share/zproduct/" + +ZINST_DEFAULT=".default" +ZPROD_FLIST_FNAME=".zfolder.lst" +ZPROD_PLIST_FNAME=".zproduct.lst" +ZPROD_FLIST_FPATH=${ZPROD_DIR}/${ZPROD_FLIST_FNAME} + +# Assume the standard dialog return codes +#DIALOG_CANCEL=1 +#DIALOG_ERROR=-1 +#DIALOG_ESC=-255 +#DIALOG_OK=0 +#DIALOG_ERROR may equal #DIALOG_ESC + +# Return codes used in this program: +E_SUCCESS=0 +E_FAILURE=1 + +E_ZPLIST=20 +E_ZILIST=22 +E_COMMAND=24 + +## copied from zope-config + +zinst_dir_get() +{ + local RESULT=${E_FAILURE} + local LIST=$(ls ${ZI_DIR}) + local LIST_CNT=$(echo ${LIST} | wc -w) + local DLIST= + + if [ ${LIST_CNT} -eq 1 ] ; then + ZINST_DIR=${LIST} + RESULT=${E_SUCCESS} + elif [ ${LIST_CNT} -ne 0 ] ; then + for N in ${LIST} ; do + DLIST="${DLIST} $N -" + done + ZINST_DIR=$(dialog --stdout \ + --title "Zope Instance List" \ + --menu "Select desired zinstance:" 0 0 ${LIST_CNT} ${DLIST}) + RESULT=$? + else + RESULT=${E_ZILIST} # There are no zinstances + fi + ZINST_DIR="${ZI_DIR}${ZINST_DIR}" + return ${RESULT} +} + +# params: none +# TODO: Maybe try to break this function down some more. +# TODO: verify items in ZP_PLIST and ZI_PLIST + +mode_interactive() +{ + local RESULT= + ZP_PLIST=$(ls ${ZPROD_DIR}) + if [ "${ZP_PLIST}" ] ; then + zinst_dir_get + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + ZI_PLIST=$(cat ${ZINST_DIR}/${ZPROD_PLIST_FNAME}) + # Create CLIST for --menu + if [ "${ZI_PLIST}" ] ; then + for N in ${ZP_PLIST} ; do + echo ${ZI_PLIST} |grep ${N} >/dev/null + if [ $? -eq 0 ] ; then + STATUS=ON + else + STATUS=OFF + fi + CLIST="${CLIST} ${N} - ${STATUS}" + done + CTAGS=$(dialog --stdout \ + --backtitle "Select the zproducts you want installed for zinstance(${ZINST_DIR})." \ + --checklist "Select:" 0 0 0 ${CLIST}) + RESULT=$? + CTAGS=$(echo ${CTAGS} | sed -e "s:\"::g") + # Prepare to add and delete zproducts installed in zinstance + if [[ ${RESULT} -eq 0 && "${CTAGS}" ]] ; then + for N in ${ZINST_DIR}/${ZPROD_PLIST_FNAME} ; do + echo "$CTAGS" |grep ${N} + if [ $? -ne 0 ] ; then + prod_del ${ZPROD_DIR}/${N} ${ZINST_DIR} + fi + done + for N in ${CTAGS} ; do + echo ${ZINST_DIR}/${ZPROD_PLIST_FNAME} |grep ${N} >/dev/null + if [ $? -ne 0 ] ; then + prod_add ${ZPROD_DIR}/${N} ${ZINST_DIR} + fi + done + RESULT=$? + elif [ ${RESULT} -eq 0 ] ; then # $CTAGS is empty + for N in ${ZI_PLIST} ; do + prod_del ${ZPROD_DIR}/${N} ${ZINST_DIR} + done + RESULT=$? + fi + else # ZI_PLIST is empty + for N in ${ZP_PLIST} ; do + CLIST="${CLIST} ${N} - 0" + done + CTAGS=$(dialog --stdout \ + --backtitle "Select the zproducts you want installed for zinstance(${ZINST_DIR})." \ + --checklist "Select:" 0 0 0 ${CLIST}) + RESULT=$? + CTAGS=$(echo "${CTAGS}" | sed -e "s:\"::g") + if [[ ${RESULT} -eq 0 && "${CTAGS}" ]] ; then + for N in ${CTAGS} ; do + prod_add ${ZPROD_DIR}/${N} ${ZINST_DIR} + done + fi + fi + fi + else # ZP_PLIST is empty + RESULT=${E_ZPLIST} + fi + return ${RESULT} +} + + +# Parameters: +# $1 = command list +# $2 = command received +# Returns: +# true or false + +is_command() +{ + local RESULT=${E_COMMAND} + local N= + + echo ${1} |grep ${2} >/dev/null + if [ $? -eq 0 ] ; then + RESULT=0 + fi + + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zinstance +# Returns: +# true or false + +is_zinstanceDir() +{ + local RESULT=${E_ZILIST} + # If can't find these, probably not a zinstance. + if [[ -d "${1}/Products" && -d "${1}/var" && -d "${1}/import" && -d "${1}/Extensions" ]] ; then + RESULT=0 + fi + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zproduct +# Returns: +# true or false + +is_zproductDir() +{ + local RESULT=${E_ZPLIST} + # look for something in .zproduct.lst in $1, if we can't find that... + if [ -s "${1}/${ZPROD_FLIST_FNAME}" ] ; then + RESULT=0 + fi + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zinst_dir +# Returns: +# stdout = name of defautl zinstance, if any. + +zinst_default_get() +{ + if [ -s ${1}/${ZINST_DEFAULT} ] ; then + cat ${1}/${ZINST_DEFAULT} + fi +} + +# Parameters: +# $1 = /path/to/zproduct +# $2 = /path/to/zinstance + +prod_add() +{ + local RESULT= + local N= + + for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") ; do +# ln -fs ${1}/${N} ${2}/Products + cp -Ra ${1}/${N} ${2}/Products + done + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + # basically adding ${PF} to .zproduct.lst + echo $(basename $1) >> ${2}/${ZPROD_PLIST_FNAME} + sort -u ${2}/${ZPROD_PLIST_FNAME} > ${2}/.tmp + mv -f ${2}/.tmp ${2}/${ZPROD_PLIST_FNAME} + RESULT=$? + fi + + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zproduct +# $2 = /path/to/zinstance + +prod_del() +{ + local RESULT= + local N= + local PF=$(basename $1) + + grep "${PF}" "${2}/${ZPROD_PLIST_FNAME}" >/dev/null + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + for N in $(cat ${1}/${ZPROD_FLIST_FNAME}) ; do + rm -rf ${2}/Products/${N} + done + # remove zproduct from .zproduct.lst + sed -i -e "s/${PF}$//" -e "/^$/d" ${2}/${ZPROD_PLIST_FNAME} + RESULT=$? + fi + return ${RESULT} +} + +# Parameters: +# $1 = (optional) error message + +mode_help() +{ + echo "$(basename $0) version ${VERSION}" + echo "A Gentoo Zope Product selection tool." + echo + echo "Interactive usage:" + echo -e "\t$(basename $0) [add | del]" + echo "Default zinstance usage:" + echo -e "\t$(basename $0) [add |del] /path/of/zproduct" + echo "Non-interactive usage:" + echo -e "\t$(basename $0) [add | del] /path/of/zproduct /path/of/zinstance/" +} + +# Parameters: +# $1 = command +# $2 = /path/to/zproductDir + +mode_defaultZinst() +{ + local DEFAULT_ZINST=$(zinst_default_get ${ZI_DIR}) + local RESULT=$? + if [ -n "${DEFAULT_ZINST}" ] ; then + mode_explicit ${1} ${2} ${ZI_DIR}/${DEFAULT_ZINST} + RESULT=${?} + fi + return ${RESULT} +} + +# Parameters: +# $1 = command +# $2 = /path/to/zproduct +# $3 = /path/to/zinstance + +mode_explicit() +{ + local RESULT= + if [[ $(is_command "${COMMAND_LIST}" ${1})${?} -eq 0 && \ + $(is_zproductDir ${2})${?} -eq 0 && \ + $(is_zinstanceDir ${3})${?} -eq 0 ]] ; then + if [ ${1} = "add" ] ; then + prod_add ${2} ${3} + RESULT=$? + elif [ ${1} = "del" ] ; then + prod_del ${2} ${3} + RESULT=$? + else + RESULT=${E_COMMAND} + fi + fi + return ${RESULT} +} + +### MAIN + +case "${#}" in + 0) mode_help ;; + 1) mode_interactive ${1} ;; + 2) mode_defaultZinst ${1} ${2} ;; + 3) mode_explicit ${1} ${2} ${3} ;; + *) mode_help "Error: Too many parameters" ;; +esac + +RESULT=$? + +if [ ${RESULT} -ne 0 ] ; then + echo "ERROR ${?}" +fi + + + diff --git a/app-admin/zprod-update/files/digest-zprod-update-0.1 b/app-admin/zprod-update/files/digest-zprod-update-0.1 new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/app-admin/zprod-update/files/digest-zprod-update-0.1 diff --git a/app-admin/zprod-update/zprod-update-0.1.ebuild b/app-admin/zprod-update/zprod-update-0.1.ebuild new file mode 100644 index 000000000000..d11a22828a91 --- /dev/null +++ b/app-admin/zprod-update/zprod-update-0.1.ebuild @@ -0,0 +1,20 @@ +# Copyright 2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-update/zprod-update-0.1.ebuild,v 1.1 2003/02/17 03:05:14 kutsuya Exp $ + +DESCRIPTION="Gentoo Zope Product selection tool." +SRC_URI="" +HOMEPAGE="" +IUSE="" + +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="~x86" + +DEPEND=">=dev-util/dialog-0.7 + sys-apps/grep + sys-apps/sed" + +src_install() { + dosbin ${FILESDIR}/${PV}/zprod-update +} |