first commit
This commit is contained in:
181
bin/kazList.sh
Executable file
181
bin/kazList.sh
Executable file
@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
|
||||
PRG=$(basename $0)
|
||||
SIMU=""
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
|
||||
cd "$(dirname $0)"
|
||||
|
||||
ALL_STATUS=$(docker ps -a --format "{{.ID}} {{.Names}} {{.Status}}")
|
||||
SERVICES_CHOICE="$(getAvailableServices | tr "\n" "|")"
|
||||
SERVICES_CHOICE="${SERVICES_CHOICE%|}"
|
||||
|
||||
usage () {
|
||||
echo "${RED}${BOLD}" \
|
||||
"Usage: $0 [-h] {compose|orga|service} {available|validate|enable|disable|status} [names]...${NL}" \
|
||||
" -h help${NL}" \
|
||||
" compose {available|validate|enable|disable} : list docker-compose name${NL}" \
|
||||
" compose status : status of docker-compose (default available)${NL}" \
|
||||
" service {available|validate} : list services name${NL}" \
|
||||
" service {enable|disable} : list services in orga${NL}" \
|
||||
" service status : status of services in orga${NL}" \
|
||||
" service {${SERVICES_CHOICE}}${NL}" \
|
||||
" : list of orga enable a service ${NL}" \
|
||||
" [compose] in${NL}" \
|
||||
" ${CYAN}$((getAvailableComposes;getAvailableOrgas) | tr "\n" " ")${NC}${NL}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# ========================================
|
||||
compose_available () {
|
||||
echo $*
|
||||
}
|
||||
|
||||
getComposeEnableByProxy () {
|
||||
onList=$(
|
||||
for type in ${KAZ_CONF_DIR}/container-*.list ; do
|
||||
getList "${type}"
|
||||
done)
|
||||
local compose
|
||||
for compose in ${onList} ; do
|
||||
composeFlag="proxy_${compose//-/_}"
|
||||
[[ "${!composeFlag}" == "on" ]] && echo ${compose}
|
||||
done
|
||||
}
|
||||
|
||||
compose_validate () {
|
||||
echo $(
|
||||
for type in ${KAZ_CONF_DIR}/container-*.list ; do
|
||||
getList "${type}"
|
||||
done | filterInList $*)
|
||||
}
|
||||
|
||||
compose_enable () {
|
||||
echo $(getComposeEnableByProxy | filterInList $*)
|
||||
}
|
||||
|
||||
compose_disable () {
|
||||
echo $(getAvailableComposes | filterNotInList $(getComposeEnableByProxy) | filterInList $*)
|
||||
}
|
||||
|
||||
compose_status () {
|
||||
for compose in $*; do
|
||||
cd "${KAZ_COMP_DIR}/${compose}"
|
||||
echo "${compose}:"
|
||||
for service in $(docker-compose ps --services 2>/dev/null); do
|
||||
id=$(docker-compose ps -q "${service}" | cut -c 1-12)
|
||||
if [ -z "${id}" ]; then
|
||||
echo " - ${RED}${BOLD}[Down]${NC} ${service}"
|
||||
else
|
||||
status=$(grep "^${id}\b" <<< "${ALL_STATUS}" | sed "s/.*${id}\s\s*\S*\s\s*\(\S*.*\)/\1/")
|
||||
COLOR=$([[ "${status}" =~ Up ]] && echo "${GREEN}" || echo "${RED}")
|
||||
echo " - ${COLOR}${BOLD}[${status}]${NC} ${service}"
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# ========================================
|
||||
service_available () {
|
||||
echo $(getAvailableServices)
|
||||
}
|
||||
|
||||
service_validate () {
|
||||
echo $(getAvailableServices)
|
||||
}
|
||||
|
||||
getServiceInOrga () {
|
||||
for orga in $*; do
|
||||
[[ "${orga}" = *"-orga" ]] || continue
|
||||
local ORGA_DIR="${KAZ_COMP_DIR}/${orga}"
|
||||
ORGA_COMPOSE="${ORGA_DIR}/docker-compose.yml"
|
||||
[[ -f "${ORGA_COMPOSE}" ]] || continue
|
||||
for service in $(getAvailableServices); do
|
||||
case "${service}" in
|
||||
paheko)
|
||||
[ -f "${ORGA_DIR}/usePaheko" ] && echo "${service}"
|
||||
;;
|
||||
wiki)
|
||||
grep -q "\s*dokuwiki:" "${ORGA_COMPOSE}" 2>/dev/null && echo "${service}"
|
||||
;;
|
||||
wp)
|
||||
grep -q "\s*wordpress:" "${ORGA_COMPOSE}" 2>/dev/null && echo "${service}"
|
||||
;;
|
||||
*)
|
||||
grep -q "\s*${service}:" "${ORGA_COMPOSE}" 2>/dev/null && echo "${service}"
|
||||
esac
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
getOrgaWithService() {
|
||||
service="$1"
|
||||
shift
|
||||
case "${service}" in
|
||||
wiki) keyword="dokuwiki" ;;
|
||||
wp) keyword="wordpress" ;;
|
||||
*) keyword="${service}" ;;
|
||||
esac
|
||||
for orga in $*; do
|
||||
[[ "${orga}" = *"-orga" ]] || continue
|
||||
local ORGA_DIR="${KAZ_COMP_DIR}/${orga}"
|
||||
ORGA_COMPOSE="${ORGA_DIR}/docker-compose.yml"
|
||||
[[ -f "${ORGA_COMPOSE}" ]] || continue
|
||||
if [ "${service}" = "paheko" ]; then
|
||||
[ -f "${ORGA_DIR}/usePaheko" ] && echo "${orga}"
|
||||
else
|
||||
grep -q "\s*${keyword}:" "${ORGA_COMPOSE}" 2>/dev/null && echo "${orga}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
service_enable () {
|
||||
echo $(getServiceInOrga $* | sort -u)
|
||||
}
|
||||
|
||||
service_disable () {
|
||||
echo $(getAvailableServices | filterNotInList $(getServiceInOrga $*))
|
||||
}
|
||||
|
||||
service_status () {
|
||||
# ps per enable
|
||||
echo "*** TODO ***"
|
||||
}
|
||||
|
||||
# ========================================
|
||||
|
||||
KAZ_CMD=""
|
||||
case "$1" in
|
||||
'-h' | '-help' )
|
||||
usage
|
||||
;;
|
||||
compose|service)
|
||||
KAZ_CMD="$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
KAZ_OPT=""
|
||||
case "$1" in
|
||||
available|validate|enable|disable|status)
|
||||
KAZ_OPT="$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
if [ "${KAZ_CMD}" = "service" ] && [[ $1 =~ ^(${SERVICES_CHOICE})$ ]]; then
|
||||
KAZ_OPT="$1"
|
||||
shift
|
||||
getOrgaWithService "${KAZ_OPT}" $(filterAvailableComposes $*)
|
||||
exit
|
||||
fi
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
${KAZ_CMD}_${KAZ_OPT} $(filterAvailableComposes $*)
|
Reference in New Issue
Block a user