pad.libre-service.eu-etherpad/bin/plugins/getCorePlugins.sh

40 lines
1.1 KiB
Bash
Raw Normal View History

#!/bin/sh
set -e
newline='
'
pecho () { printf %s\\n "$*"; }
log () { pecho "$@"; }
error () { log "ERROR: $@" >&2; }
fatal () { error "$@"; exit 1; }
mydir=$(cd "${0%/*}" && pwd -P) || exit 1
cd "${mydir}/../.."
pdir=$(cd .. && pwd -P) || exit 1
plugins=$("${mydir}/listOfficialPlugins") || exit 1
for d in ${plugins}; do
log "============================================================"
log "${d}"
log "============================================================"
fd=${pdir}/${d}
repo=git@github.com:ether/${plugin}.git
[ -d "${fd}" ] || {
log "Cloning ${repo} to ${fd}..."
(cd "${pdir}" && git clone "${repo}" "${d}") || exit 1
} || exit 1
log "Fetching latest commits..."
(cd "${fd}" && git pull --ff-only) || exit 1
log "Getting plugin name..."
pn=$(cd "${fd}" && npx -c 'printf %s\\n "${npm_package_name}"') || exit 1
[ -n "${pn}" ] || fatal "Unable to determine plugin name for ${d}"
md=node_modules/${pn}
[ -d "${md}" ] || {
log "Installing plugin to ${md}..."
ln -s ../../"${d}" "${md}"
} || exit 1
[ "${md}" -ef "${fd}" ] || fatal "${md} is not a symlink to ${fd}"
done