Last active
July 21, 2020 01:00
-
-
Save kurobeats/02ad2797815674ba6d7eb79ea924ded5 to your computer and use it in GitHub Desktop.
joplin to be installed in a nice way
This file contains hidden or 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 | |
set -e | |
#----------------------------------------------------- | |
# Variables | |
#----------------------------------------------------- | |
COLOR_RED=`tput setaf 1` | |
COLOR_GREEN=`tput setaf 2` | |
COLOR_RESET=`tput sgr0` | |
SILENT=false | |
print() { | |
if [[ "$SILENT" == false ]] ; then | |
echo $1 | |
fi | |
} | |
#----------------------------------------------------- | |
# ARGUMENTS | |
#----------------------------------------------------- | |
# --allow-root | |
## Check and warn if running as root. | |
if [[ $EUID = 0 ]] ; then | |
if [[ $* != *--allow-root* ]] ; then | |
echo "${COLOR_RED}It is not recommended (nor necessary) to run this script as root. To do so anyway, please use '--allow-root'${COLOR_RESET}" | |
exit 1 | |
fi | |
fi | |
# --silent | |
## Mutes messages by console | |
if [[ $* == *--silent* ]] ; then | |
SILENT=true | |
fi | |
#----------------------------------------------------- | |
# START | |
#----------------------------------------------------- | |
# Title | |
print " _ _ _ " | |
print " | | ___ _ __ | (_)_ __ " | |
print " _ | |/ _ \| '_ \| | | '_ \ " | |
print "| |_| | (_) | |_) | | | | | |" | |
print " \___/ \___/| .__/|_|_|_| |_|" | |
print " |_|" | |
print "" | |
print "Linux Installer and Updater" | |
#----------------------------------------------------- | |
# Download Joplin | |
#----------------------------------------------------- | |
# Get the latest version to download | |
RELEASE_VERSION=$(wget -qO - "https://api.github.com/repos/laurent22/joplin/releases/latest" | grep -Po '"tag_name": "v\K.*?(?=")') | |
# Check if it's in the latest version | |
if [[ ! -e ~/.local/share/joplin/VERSION ]] || [[ $(< ~/.local/share/joplin/VERSION) != "$RELEASE_VERSION" ]]; then | |
print 'Downloading Joplin...' | |
# Delete previous version (in future versions joplin.desktop shouldn't exist) | |
rm -f ~/.local/bin/joplin ~/.local/share/applications/joplin.desktop ~/.local/share/joplin/VERSION | |
# Creates the folder where the binary will be stored | |
mkdir -p ~/.local/bin/ | |
mkdir -p ~/.local/share/joplin/ | |
# Download the latest version | |
wget -nv --show-progress -O ~/.local/bin/joplin https://github.com/laurent22/joplin/releases/download/v$RELEASE_VERSION/Joplin-$RELEASE_VERSION.AppImage | |
# Gives execution privileges | |
chmod +x ~/.local/bin/joplin | |
print "${COLOR_GREEN}OK${COLOR_RESET}" | |
#----------------------------------------------------- | |
# Icon | |
#----------------------------------------------------- | |
# Download icon | |
print 'Downloading icon...' | |
mkdir -p ~/.local/share/icons/hicolor/512x512/apps | |
wget -nv -O ~/.local/share/icons/hicolor/512x512/apps/joplin.png https://joplinapp.org/images/Icon512.png | |
print "${COLOR_GREEN}OK${COLOR_RESET}" | |
# Detect desktop environment | |
if [ "$XDG_CURRENT_DESKTOP" = "" ] | |
then | |
DESKTOP=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/') | |
else | |
DESKTOP=$XDG_CURRENT_DESKTOP | |
fi | |
DESKTOP=${DESKTOP,,} # convert to lower case | |
# Create icon for Gnome | |
echo 'Create Desktop icon.' | |
if [[ $DESKTOP =~ .*gnome.*|.*kde.*|.*xfce.*|.*mate.*|.*lxqt.*|.*unity.*|.*x-cinnamon.*|.*deepin.* ]] | |
then | |
: "${TMPDIR:=/tmp}" | |
# This command extracts to squashfs-root by default and can't be changed... | |
# So we run it in the tmp directory and clean up after ourselves | |
(cd $TMPDIR && ~/.local/bin/joplin --appimage-extract joplin.desktop &> /dev/null) | |
APPIMAGE_VERSION=$(grep "^X-AppImage-BuildId=" $TMPDIR/squashfs-root/joplin.desktop | head -n 1 | cut -d " " -f 1) | |
rm -rf $TMPDIR/squashfs-root | |
# Only delete the desktop file if it will be replaced | |
rm -f ~/.local/share/applications/appimagekit-joplin.desktop | |
# On some systems this directory doesn't exist by default | |
mkdir -p ~/.local/share/applications | |
echo -e "[Desktop Entry]\nEncoding=UTF-8\nName=Joplin\nComment=Joplin for Desktop\nExec=/home/$USER/.local/bin/joplin\nIcon=joplin\nStartupWMClass=Joplin\nType=Application\nCategories=Office;\n$APPIMAGE_VERSION" >> ~/.local/share/applications/appimagekit-joplin.desktop | |
print "${COLOR_GREEN}OK${COLOR_RESET}" | |
else | |
print "${COLOR_RED}NOT DONE${COLOR_RESET}" | |
fi | |
#----------------------------------------------------- | |
# Finish | |
#----------------------------------------------------- | |
# Informs the user that it has been installed and cleans variables | |
print "${COLOR_GREEN}Joplin version${COLOR_RESET}" $RELEASE_VERSION "${COLOR_GREEN}installed.${COLOR_RESET}" | |
# Add version | |
echo $RELEASE_VERSION > ~/.local/share/joplin/VERSION | |
else | |
print "${COLOR_GREEN}You already have the latest version${COLOR_RESET}" $version "${COLOR_GREEN}installed.${COLOR_RESET}" | |
fi | |
# Goodbye | |
print 'Bye!' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment