diff --git a/bin/gitbarrerepos.sh b/bin/gitbarrerepos.sh index a6f4494..3e99a66 100755 --- a/bin/gitbarrerepos.sh +++ b/bin/gitbarrerepos.sh @@ -12,86 +12,118 @@ echo -e '\033[35m \____/_/\__/ \033[0m' echo -e "\033[35;1mCreate new git barre repos and deploy script\033[0m" +echo "Git barre repo will be installed in chosen user home directory" +echo "git prod repos will be installed in public_html directory of provided domain, the domain have to exists as shortcut in chosen user/www before running this script. Please run first vhost.sh script and say yes to the question create a shortcut !" -# get the current position -_cwd="$(pwd)" -# check for assets forlder -_assets="$_cwd/assets" -if [ ! -d "$_assets" ]; then - _assets="$_cwd/../assets" +while [ "$vh" != "yes" ] && [ "$vh" != "no" ] +do + echo -n "Should we create a barre repo? [yes|no] " + read vh + # vh=${vh:-y} +done +if [ "$vh" = "yes" ]; then + + + # get the current position + _cwd="$(pwd)" + # check for assets forlder + _assets="$_cwd/assets" if [ ! -d "$_assets" ]; then - echo "!! can't find assets directory !!" + _assets="$_cwd/../assets" + if [ ! -d "$_assets" ]; then + echo "!! can't find assets directory !!" + exit + fi + fi + + # if $user var does not exists (vhost.sh ran directly) ask for it + if [ -z ${user+x} ]; then + while [ "$user" = "" ] + do + read -p "enter an existing user name ? " user + if [ "$user" != "" ]; then + # check if user already exists + if id "$user" >/dev/null 2>&1; then + read -p "is user name $user correcte [y|n] " validated + if [ "$validated" = "y" ]; then + break + else + user="" + fi + else + echo -e "user $user doesn't exists, you must provide an existing user" + user="" + fi + fi + done + fi + + + while [ "$_domain" = "" ] + do + read -p "enter a domain name ? " _domain + if [ "$_domain" != "" ]; then + read -p "is domain $_domain correcte [y|n] " validated + if [ "$validated" = "y" ]; then + break + else + _domain="" + fi + fi + done + + # ask for simple php conf or drupal conf + while [ "$_drupal" != "yes" ] && [ "$_drupal" != "no" ] + do + echo -n "Is your site is a drupal one? [yes|no] " + read _drupal + done + + # TODO check for /home/"$user"/www/"$_domain" + if [ ! -d /home/"$user"/www/"$_domain" ]; then + echo "/home/$user/www/$_domain does not exists !" exit fi -fi + # setup bare repositorie to push to + mkdir /home/"$user"/git-repositories + mkdir /home/"$user"/git-repositories/"$_domain".git + cd /home/"$user"/git-repositories/"$_domain".git + git init --bare -while [ "$_bare_name" = "" ] -do - read -p "enter the bare repos folder name ? " _bare_name - if [ "$_bare_name" != "" ]; then - read -p "is bare folder name $_bare_name correcte [y|n] " validated - if [ "$validated" = "y" ]; then - break - else - _bare_name="" - fi + # add deploy script + if [ "$_drupal" = "yes" ]; then + cp "$_assets"/deploy-drupal.sh /home/"$user"/www/"$_domain"/deploy.sh + else + cp "$_assets"/deploy-simple.sh /home/"$user"/www/"$_domain"/deploy.sh fi -done -while [ "$_prod_folder_path" = "" ] -do - read -p "enter the prod folder path (must be a public_html parent's) ? " _prod_folder_path - if [ "$_prod_folder_path" != "" ]; then - # TODO check if path exists - read -p "is prod folder path $_prod_folder_path correcte [y|n] " validated - if [ "$validated" = "y" ]; then - break - else - _prod_folder_path="" - fi - fi -done + # create hooks that will update the site repo + cp "$_assets"/git-pre-receive /home/"$user"/git-repositories/"$_domain".git/hooks/pre-receive + cp "$_assets"/git-post-receive /home/"$user"/git-repositories/"$_domain".git/hooks/post-receive -# ask for simple php conf or drupal conf -while [ "$_drupal" != "yes" ] && [ "$_drupal" != "no" ] -do - echo -n "Is your site is a drupal one? [yes|no] " - read _drupal -done + sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_domain".git/hooks/pre-receive + sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_domain".git/hooks/post-receive -# setup bare repositorie to push to -mkdir ~/git-repositories -mkdir ~/git-repositories/"$_bare_name".git -cd ~/git-repositories/"$_bare_name".git -git init --bare + chown -R "$user":"$user" /home/"$USER"/git-repositories -# add deploy script -if [ "$_drupal" = "yes" ]; then - cp "$_assets"/deploy-drupal.sh "$_prod_folder_path"/deploy.sh + cd /home/"$USER"/git-repositories/"$_domain".git/hooks/ + chmod +x post-receive pre-receive + + # setup git repo on site folder + cd /home/"$user"/www/"$_domain"/public_html + git init + # link to the bare repo + git remote add origin /home/"$user"/git-repositories/"$_domain".git + + chown -R "$user":"$user" /home/"$user"/www/"$_domain"/public_html + + cd "$_cwd" + # done + echo "git repos for $_domain install succeed" + echo "your site stay now to /home/$user/www/$_domain" + echo "you can push updates on prod branch through $user@IP.IP.IP.IP:git-repositories/$_domain.git" + echo "* * *" else - cp "$_assets"/deploy-simple.sh "$_prod_folder_path"/deploy.sh + echo "Git barre repo creation aborted" fi - -# setup git repo on site folder -cd "$_prod_folder_path" -git init -# link to the bare repo -git remote add origin /home/"$USER"/git-repositories/"$_bare_name".git - -# create hooks that will update the site repo -cd ~ -cp "$_assets"/git-pre-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive -cp "$_assets"/git-post-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive - -sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive -sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive - -cd /home/"$USER"/git-repositories/"$_bare_name".git/hooks/ -chmod +x post-receive pre-receive - -# done -echo "git repos for $_bare_name install succeed" -echo "your site stay now to $_prod_folder_path" -echo "you can push updates on prod branch through $USER@IP.IP.IP.IP:git-repositories/$_bare_name.git" -echo "* * *" diff --git a/bin/vhost.sh b/bin/vhost.sh index 2e3219d..e5e0425 100755 --- a/bin/vhost.sh +++ b/bin/vhost.sh @@ -29,9 +29,9 @@ if [ "$vh" = "y" ]; then while [ "$_domain" = "" ] do - read -p "enter a hostname ? " _domain + read -p "enter a domain name ? " _domain if [ "$_domain" != "" ]; then - read -p "is hostname $_domain correcte [y|n] " validated + read -p "is domain $_domain correcte [y|n] " validated if [ "$validated" = "y" ]; then break else @@ -50,7 +50,7 @@ if [ "$vh" = "y" ]; then # ask for let's encrypt while [ "$_letsencrypt" != "yes" ] && [ "$_letsencrypt" != "no" ] do - echo -e "Let's encrypt" + echo -e "\033[35;1mLet's encrypt \033[0m" echo -e "Let's encrypt needs a public registered domain name with proper DNS records ( A records or CNAME records for subdomains pointing to your server)." echo -n "Should we install let's encrypt certificate with $_domain? [yes|no] " read _letsencrypt