| @@ -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" | |||||