#!/bin/bash ### Variables DIALIN_FOLDER="../dialin" DIALIN_SYMLINK="dialin" DIALIN_SOURCE="$DIALIN_FOLDER/leahi_dialin" DIALIN_REPO="git@bitbucket.org:diality-cloud/leahi-dialin.git" DIALIN_BRANCH="staging" ### Errors ERR_MISSING_PARAM_FOLDERNAME=1 ERR_MISSING_PARAM_FILENAME=2 ERR_FAILED_CLONE=3 ERR_FAILED_EXISTS_FOLDER=4 ERR_FAILED_EXISTS_FILE=5 ERR_FAILED_TEST_REPOSITORY=6 ERR_FAILED_SYMLINK=7 ERR_FAILED_CHECKOUT=8 ERR_FAILED_SPARSE_INIT=9 ERR_FAILED_SPARSE_SET=10 ### Notifications TXT_EXIST_ALREADY="Already exists" TXT_SUCCEED_CLONE="The repository cloned successfully" TXT_SUCCEED_SETUP="The repository successfully set up" TXT_CHECKOUT_BRANCH="The repository set to chekout on" ### Functions function succeed() { if ! (( $? )); then echo true return fi echo false } function existsFolder() { local foldername="$1" if [ "$foldername" == "" ]; then echo "ERR_MISSING_PARAM_FOLDERNAME" exit $ERR_MISSING_PARAM_FOLDERNAME fi if [ -d "$foldername" ]; then echo true return fi echo false } function existsLink() { local filename="$1" if [ "$filename" == "" ]; then echo "ERR_MISSING_PARAM_FILENAME" exit $ERR_MISSING_PARAM_FILENAME fi if [ -L "$filename" ]; then echo true return fi echo false } function validLink() { if [ $( readlink $DIALIN_SYMLINK ) == "$DIALIN_SOURCE" ]; then echo true fi echo false } function realPath() { local filename="$1" if $( existsLink $filename ); then if [ -L "$filename" ]; then local linkinfo=$(readlink $filename) local filepath=$(dirname $linkinfo) echo $filepath return fi fi echo $(dirname "$0") } function isRepo() { if ! $(existsFolder "$1"); then echo "ERR_FAILED_EXISTS_FOLDER" exit $ERR_FAILED_EXISTS_FOLDER fi git -C "$1" status > /dev/null 2>&1 echo $(succeed) } ### dialin specific function clone() { if $( existsFolder $DIALIN_FOLDER ); then echo "$TXT_EXIST_ALREADY $DIALIN_SOURCE" return fi echo "Clonning ..." git clone "$DIALIN_REPO" "$DIALIN_FOLDER" -b "$DIALIN_BRANCH" if ! $( succeed ); then echo "ERR_FAILED_CLONE" exit $ERR_FAILED_CLONE fi } function setup() { if ! $( isRepo "$DIALIN_FOLDER" ); then echo "ERR_FAILED_TEST_REPOSITORY" exit $ERR_FAILED_TEST_REPOSITORY fi if ! $( existsFolder $DIALIN_SOURCE ); then echo "$ERR_FAILED_EXISTS_FOLDER $DIALIN_SOURCE" exit $ERR_FAILED_EXISTS_FOLDER fi pushd "$DIALIN_FOLDER" > /dev/null 2>&1 git sparse-checkout init if ! $( succeed ); then echo "ERR_FAILED_SPARSE_INIT" exit $ERR_FAILED_SPARSE_INIT fi git sparse-checkout set \ 'leahi_dialin/ui' \ 'leahi_dialin/common' \ 'leahi_dialin/protocols' \ 'leahi_dialin/utils/conversions.py' \ '!leahi_dialin/common/__init__.py' if ! $( succeed ); then echo "ERR_FAILED_SPARSE_SET" exit $ERR_FAILED_SPARSE_SET fi popd > /dev/null 2>&1 } function link() { if $( existsLink $DIALIN_SYMLINK ); then if ! $( validLink ); then rm $DIALIN_SYMLINK else return fi fi ln -s $DIALIN_SOURCE $DIALIN_SYMLINK if ! $( succeed ); then echo "ERR_FAILED_SYMLINK" exit $ERR_FAILED_SYMLINK fi } ### Main if [ "$1" != "" ]; then DIALIN_BRANCH="$1" echo "$TXT_CHECKOUT_BRANCH $DIALIN_BRANCH" fi cd "$(realPath "$0")" clone setup link echo "$TXT_SUCCEED_SETUP in $DIALIN_SYMLINK" exit 0