Last active
December 2, 2015 06:37
Installing the latest version of Eclipse on Linux, as shortcut creations and symbolic links
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Type script: Shell | |
# Program: Eclipse {Lastet version <present>} | |
# Description: Installing the latest version of Eclipse on Linux, | |
# as shortcut creations and symbolic links | |
# Version: 1.0.1 | |
# | |
#------------------------------------------Using -------------------------------------------- | |
# | |
# For install, no need to download this script to install Eclipse, just run it on your terminal: | |
# | |
# $ curl -sL git.io/v37p0 | bash | |
# | |
# For uninstall, you need to download the script and run: | |
# | |
# $ curl -L git.io/v37p0 -o eclipse.sh && bash eclipse.sh -uninstall | |
# | |
# | |
# NOTE: You can download this script and change the parameter of _RUN_OPTION function | |
# for "local" and execute the menu. | |
# | |
#-------------------------------------------------------------------------------------------- | |
# Author: William C. Canin <http://williamcanin.com, https://github.com/williamcanin> | |
# LICENSE: MIT | |
# The MIT License (MIT) | |
# Copyright (c) 2015 William C. Canin | |
# | |
# Permission is hereby granted, free of charge, to any person obtaining a copy | |
# of this software and associated documentation files (the "Software"), to deal | |
# in the Software without restriction, including without limitation the rights | |
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
# copies of the Software, and to permit persons to whom the Software is | |
# furnished to do so, subject to the following conditions: | |
# The above copyright notice and this permission notice shall be included in all | |
# copies or substantial portions of the Software. | |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
# SOFTWARE. | |
#-------------------------------------------------------------------------------------------- | |
#==================================================================================================== | |
# Begin Script | |
#==================================================================================================== | |
# | |
# | |
# --------------------------------------------------------------------------------------------------- | |
# Begin variables global | |
#---------------------------------------------------------------------------------------------------- | |
# | |
############ Variables changeable | |
# | |
# Set the directory where Eclipse is installed. | |
INSTALLATION_DIR="/opt" | |
#--------------------------------------------- | |
# | |
# ------------- BASE MIRRORS ----------------- | |
# Choice base mirror {Only one} | |
# | |
# Base mirror - Brazil - C3SL - Federal University of Parana (http) | |
BASE_MIRROR="http://eclipse.c3sl.ufpr.br" | |
# Base mirror - United States - Columbia University | |
# BASE_MIRROR="http://mirror.cc.columbia.edu/pub/software/eclipse" | |
# Base mirror - Germany - University of Erlangen-Nuremberg | |
# BASE_MIRROR="http://ftp.fau.de/eclipse" | |
# | |
############ Variables NOT changeable | |
# | |
# | |
if [ "$(uname -m)" = "x86_64" ]; then | |
ARCHITECTURE="x86_64" | |
ARCHITECTURE_PI="x86_64" | |
else | |
ARCHITECTURE="" | |
ARCHITECTURE_PI="i386" | |
fi | |
DISTRIBUTION="$(cat /etc/[A-Za-z]*[_-][rv]e[lr]* 2> /dev/null | grep PRETTY_NAME | awk -F"=" '{print$2}')" | |
DOWN_ICON_SVG="https://raw.githubusercontent.com/williamcanin/logos/master/logos/eclipse.svg" | |
DIR_SHORTCUT="/usr/share/applications" | |
SHORTCUT_NAME="eclipse.desktop" | |
URL_RELEASE_CODENAME="$BASE_MIRROR/technology/epp/downloads/release/release.xml" | |
VERIFY_CODENAME="$(curl -s $URL_RELEASE_CODENAME | sed '/<present>/,$!d' | sed 's/<present>//g' | sed 's/<\/present>//g' | sed '/</d' | cut -d'/' -f1)" | |
VERIFY_CODENAME_CAPITALIZE="$(curl -s $URL_RELEASE_CODENAME | sed '/<present>/,$!d' | sed 's/<present>//g' | sed 's/<\/present>//g' | sed '/</d' | cut -d'/' -f1 | sed -r 's/(^.| .)/\U&/g')" | |
VERIFY_RELEASE="$(curl -s $URL_RELEASE_CODENAME | sed '/<present>/,$!d' | sed 's/<present>//g' | sed 's/<\/present>//g' | sed '/</d' | cut -d'/' -f2)" | |
BASE_URL_PKG="$BASE_MIRROR/technology/epp/downloads/release" | |
NAME_DEFAULT_ECLIPSE="eclipse-jee" | |
OS="linux" | |
CONFIG="config.lib" | |
LIB_MSGS="messages_color.lib" | |
PROGRESS_PERCENT_LIB="progress_percent.lib" | |
ACTION_SETTINGS_DIR="$HOME/.eclipse_confs" | |
ACTION_SETTINGS_FILE_INSTALL="action_settings_install.sh" | |
ACTION_SETTINGS_FILE_UNINSTALL="action_settings_uninstall.sh" | |
EXTENSION="tar.gz" | |
PKGNAME_FULL="$NAME_DEFAULT_ECLIPSE-$VERIFY_CODENAME-$VERIFY_RELEASE-$OS-gtk-$ARCHITECTURE.$EXTENSION" | |
FOLDER_ECLIPSE_DEFAULT="eclipse" | |
FOLDER_ECLIPSE_CHANGED="$INSTALLATION_DIR/$NAME_DEFAULT_ECLIPSE-$VERIFY_CODENAME-$VERIFY_RELEASE-$OS-gtk-$ARCHITECTURE" | |
EXEC="$FOLDER_ECLIPSE_CHANGED/eclipse" | |
LINK_SIMBOLIC_EXEC="/usr/bin/eclipse" | |
URLPKG="$BASE_URL_PKG/$VERIFY_CODENAME/$VERIFY_RELEASE/$NAME_DEFAULT_ECLIPSE-$VERIFY_CODENAME-$VERIFY_RELEASE-$OS-gtk-$ARCHITECTURE.$EXTENSION" | |
# | |
# | |
#---------------------------------------------------------------------------------------------------- | |
# End variables global | |
#---------------------------------------------------------------------------------------------------- | |
#---------------------------------------------------------------------------------------------------- | |
# Begin functions | |
#---------------------------------------------------------------------------------------------------- | |
# | |
function _CREATE_DIR_ACTION_SETTINGS(){ | |
if [[ ! -d "$ACTION_SETTINGS_DIR" ]]; then | |
mkdir $ACTION_SETTINGS_DIR | |
fi | |
} | |
function _RUN_OPTION(){ | |
if [[ "$1" = "gist" ]]; then | |
_ACTION_SETTINGS | |
_DOWNLOAD_INSTALL | |
elif [[ "$1" = "local" ]]; then | |
printf "\n" | |
printf "Using: $0 { -install | -uninstall }\n" | |
printf "\n" | |
else | |
printf "\n" | |
printf "Option invalid!\n" | |
printf "\n" | |
fi | |
} | |
function _CREATE_LIBS(){ | |
_CREATE_DIR_ACTION_SETTINGS | |
/bin/cat << EOF > $ACTION_SETTINGS_DIR/$LIB_MSGS | |
NONE='\033[00m' | |
RED='\033[01;31m' | |
BLUE='\e[34m' | |
GREEN='\033[01;32m' | |
YELLOW='\033[01;33m' | |
PURPLE='\033[01;35m' | |
CYAN='\033[01;36m' | |
WHITE='\033[01;37m' | |
BOLD='\033[1m' | |
UNDERLINE='\033[4m' | |
WARNING_MSG="\${YELLOW}[ Warning ]\${NONE}" | |
ERROR_MSG="\${RED}[ Error ]\${NONE}" | |
INFO_MSG="\${BLUE}[ Info ]\${NONE}" | |
OK_MSG="\${GREEN}[ Ok ]\${NONE}" | |
EOF | |
/bin/cat << EOF > $ACTION_SETTINGS_DIR/$CONFIG | |
DOWNLOAD_VALUE="uncompleted" | |
SUDO_VALUE_INSTALL="null" | |
SUDO_VALUE_UNINSTALL="null" | |
EOF | |
/bin/cat << EOF > $ACTION_SETTINGS_DIR/$PROGRESS_PERCENT_LIB | |
# Colors | |
NONE='\033[00m' | |
RED='\033[01;31m' | |
BLUE='\e[34m' | |
GREEN='\033[01;32m' | |
YELLOW='\033[01;33m' | |
CYAN='\033[01;36m' | |
WHITE='\033[01;37m' | |
BOLD='\033[1m' | |
MOVE_CURSOR_LEFT4="\033[4D" | |
function _PROGRESS_PERCENT_FUNCTION(){ | |
BEGIN_PERCENT=\$1 | |
END_PERCENT=\$2 | |
SECONDS=\$3 | |
PROGRESS=\$END_PERCENT/\$SECONDS | |
tput civis | |
printf "\n" | |
printf "\$4\n" | |
for (( i=\$BEGIN_PERCENT; i<=\$END_PERCENT ; i=\$i+\$PROGRESS )); do | |
printf "\${MOVE_CURSOR_LEFT4}\${YELLOW}\${BOLD}\$i\${NONE}" | |
echo -ne "\${YELLOW}%\${NONE}" | |
sleep 1 | |
done | |
tput cnorm | |
printf "\${MOVE_CURSOR_LEFT4}" | |
printf "\${YELLOW}\$END_PERCENT%%\${NONE}" | |
printf "\012\012" | |
} | |
EOF | |
} | |
_CREATE_LIBS | |
function _LOAD_LIBS_LOCAL(){ | |
if [[ -f "$ACTION_SETTINGS_DIR/$LIB_MSGS" ]]; then | |
source $ACTION_SETTINGS_DIR/$LIB_MSGS | |
fi | |
if [[ -f "$ACTION_SETTINGS_DIR/$CONFIG" ]]; then | |
source $ACTION_SETTINGS_DIR/$CONFIG | |
fi | |
if [[ -f "$ACTION_SETTINGS_DIR/$CONFIG" ]]; then | |
source $ACTION_SETTINGS_DIR/$PROGRESS_PERCENT_LIB | |
fi | |
} | |
function _CREATE_SHORTCUT(){ | |
/bin/cat << EOF > $ACTION_SETTINGS_DIR/$SHORTCUT_NAME | |
[Desktop Entry] | |
Type=Application | |
Version=1.0 | |
Name=Eclipse | |
GenericName=Eclipse-IDE-$VERIFY_CODENAME_CAPITALIZE | |
Comment[pt_BR]=IDE Desenvolvimento Java | |
Comment[en_GB]=IDE Java Development | |
Exec=$EXEC | |
Icon=$FOLDER_ECLIPSE_CHANGED/icon.svg | |
Terminal=false | |
Categories=GTK;Development;IDE; | |
StartupNotify=true | |
EOF | |
} | |
function _ACTION_SETTINGS(){ | |
_CREATE_DIR_ACTION_SETTINGS | |
_CREATE_LIBS | |
} | |
function _PERMISSION_FOLDER_FILE_ECLIPSE(){ | |
if [[ "$INSTALLATION_DIR" = "$HOME" ]]; then | |
if [[ ! -d "$FOLDER_ECLIPSE_CHANGED" ]]; then | |
exit 0 | |
else | |
sudo chown -R `logname`. $FOLDER_ECLIPSE_CHANGED | |
sudo chmod -R 777 $FOLDER_ECLIPSE_CHANGED | |
fi | |
fi | |
} | |
function _DOWNLOAD_INSTALL(){ | |
reset | |
_LOAD_LIBS_LOCAL | |
if [[ -d "$FOLDER_ECLIPSE_CHANGED" ]]; then | |
printf "\n" | |
printf "$WARNING_MSG The Eclipse $VERIFY_CODENAME_CAPITALIZE is already installed\n" | |
printf "See where: " | |
cd $FOLDER_ECLIPSE_CHANGED && pwd | |
printf "\n" | |
else | |
for (( i = 0; i < 2; i++ )); do | |
_LOAD_LIBS_LOCAL | |
if [[ "$DOWNLOAD_VALUE" = "completed" ]]; then | |
printf "\n" | |
printf "============================================================\n" | |
printf " Installing Eclipse $VERIFY_CODENAME_CAPITALIZE in $INSTALLATION_DIR.\n" | |
printf "============================================================\n" | |
printf "\n" | |
printf "You must be ${BLUE}ROOT${NONE} to perform the installation. You need sudo.\n" | |
printf "\n\n" | |
_CREATE_SHORTCUT | |
_PROGRESS_PERCENT_FUNCTION "0" "20" "2" "Starting installation..." | |
sudo -k | |
sudo sed -i "s|^SUDO_VALUE_INSTALL=.*|SUDO_VALUE_INSTALL=\"true\"|g" $ACTION_SETTINGS_DIR/$CONFIG | |
_LOAD_LIBS_LOCAL | |
if [[ "$SUDO_VALUE_INSTALL" != "true" ]]; then | |
printf "$ERROR_MSG Installation error because you canceled the sudo process or typed incorrect password.\n" | |
printf "Sorryy :(\n" | |
printf "\n" | |
exit 0 | |
else | |
sudo tar -xzf $HOME/$PKGNAME_FULL -C $INSTALLATION_DIR | |
sudo mv $INSTALLATION_DIR/$FOLDER_ECLIPSE_DEFAULT $FOLDER_ECLIPSE_CHANGED | |
sudo curl -so $FOLDER_ECLIPSE_CHANGED/icon.svg $DOWN_ICON_SVG | |
sudo chmod -R 755 $FOLDER_ECLIPSE_CHANGED | |
sudo ln -s $EXEC $LINK_SIMBOLIC_EXEC | |
sudo chmod +x $LINK_SIMBOLIC_EXEC | |
sudo mv $ACTION_SETTINGS_DIR/$SHORTCUT_NAME $DIR_SHORTCUT/$SHORTCUT_NAME | |
_PROGRESS_PERCENT_FUNCTION "21" "100" "4" "Finishing installation..." | |
printf "\n" | |
printf "$WARNING_MSG Complete install Eclipse $VERIFY_CODENAME_CAPITALIZE.\n" | |
printf "Bye! :)\n" | |
printf "\n" | |
fi | |
_PERMISSION_FOLDER_FILE_ECLIPSE | |
_CLEAR | |
break | |
else | |
printf "\n" | |
printf "===================================\n" | |
printf " Process Information\n" | |
printf "===================================\n" | |
printf "\n" | |
printf "${BLUE} Package:${NONE} $PKGNAME_FULL\n" | |
printf "${BLUE} Download directory:${NONE} $BASE_URL_PKG\n" | |
printf "${BLUE} Architecture:${NONE} $ARCHITECTURE_PI\n" | |
printf "${BLUE} Maintainer:${NONE} The Eclipse Foundation\n" | |
printf "${BLUE} Operational system:${NONE} $OS\n" | |
printf "${BLUE} Distribution:${NONE} $DISTRIBUTION\n" | |
printf "${BLUE}${BOLD} Download saving on:${NONE} $HOME\n" | |
printf "\n" | |
printf "\n" | |
printf "===================================\n" | |
printf " Download Eclipse $VERIFY_CODENAME_CAPITALIZE.\n" | |
printf "===================================\n" | |
printf "$WARNING_MSG Wait ...\n" | |
printf "\n" | |
curl -C - -o $HOME/$PKGNAME_FULL $URLPKG | |
sed -i "s|^DOWNLOAD_VALUE=.*|DOWNLOAD_VALUE=\"completed\"|g" $ACTION_SETTINGS_DIR/$CONFIG | |
fi | |
done | |
fi | |
} | |
function _CLEAR(){ | |
# rm -f $HOME/$PKGNAME_FULL | |
rm -rf $ACTION_SETTINGS_DIR | |
sudo -k | |
} | |
function _UNINSTALL(){ | |
reset | |
_LOAD_LIBS_LOCAL | |
if [[ ! -d "$FOLDER_ECLIPSE_CHANGED" ]]; then | |
printf "\n" | |
printf "$WARNING_MSG The Eclipse is not installed.\n" | |
printf "It was not installed with this script.\n" | |
printf "\n" | |
else | |
printf "\n" | |
printf "============================================================\n" | |
printf " Uninstall Eclipse $VERIFY_CODENAME_CAPITALIZE.\n" | |
printf "============================================================\n" | |
printf "\n" | |
printf "$INFO_MSG This will be an irreversible action! You need sudo.\n" | |
printf "\n" | |
sudo -k | |
sudo sed -i "s|^SUDO_VALUE_UNINSTALL=.*|SUDO_VALUE_UNINSTALL=\"true\"|g" $ACTION_SETTINGS_DIR/$CONFIG | |
_LOAD_LIBS_LOCAL | |
if [[ "$SUDO_VALUE_UNINSTALL" != "true" ]]; then | |
printf "\n" | |
printf "$ERROR_MSG Uninstall error because you canceled the sudo process or typed incorrect password.\n" | |
printf "Sorry :(\n" | |
printf "\n" | |
exit 0 | |
else | |
sudo rm -rf $FOLDER_ECLIPSE_CHANGED | |
sudo rm -f $LINK_SIMBOLIC_EXEC | |
sudo rm -f $DIR_SHORTCUT/$SHORTCUT_NAME | |
_PROGRESS_PERCENT_FUNCTION "0" "100" "2" "Uninstall process: " | |
printf "\n" | |
printf "$WARNING_MSG Complete uninstall Eclipse $VERIFY_CODENAME_CAPITALIZE.\n" | |
printf "Bye! :)\n" | |
printf "\n" | |
fi | |
_CLEAR | |
fi | |
} | |
# | |
#---------------------------------------------------------------------------------------------------- | |
# End functions | |
#---------------------------------------------------------------------------------------------------- | |
case "$1" in | |
-uninstall) | |
_ACTION_SETTINGS | |
_UNINSTALL | |
;; | |
-install) | |
_ACTION_SETTINGS | |
_DOWNLOAD_INSTALL | |
;; | |
*) | |
#----------------------------------------------------------------------- | |
# Configuration script to run locally | |
#----------------------------------------------------------------------- | |
# | |
# Use the parameter "local" if you want to use this script locally. | |
# The advantage of using locally is that you can use the option to | |
# install and uninstall. | |
# | |
#----------------------------------------------------------------------- | |
# Configuration to run script via web "Gist" (Curl -L) | |
#----------------------------------------------------------------------- | |
# | |
# Use the parameter "gist" if you want to use this script by Gist. | |
# This option will not download the script, however, only porerá | |
# use the option to install. The option to uninstall is not available. | |
# | |
#----------------------------------------------------------------------- | |
# | |
_RUN_OPTION "gist" | |
;; | |
esac | |
# | |
# | |
#---------------------------------------------------------------------------------------------------- | |
# End Script - Copyright (c) Script 2015 - William C. Canin <http://github.com/williamcanin> | |
#==================================================================================================== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment