90 lines
2.3 KiB
Bash
Executable File
90 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function checkProjectName(){
|
|
# check, if volume does not exist yet
|
|
name=$1
|
|
# should not be empty
|
|
[ -n "$read_project_name" ] || die "Empty project name is not allowed"
|
|
if [ -d /data/$dir_prefix-$name ]
|
|
then
|
|
die "Target volume for project '$name' exists - please try again!"
|
|
fi
|
|
}
|
|
|
|
function generateSSHKey(){
|
|
# generates ssh key with $1 path and $2 description
|
|
local keyfile=$1/identity
|
|
local description=$2
|
|
echo "Creating SSH deployment key.."
|
|
ssh-keygen -f $keyfile -t ed25519 -C "$description" -N ""
|
|
echo
|
|
echo "Public key is:"
|
|
echo "-----------------------------------------------------"
|
|
cat $keyfile.pub
|
|
echo "-----------------------------------------------------"
|
|
echo -n "Please make sure that key is set up at your git hosting and press enter.."
|
|
read
|
|
}
|
|
|
|
|
|
function reuseSSHKey(){
|
|
# pastes ssh key to file $1 with vim
|
|
local keyfile=$1
|
|
local scratch=$(mktemp)
|
|
echo "# Please paste private ssh key here and save this file" > $scratch
|
|
vim $scratch
|
|
sed -e 's/#.*$//' $scratch > $keyfile
|
|
rm $scratch
|
|
echo "Checking key..."
|
|
chmod 0700 $keyfile
|
|
ssh-keygen -y -f $keyfile -P "" || true # will fail in the end, so script will continue and clean up the mess
|
|
}
|
|
|
|
|
|
root=/data/$dir_prefix-$read_project_name
|
|
# start generating config
|
|
mkdir -p $root/config
|
|
createConfigFile $root/config/cloner.cfg
|
|
|
|
# use ssh config?
|
|
echo -n "Would you like to use SSH auth? ([C]reate new key/[U]se existing key/[N]o) [C/u/n]: "
|
|
read read_ssh
|
|
[ -n "$read_ssh" ] || read_ssh=C
|
|
[[ "$read_ssh" =~ ^[CcUuNn]$ ]] || die "Invalid SSH key option, script is exiting now.."
|
|
|
|
# ssh resolutions?
|
|
# create dir if needed
|
|
[[ "$read_ssh" =~ ^[nN]$ ]] || mkdir -p $root/config/auth/ssh
|
|
|
|
# generate new key
|
|
if [[ "$read_ssh" =~ ^[Cc]$ ]]
|
|
then
|
|
# create key
|
|
generateSSHKey $root/config/auth/ssh "cloner-deploy-key-$read_project_name"
|
|
fi
|
|
|
|
# use existing key
|
|
if [[ "$read_ssh" =~ ^[Uu]$ ]]
|
|
then
|
|
# load key
|
|
reuseSSHKey $root/config/auth/ssh/identity
|
|
fi
|
|
|
|
|
|
echo "First run - initialization of repos..."
|
|
if ! env BASE=$root run-checker
|
|
then
|
|
echo -n "First run failed - remove directory? [Y/n]"
|
|
read read_cleanup
|
|
[ -n "$read_cleanup" ] || read_cleanup=Y
|
|
if [[ "$read_cleanup" =~ ^[Yy]$ ]]
|
|
then
|
|
rm -Rf $root
|
|
fi
|
|
else
|
|
createDetectorConfig $root/config/detector.cfg
|
|
echo "Setup has finished!"
|
|
touch $root/.enabled
|
|
fi
|
|
|