summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadoslaw Stachowiak <radek@gentoo.org>2004-09-26 21:31:55 +0000
committerRadoslaw Stachowiak <radek@gentoo.org>2004-09-26 21:31:55 +0000
commitaa044483cfa24a18da5664ec23adca8bdc594015 (patch)
tree8de4961a641a1bc65ce659d58b0098d232ef67c6 /app-admin/zprod-manager
parentremove need net from init script (diff)
downloadhistorical-aa044483cfa24a18da5664ec23adca8bdc594015.tar.gz
historical-aa044483cfa24a18da5664ec23adca8bdc594015.tar.bz2
historical-aa044483cfa24a18da5664ec23adca8bdc594015.zip
new version 0.2 with fixes.
Diffstat (limited to 'app-admin/zprod-manager')
-rw-r--r--app-admin/zprod-manager/ChangeLog11
-rw-r--r--app-admin/zprod-manager/Manifest5
-rw-r--r--app-admin/zprod-manager/files/0.2/zprod-manager328
-rw-r--r--app-admin/zprod-manager/files/digest-zprod-manager-0.20
-rw-r--r--app-admin/zprod-manager/zprod-manager-0.2.ebuild22
5 files changed, 364 insertions, 2 deletions
diff --git a/app-admin/zprod-manager/ChangeLog b/app-admin/zprod-manager/ChangeLog
index 88f1ad0e5363..455af6923d5d 100644
--- a/app-admin/zprod-manager/ChangeLog
+++ b/app-admin/zprod-manager/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for app-admin/zprod-manager
# Copyright 2003-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-manager/ChangeLog,v 1.8 2004/09/26 09:48:34 batlogg Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-manager/ChangeLog,v 1.9 2004/09/26 21:31:55 radek Exp $
+
+*zprod-manager-0.2 (26 Sep 2004)
+
+ 26 Sep 2004; Radoslaw Stachowiak <radek@gentoo.org>
+ +files/0.2/zprod-manager, +zprod-manager-0.2.ebuild:
+ small: remove unnecessary ZPROD_FLIST_FPATH.
+ small: fixed interactive mode bug in list handling.
+ small: fixed chown to operate only on selected products.
+ BIG: changed chmod of installed products to 770/660 (other have no rights)
26 Sep 2004; Jodok Batlogg <batlogg@gentoo.org>;
zprod-manager-0.1-r1.ebuild:
diff --git a/app-admin/zprod-manager/Manifest b/app-admin/zprod-manager/Manifest
index 8981e3f13ecb..078e48489144 100644
--- a/app-admin/zprod-manager/Manifest
+++ b/app-admin/zprod-manager/Manifest
@@ -1,7 +1,10 @@
+MD5 f389714e6734addcbc05ef6ca09e4139 zprod-manager-0.2.ebuild 543
MD5 7d17331773b3add621f5790debe7d561 zprod-manager-0.1.ebuild 546
-MD5 a2829a50205687aea067c0f57aff0799 ChangeLog 1254
+MD5 35dbfc6cbcff4a75dfe33517f6d124d4 ChangeLog 1633
MD5 1652522405f5936eb29776ef8d5ffa5b metadata.xml 310
MD5 2169eaaad743ab4d9d232c90a1ac7acf zprod-manager-0.1-r1.ebuild 546
MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-zprod-manager-0.1-r1 0
MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-zprod-manager-0.1 0
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-zprod-manager-0.2 0
MD5 6093a6000b6b8a6577e7948f0f180877 files/0.1/zprod-manager 7156
+MD5 9f5238b587912d86d46cb38617ad8475 files/0.2/zprod-manager 7507
diff --git a/app-admin/zprod-manager/files/0.2/zprod-manager b/app-admin/zprod-manager/files/0.2/zprod-manager
new file mode 100644
index 000000000000..3c34870d5542
--- /dev/null
+++ b/app-admin/zprod-manager/files/0.2/zprod-manager
@@ -0,0 +1,328 @@
+#!/bin/bash
+# Gentoo Zope Product selection tool.
+# Copyright 2003 Jason Shoemaker <kutsuya@gentoo.org>
+# Distributed under GPL v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-manager/files/0.2/zprod-manager,v 1.1 2004/09/26 21:31:55 radek Exp $
+
+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"
+
+# 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=
+ if [ $(is_command "${COMMAND_LIST}" ${1})${?} -ne 0 ] ; then
+ RESULT=${?}
+ return ${RESULT}
+ fi
+ 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 ${ZI_PLIST} ; do
+ echo "$CTAGS" |grep ${N} >/dev/null
+ if [ $? -ne 0 ] ; then
+ prod_del ${ZPROD_DIR}/${N} ${ZINST_DIR}
+ fi
+ done
+ for N in ${CTAGS} ; do
+ echo ${ZI_PLIST} |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=$?
+
+ for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") ; do
+ # setting owner and group as in Products folder, so we can compile
+ # python scripts with the zope user
+
+ chown -R `stat -c %U:%G ${2}/Products` ${2}/Products/${N}
+
+ # gives group writing perms (very often need in development teams)
+ # takes all perms from others to comply with 770 instance policy
+ chmod -R g+rwX,o-rwx ${2}/Products/${N}
+ done
+ 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
+
+
+# vim:ts=8
diff --git a/app-admin/zprod-manager/files/digest-zprod-manager-0.2 b/app-admin/zprod-manager/files/digest-zprod-manager-0.2
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/app-admin/zprod-manager/files/digest-zprod-manager-0.2
diff --git a/app-admin/zprod-manager/zprod-manager-0.2.ebuild b/app-admin/zprod-manager/zprod-manager-0.2.ebuild
new file mode 100644
index 000000000000..db5d8f78adb1
--- /dev/null
+++ b/app-admin/zprod-manager/zprod-manager-0.2.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-manager/zprod-manager-0.2.ebuild,v 1.1 2004/09/26 21:31:55 radek Exp $
+
+DESCRIPTION="Gentoo Zope Product selection tool"
+SRC_URI=""
+HOMEPAGE="http://www.gentoo.org/"
+
+SLOT="0"
+LICENSE="GPL-2"
+IUSE=""
+KEYWORDS="~x86 ~ppc ~sparc"
+
+DEPEND=""
+RDEPEND=">=dev-util/dialog-0.7
+ sys-apps/grep
+ sys-apps/sed
+ >=net-zope/zope-2.6.0-r2"
+
+src_install() {
+ dosbin ${FILESDIR}/${PV}/zprod-manager
+}