#!/bin/bash # -*- coding: utf-8 -*- set -e function die { echo 1>&2 $*; exit 1 } function x { echo "# $@" if [[ -n $YATT_DRYRUN ]]; then return fi "$@" } : ${YATT_SKEL:=min} function setup { local yatt_url=$1 yatt_skel=$2 yatt_localrepo=$3 [[ -r .git ]] || x git init [[ -d lib ]] || x mkdir -p lib if perl_has YATT::Lite; then true; # nop elif (($use_symlink)); then x ln -vs $yatt_localrepo lib/YATT else x git submodule add $yatt_url lib/YATT if [[ -z $cpanm ]]; then echo "Can't find cpanm!" echo "Please install dependencies with \"cpanm --installdeps .\" manually" else ( cd lib/YATT; if [[ -w $(dirname $cpanm) ]]; then x cpanm --installdeps . else x sudo cpanm --installdeps . fi ) fi fi x cp -va $yatt_skel/approot/* . } function perl_has { local m for m in $*; do perl -M$m -e0 >& /dev/null || return 1 done } if ! $(which realpath >/dev/null 2>&1); then function realpath { local fn=$1 if [[ $fn = /* ]]; then echo $fn else echo $(pwd)/$fn fi } fi use_symlink=0 : skel="" repo="" if [[ $0 != "bash" && -r $0 && -x $0 ]]; then skel=$(dirname $(realpath $0)) repo=$(dirname $(dirname $(dirname $skel))) fi cpanm=$(which cpanm 2>/dev/null) || true if ! [[ -n $repo && -d $repo ]]; then # assume remote installation. YATT_GIT_URL=${YATT_GIT_URL:-https://github.com/hkoba/yatt_lite.git} echo Using remote git $YATT_GIT_URL setup "$YATT_GIT_URL" lib/YATT/scripts/skels/$YATT_SKEL else # assume we already have yatt repo YATT_GIT_URL=${YATT_GIT_URL:-$repo} echo Using local git $YATT_GIT_URL if [[ $1 = -s || $1 = -l ]]; then use_symlink=1 fi setup "$YATT_GIT_URL" "$skel" "$repo" fi