#!/bin/bash # Source config file . ./setup.conf # Clone latest gitmirrors repo into local project folder # and move it into correct locstion for project. for group in "${groupArray[@]}"; do git clone $gitmirrorsRepo ~/$projectLocation/mirrormanagement/$group chmod 755 ~/$projectLocation/mirrormanagement/$group/*.sh sed "10s,.*,user_home=\"/home/${USER}/gitmirrors-bs\"," ~/$projectLocation/mirrormanagement/$group/config.sh.SAMPLE > ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "37s/.*/gitlab_namespace=\"${group}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "39s,.*,gitlab_url=\"${gitlabURL}\"," ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "42s/.*/gitlab_user=\"${gitlabUser}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "50s/.*/http_remote=true/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "58s/.*/issues_enabled=\"${issues_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "59s/.*/wall_enabled=\"${wall_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "60s/.*/wiki_enabled=\"${wiki_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "61s/.*/snippets_enabled=\"${snippets_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "62s/.*/merge_requests_enabled=\"${merge_requests_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "63s/.*/public=\"${public}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh done # Generate a ssh key echo -e "\n\n\n" | ssh-keygen -t rsa # Generate ssh server config cat > ~/.ssh/config < ./private_token # Generate cron job creation script. cat > setcron < update <<'EOF' #!/bin/bash # Source config file . ./setup.conf for group in "${groupArray[@]}"; do (cd ~/$projectLocation/mirrormanagement/$group && git pull) chmod 755 ~/$projectLocation/mirrormanagement/$group/*.sh sed "10s,.*,user_home=\"/home/${USER}/gitmirrors-bs\"," ~/$projectLocation/mirrormanagement/$group/config.sh.SAMPLE > ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "37s/.*/gitlab_namespace=\"${group}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "39s,.*,gitlab_url=\"${gitlabURL}\"," ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "42s/.*/gitlab_user=\"${gitlabUser}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "50s/.*/http_remote=true/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "58s/.*/issues_enabled=\"${issues_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "59s/.*/wall_enabled=\"${wall_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "60s/.*/wiki_enabled=\"${wiki_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "61s/.*/snippets_enabled=\"${snippets_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "62s/.*/merge_requests_enabled=\"${merge_requests_enabled}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh sed -i "63s/.*/public=\"${public}\"/" ~/$projectLocation/mirrormanagement/$group/config.sh done echo "All mirror group's gitlab-mirror dependancies have been updated." EOF chmod u+x update # Generate mirror script. cat > mirror <<'EOF' #!/bin/bash # Source config file . ./setup.conf # Setting the arguments for the bash script while getopts g:n:r: option do case "${option}" in g) GROUP=${OPTARG};; n) NAME=${OPTARG};; r) REPO=${OPTARG};; esac done # Test to make sure all arguments are specified by the user if [ -z "${GROUP}" ] then echo "No Gitlab group was specified" exit fi if [ -z "${NAME}" ] then echo "No Gitlab repo name was specified" exit fi if [ -z "${REPO}" ] then echo "No Github source repo was specified" exit fi # Testing to make sure the group specified is set in the variables wronggroup=0 for group in "${groupArray[@]}"; do if [[ ${GROUP} != "$group" ]] then ((wronggroup=wronggroup+1)) fi done # Main switch script, depending on which group is specified it runs the add mirror in that location if (( "$wronggroup" > ((groupCount-1)) )) then echo "The Gitlab group you specified does not exist, please make sure you select a group in the groups array of this script." exit else for group in "${groupArray[@]}"; do if [[ ${GROUP} = "$group" ]] then echo "Mirroring repo ${REPO} into Gitlab group $group" ~/$projectLocation/mirrormanagement/$group/add_mirror.sh --git --project-name ${NAME} --mirror ${REPO} fi done fi EOF chmod u+x mirror # CREATE A SCRIPT THAT WILL CREATE GROUPS IF NEEDED echo "" echo "Please put this SSH key into your gitlab mirror user." echo "" echo "SSH Key:" cat ~/.ssh/id_rsa.pub