| @@ -1,206 +0,0 @@ | |||
| #!/bin/bash | |||
| gitea_version=1.0.1 | |||
| tested_gogs_version="0.9.114.1227" | |||
| gogs_binary=gogs | |||
| gitea_binary=gitea | |||
| download_gitea=true | |||
| gitea_path= | |||
| function usage() { | |||
| echo "Optional parameters: [-b Gitea binary] [-i Gitea install dir] [-o gogs binary] [-h help]"; | |||
| exit 1; | |||
| } | |||
| while getopts ":b::i:o:h:" opt; do | |||
| case $opt in | |||
| b) | |||
| gitea_binary=${OPTARG} | |||
| download_gitea=false | |||
| ;; | |||
| i) | |||
| gitea_path=${OPTARG} | |||
| ;; | |||
| o) | |||
| gogs_binary=${OPTARG} | |||
| ;; | |||
| h) | |||
| usage | |||
| ;; | |||
| \?) | |||
| echo -e "Invalid option: -$OPTARG" | |||
| exit 1 | |||
| ;; | |||
| :) | |||
| usage | |||
| exit 1 | |||
| ;; | |||
| esac | |||
| done | |||
| function exitOnError() { | |||
| if [ "$?" != "0" ]; then | |||
| echo -e $1 | |||
| exit 1 | |||
| fi | |||
| } | |||
| function checkBinary() { | |||
| if [ ! -f $1 ]; then | |||
| echo "Unable to find $1" | |||
| exit 1 | |||
| fi | |||
| } | |||
| function continueYN(){ | |||
| while true; do | |||
| echo -e "$1 Yes or No" | |||
| read yn | |||
| case $yn in | |||
| [Yy]* ) break;; | |||
| [Nn]* ) exit 1;; | |||
| * ) echo "Please answer yes or no.";; | |||
| esac | |||
| done | |||
| } | |||
| ########## Binary checks | |||
| if pidof "$gogs_binary" >/dev/null; then | |||
| echo "Please stop gogs before migrating to Gitea" | |||
| exit 1 | |||
| fi | |||
| checkBinary "$gogs_binary" | |||
| if [ ! -x "$gogs_binary" ]; then | |||
| echo "Please make sure that you are running this script as the gogs user" | |||
| exit 1 | |||
| fi | |||
| ########## Version check | |||
| gogs_version=$(./$gogs_binary --version) | |||
| original_IFS=$IFS | |||
| IFS="." && current_version=(${gogs_version#"Gogs version "}) && minimal_version=($tested_gogs_version) | |||
| IFS=$original_IFS | |||
| count=0 | |||
| for i in "${current_version[@]}" | |||
| do | |||
| if [ $i -gt ${minimal_version[$count]} ]; then | |||
| echo -e "!!!--WARNING--!!!\nYour $gogs_version is newer than the tested Gogs version $tested_gogs_version\nUse this script on your own risk\n!!!--WARNING--!!!" | |||
| break | |||
| fi | |||
| let count+=1 | |||
| done | |||
| ########## Disclaimer | |||
| continueYN "This migration script creates a backup before it starts with the actual migration | |||
| If something goes wrong you could always resotre this backup. | |||
| The backups are stored into your gogs folder in gogs-dump-[timestamp].zip file | |||
| Migrating from gogs to gitea, are you sure?" | |||
| ########## gogs dump | |||
| echo "Creating a backup of gogs, this could take a while..." | |||
| ./"$gogs_binary" dump | |||
| exitOnError "Failed to create a gogs dump" | |||
| ########## Create Gitea folder | |||
| if [ -z "$gitea_path" ]; then | |||
| echo "Where do you want to install Gitea?" | |||
| read gitea_path | |||
| fi | |||
| if [ ! -d "$gitea_path" ]; then | |||
| mkdir -p "$gitea_path" | |||
| exitOnError | |||
| fi | |||
| if [ "$(ls -A $gitea_path)" ]; then | |||
| continueYN "!!!--WARNING--!!!\nDirectory $gitea_path is not empty, do you want to continue?" | |||
| fi | |||
| ########## Download Gitea | |||
| if [ $download_gitea == true ]; then | |||
| ########## Detect os | |||
| case "$OSTYPE" in | |||
| darwin*) platform="darwin-10.6";; | |||
| linux*) platform="linux" ;; | |||
| freebsd*) platform="bsd" ;; | |||
| netbsd*) platform="bsd" ;; | |||
| openbsd*) platform="bsd" ;; | |||
| *) echo "Unsupported os: $OSTYPE\n Please download/compile your own binary and run this script with the -b option" exit 1;; | |||
| esac | |||
| arch="" | |||
| bits="" | |||
| if [[ "$platform" == "linux" ]] || [[ "$platform" == "bsd" ]]; then | |||
| arch="$(uname -m | sed -e 's/arm\(.*\)/arm-\1/' -e s/aarch64.*/arm64/)" | |||
| fi | |||
| if [[ "$platform" == "bsd" ]] && [[ "$arch" != "arm"* ]]; then | |||
| echo "Currently Gitea only supports arm prebuilt binarys on bsd" | |||
| exit 1 | |||
| fi | |||
| if [[ "$arch" != "arm"* ]] && [[ "$arch" != "mips"* ]]; then | |||
| arch="" | |||
| case "$(getconf LONG_BIT)" in | |||
| 64*) bits="amd64";; | |||
| 32*) bits="386" ;; | |||
| esac | |||
| fi | |||
| ########## Wget Gitea | |||
| echo "Downloading Gitea" | |||
| file="gitea-$gitea_version-$platform-$arch$bits" | |||
| url="https://dl.gitea.io/gitea/$gitea_version/$file" | |||
| wget "$url" -P "$gitea_path" | |||
| exitOnError "Failed to download $url" | |||
| wget "$url.sha256" -P "$gitea_path" | |||
| exitOnError "Failed to Gitea checksum $url.sha256" | |||
| echo "Comparing checksums" | |||
| gogs_dir=$(pwd) | |||
| cd "$gitea_path" | |||
| sha256sum -c "$file.sha256" | |||
| exitOnError "Downloaded Gitea checksums do not match" | |||
| rm "$file.sha256" | |||
| mv "$file" gitea | |||
| cd "$gogs_dir" | |||
| else | |||
| checkBinary "$gitea_binary" | |||
| if [ "$gitea_binary" != "$gitea_path/gitea" ];then | |||
| cp "$gitea_binary" "$gitea_path/gitea" | |||
| fi | |||
| fi | |||
| ########## Copy gogs data to Gitea folder | |||
| echo "Copying gogs data to Gitea, this could take a while..." | |||
| cp -R custom "$gitea_path" | |||
| cp -R data "$gitea_path" | |||
| #cp -R conf "$gitea_path" | |||
| ########## Moving & deleting old files | |||
| #mv $gitea_path/conf $gitea_path/options | |||
| cd "$gitea_path" | |||
| mv "custom/conf/app.ini" "custom/conf/gogs_app.ini" | |||
| url="https://raw.githubusercontent.com/go-gitea/gitea/v$gitea_version/conf/app.ini" | |||
| wget "$url" -P "custom/conf/" | |||
| exitOnError "Unable to download Gitea app.ini" | |||
| rm -f conf/README.md | |||
| echo -e "Migration is almost complete, you only need to merge custom/conf/gogs_app.ini into custom/conf/app.ini" | |||
| continueYN "Do you want to start Gitea?" | |||
| ########## Starting Gitea | |||
| echo "Starting Gitea" | |||
| chmod +x gitea | |||
| ./gitea web | |||
| exitOnError "Failed to start Gitea" | |||