-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall-chatty.sh
executable file
·104 lines (84 loc) · 2.89 KB
/
install-chatty.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env bash
# Script that installs chatty application and related dependencies.
VERSION='0.11'
DOWNLOAD_URL="https://github.com/chatty/chatty/releases/download/v${VERSION}/Chatty_${VERSION}.zip"
ICON_URL='https://raw.githubusercontent.com/rudissaar/img-murda-eu/master/ch/chatty.png'
ICON_URL_BACKUP='http://img.murda.eu/ch/chatty.png'
PACKAGE_POOL='/usr/local'
# You need root permissions to run this script.
if [[ "${UID}" != '0' ]]; then
echo '> You need to become root to run this script.'
echo '> Aborting.'
exit 1
fi
# Function that checks if required binary exists and installs it if necessary.
ENSURE_PACKAGE () {
REQUIRED_BINARY=$(basename "${1}")
REPO_PACKAGES="${*:2}"
if [[ "${REQUIRED_BINARY}" != '-' ]]; then
[[ -n "${REPO_PACKAGES}" ]] || REPO_PACKAGES="${REQUIRED_BINARY}"
if command -v "${REQUIRED_BINARY}" 1> /dev/null; then
REPO_PACKAGES=''
fi
fi
[[ -n "${REPO_PACKAGES}" ]] || return
if [[ "${REPO_REFRESHED}" == '0' ]]; then
echo '> Refreshing package repository.'
apt-get update 1> /dev/null
REPO_REFRESHED=1
fi
for REPO_PACKAGE in ${REPO_PACKAGES}
do
apt-get install -y "${REPO_PACKAGE}"
done
}
# Variable that keeps track if repository is already refreshed.
REPO_REFRESHED=0
# Install packages if necessary.
ENSURE_PACKAGE 'wget'
ENSURE_PACKAGE 'unzip'
ENSURE_PACKAGE 'java' 'default-jre'
# Download Chatty archive.
TMP_DATE="$(date +%s)"
TMP_FILE="/tmp/chatty-${TMP_DATE}.zip"
TMP_PATH="/tmp/chatty-${TMP_DATE}"
if ! wget "${DOWNLOAD_URL}" -O "${TMP_FILE}"; then
echo '> Unable to download required files.'
echo '> Aborting.'
exit 1
fi
# Extract archive.
[[ -d "${TMP_PATH}" ]] || mkdir -p "${TMP_PATH}"
unzip "${TMP_FILE}" -d "${TMP_PATH}"
# Copy files.
CHATTY_PATH="${PACKAGE_POOL}/share/chatty"
[[ -d "${CHATTY_PATH}" ]] || mkdir -p "${CHATTY_PATH}"
cp -r "${TMP_PATH}/"* "${CHATTY_PATH}/"
# Create directory for chatty icons if it doesn't exist.
CHATTY_ICON_PATH="${PACKAGE_POOL}/share/icons"
[[ -d "${CHATTY_ICON_PATH}" ]] || mkdir -p "${CHATTY_ICON_PATH}"
# Download icon for chatty from internet if it doesn't exist locally.
if [[ ! -f "${CHATTY_ICON_PATH}/chatty.png" ]]; then
if ! wget "${ICON_URL}" -O "${CHATTY_ICON_PATH}/chatty.png"; then
wget "${ICON_URL_BACKUP}" -O "${CHATTY_ICON_PATH}/chatty.png"
fi
fi
# Generate desktop entry for chatty application.
cat > "${PACKAGE_POOL}/share/applications/chatty.desktop" <<EOL
[Desktop Entry]
Version=${VERSION}
Name=Chatty
GenericName=Chatty
Comment=Twitch Chat Client written in Java
Exec=java -jar ${CHATTY_PATH}/Chatty.jar
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=${CHATTY_ICON_PATH}/chatty.png
StartupNotify=true
Categories=Network;InstantMessaging;
EOL
# Cleanup.
rm -rf "${TMP_FILE}" "${TMP_PATH}"
# Let user know that script has finished its job.
echo '> Finished.'