86 lines
2.4 KiB
Bash
Executable File
86 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# bachir soussi chiadmi
|
|
|
|
# get the current position
|
|
_cwd="$(pwd)"
|
|
|
|
echo -e '\033[35m
|
|
_______ __
|
|
/ ____(_) /_
|
|
/ / __/ / __/
|
|
/ /_/ / / /_
|
|
\____/_/\__/
|
|
\033[0m'
|
|
echo -e "\033[35;1mCreate new git barre repos and deploy script\033[0m"
|
|
|
|
|
|
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
|
|
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
|
|
|
|
# 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
|
|
|
|
# setup bare repositorie to push to
|
|
mkdir ~/git-repositories
|
|
mkdir ~/git-repositories/"$_bare_name".git
|
|
cd ~/git-repositories/"$_bare_name".git
|
|
git init --bare
|
|
|
|
# add deploy script
|
|
if [ "$_drupal" = "yes" ]; then
|
|
cp "$_cwd"/assets/deploy-drupal.sh "$_prod_folder_path"/deploy.sh
|
|
else
|
|
cp "$_cwd"/assets/deploy-simple.sh "$_prod_folder_path"/deploy.sh
|
|
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 "$_cwd"/assets/git-pre-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive
|
|
cp "$_cwd"/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 "* * *"
|