#!/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