mirror of
https://github.com/languagetool-org/languagetool
synced 2026-04-21 13:37:25 +00:00
486 lines
15 KiB
Bash
Executable file
486 lines
15 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Made by Innovative Inventor at https://github.com/innovativeinventor.
|
|
# If you like this code, star it on GitHub!
|
|
# Contributions are always welcome.
|
|
|
|
# MIT License
|
|
# Copyright (c) 2017 InnovativeInventor
|
|
|
|
# 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.
|
|
|
|
# Options
|
|
VERSION="2.3"
|
|
clone_depth="1"
|
|
text="spellcheck.txt"
|
|
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-p|--package)
|
|
package="$2"
|
|
build=YES
|
|
specifypackage=YES
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-o|--override)
|
|
OSTYPE="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-c|--command)
|
|
command="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-t|--text)
|
|
text="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-r|--remove)
|
|
remove="$2"
|
|
uninstall=YES
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-b|--build)
|
|
build=YES
|
|
shift # past argument
|
|
;;
|
|
-d|--depth)
|
|
clone_depth="$2"
|
|
build=YES
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-h|--help)
|
|
help=YES
|
|
shift # past argument
|
|
;;
|
|
-q|--quiet)
|
|
quiet=YES
|
|
shift # past argument
|
|
;;
|
|
-a|--accept)
|
|
accept=YES
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
display_help() {
|
|
echo
|
|
echo "Script version $VERSION"
|
|
echo 'A tool for installing or building LanguageTool.'
|
|
echo 'Usage: install.sh <option> <package>'
|
|
echo 'Options:'
|
|
echo ' -h --help Show help'
|
|
echo ' -b --build Builds packages from the bleeding edge development copy of LanguageTool'
|
|
echo ' -c --command <command> Specifies post-installation command to run (default gui when screen is detected)'
|
|
echo ' -q --quiet Shut up LanguageTool installer! Only tell me important stuff!'
|
|
echo ' -t --text <file> Specifies what text to be spellchecked by LanguageTool command line (default spellcheck.txt)'
|
|
echo ' -d --depth <value> Specifies the depth to clone when building LanguageTool yourself (default 1).'
|
|
echo ' -p --package <package> Specifies package to install when building (default all)'
|
|
echo ' -o --override <OS> Override automatic OS detection with <OS>'
|
|
echo ' -a --accept Agree to all downloading and installing prompts.'
|
|
echo ' -r --remove <all/partial> Removes LanguageTool install. <all> uninstalls the dependencies that were auto-installed. (default partial)'
|
|
echo
|
|
echo 'Packages(only if -b is specified):'
|
|
echo ' standalone Installs standalone package'
|
|
echo ' wikipedia Installs Wikipedia package'
|
|
echo ' office-extension Installs the LibreOffice/OpenOffice extension package'
|
|
echo
|
|
echo 'Commands:'
|
|
echo ' GUI Runs GUI version of LanguageTool'
|
|
echo ' commandline Runs command line version of LanguageTool'
|
|
echo ' server Runs server version of LanguageTool'
|
|
echo
|
|
echo 'Submit a GitHub issue if you are encountering problems or want to suggest new features'
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
install() {
|
|
echo "Removing any old copy of LanguageTools Stable in this directory"
|
|
rm LanguageTool-stable.zip # maybe switch with 2> /dev/null XXX here removals should be verbose
|
|
|
|
detect_unzip
|
|
|
|
echo "Installing LanguageTools Stable"
|
|
version=stable
|
|
RELEASE_URL="https://languagetool.org/download/LanguageTool-stable.zip"
|
|
curl -l $RELEASE_URL -o LanguageTool-stable.zip
|
|
DIR=$(unzip LanguageTool-stable.zip | grep -m1 'creating:' | cut -d' ' -f5- )
|
|
rm -r $DIR &>/dev/null
|
|
RELEASE=${DIR%/}
|
|
|
|
# Getting rid of any old folders with the same name
|
|
rm -r $RELEASE-$version
|
|
|
|
echo "Unzipping"
|
|
unzip -u LanguageTool-stable.zip
|
|
|
|
mv $RELEASE "$RELEASE-$version"
|
|
echo "Cleaning up"
|
|
rm LanguageTool-stable.zip
|
|
}
|
|
|
|
install_quiet() {
|
|
# Removing any old copy of LanguageTools Stable in this directory
|
|
rm LanguageTool-stable.zip &>/dev/null
|
|
|
|
# Detecting unzip
|
|
detect_unzip
|
|
|
|
# Installing LanguageTools Stable
|
|
version=stable
|
|
RELEASE_URL="https://languagetool.org/download/LanguageTool-stable.zip"
|
|
curl -s -l $RELEASE_URL -o LanguageTool-stable.zip
|
|
DIR=$(unzip LanguageTool-stable.zip | grep -m1 'creating:' | cut -d' ' -f5- )
|
|
rm -r $DIR &>/dev/null
|
|
RELEASE=${DIR%/}
|
|
|
|
# Getting rid of any old folders with the same name
|
|
rm -r $RELEASE-$version &>/dev/null
|
|
|
|
# Unzipping
|
|
unzip -q -u LanguageTool-stable.zip
|
|
|
|
mv $RELEASE "$RELEASE-$version"
|
|
|
|
# Cleaning up
|
|
rm LanguageTool-stable.zip
|
|
}
|
|
|
|
build () {
|
|
if [ -e languagetool ]; then
|
|
echo "Moved current languagetool directory to languagetool-previous"
|
|
mv languagetool languagetool-previous
|
|
fi
|
|
|
|
# Cloning from GitHub
|
|
git clone --depth "$clone_depth" https://github.com/languagetool-org/languagetool.git
|
|
cd languagetool || exit 2
|
|
|
|
# Seeing if maven is installed, and installing it if not
|
|
detect_maven
|
|
|
|
mvn clean test
|
|
if [ "$specifypackage" = YES ]; then
|
|
./build.sh languagetool-$package package
|
|
else
|
|
./build.sh languagetool-standalone package
|
|
./build.sh languagetool-wikipedia package -DskipTests
|
|
fi
|
|
}
|
|
|
|
build_quiet () {
|
|
|
|
if [ -e languagetool ]; then
|
|
echo "Moved current languagetool directory to languagetool-previous"
|
|
mv languagetool languagetool-previous
|
|
fi
|
|
|
|
# Cloning from GitHub
|
|
git clone -q --depth "$clone_depth" https://github.com/languagetool-org/languagetool.git
|
|
cd languagetool || exit 2
|
|
|
|
# Seeing if maven is installed, and installing it if not
|
|
detect_maven
|
|
|
|
mvn clean test
|
|
if [ "$specifypackage" = YES ]; then
|
|
./build.sh languagetool-$package package
|
|
else
|
|
./build.sh languagetool-standalone package
|
|
./build.sh languagetool-wikipedia package -DskipTests
|
|
fi
|
|
}
|
|
|
|
uninstall_loud () {
|
|
touch languagetool
|
|
rm -r "languagetool"
|
|
touch LanguageTool-uninstall
|
|
rm -r "LanguageTool-"*
|
|
if [ "$remove" = "all" ] || [ "$remove" = "ALL" ] || [ "$remove" = "a" ] || [ "$remove" = "A" ]; then
|
|
detect_uninstall
|
|
bash /etc/languagetool/uninstall.sh
|
|
rm /etc/languagetool/uninstall.sh
|
|
fi
|
|
echo "LanguageTool uninstalled!"
|
|
exit
|
|
}
|
|
|
|
uninstall_quiet () {
|
|
touch languagetool
|
|
rm -r "languagetool"
|
|
touch LanguageTool-uninstall
|
|
rm -r "LanguageTool-"*
|
|
if [ "$remove" = "all" ] || [ "$remove" = "ALL" ] || [ "$remove" = "a" ] || [ "$remove" = "A" ]; then
|
|
detect_uninstall
|
|
echo "This may take some time . . ."
|
|
bash /etc/languagetool/uninstall.sh &>/dev/null
|
|
rm -f /etc/languagetool/uninstall.sh # Find way to silence this
|
|
fi
|
|
exit
|
|
}
|
|
|
|
install_maven() {
|
|
detect_uninstall
|
|
echo "Maven is not installed."
|
|
echo "Installing maven . . ."
|
|
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
apt update -y
|
|
apt install maven -y
|
|
echo "apt remove maven -y" >> /etc/languagetool/uninstall.sh
|
|
|
|
# XXX This needs to be reviewed by someone with a MacOS
|
|
# Uncomment after review
|
|
#
|
|
# elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# if ! [ -x "$(brew -v)" ]; then
|
|
# install_homebrew
|
|
# fi
|
|
# brew update
|
|
# brew install maven
|
|
# echo "brew remove maven" >> /etc/languagetool/uninstall.sh
|
|
#
|
|
else
|
|
echo "Error: maven is not installed and operating system detection error"
|
|
echo " OS type not supported!"
|
|
echo " Please install maven yourself or override automatic OS detection with -o <OS> See help for more details."
|
|
fi
|
|
}
|
|
|
|
install_java() {
|
|
detect_uninstall
|
|
echo "Java is not installed."
|
|
echo "Installing java . . ."
|
|
|
|
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
apt install default-jre default-jdk -y
|
|
echo "apt remove default-jre default-jdk -y" >> /etc/languagetool/uninstall.sh # need to test
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
if ! [ -x "$(brew -v)" ]; then
|
|
install_homebrew
|
|
fi
|
|
brew update
|
|
brew cask install java
|
|
echo "brew remove java" >> /etc/languagetool/uninstall.sh
|
|
|
|
else
|
|
echo "Error: java is not installed and operating system detection error"
|
|
echo " OS type not supported!"
|
|
echo " Please install java yourself or override automatic OS detection with -o <OS> See help for more details."
|
|
fi
|
|
}
|
|
|
|
install_unzip() {
|
|
detect_uninstall
|
|
echo "Unzip is not installed."
|
|
echo "Installing unzip . . ."
|
|
|
|
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
apt update
|
|
apt install unzip
|
|
echo "apt remove unzip -y" >> /etc/languagetool/uninstall.sh
|
|
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
if ! [ -x "$(brew -v)" ]; then
|
|
install_homebrew
|
|
fi
|
|
brew update
|
|
brew install unzip
|
|
echo "brew remove unzip" >> /etc/languagetool/uninstall.sh
|
|
|
|
else
|
|
echo "Error: unzip is not installed and operating system detection error"
|
|
echo " OS type not supported!"
|
|
echo " Please install unzip yourself or override automatic OS detection with -o <OS> See help for more details."
|
|
fi
|
|
}
|
|
|
|
install_homebrew() {
|
|
if ! [[ "$accept" == "YES" ]]; then
|
|
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
|
else
|
|
detect_screen
|
|
if ! [[ "$display" == "no" ]]; then
|
|
dialog=$(osascript \
|
|
-e 'on homebrew_dialog()' \
|
|
-e 'tell application "System Events"' \
|
|
-e 'activate' \
|
|
-e 'set dialog_result to display dialog "Do you want to get homebrew to install packages necessary for languagetool?" with title "LanguageTool Installer" buttons {"Yes","No","What is Homebrew?"} default button 1' \
|
|
-e 'end tell' \
|
|
-e 'set button to button returned of dialog_result' \
|
|
-e 'if the button is "What is Homebrew?" then' \
|
|
-e 'open location "https://brew.sh/#question"' \
|
|
-e 'activate' \
|
|
-e 'set dialog_result to display dialog "Do you want to get homebrew to install packages necessary for languagetool?" with title "LanguageTool Installer" buttons {"Yes","No"} default button 1' \
|
|
-e 'set button to button returned of dialog_result' \
|
|
-e 'end if' \
|
|
-e 'return button' \
|
|
-e 'end' \
|
|
-e 'homebrew_dialog()' \
|
|
-e 'tell application "System Events"' \
|
|
-e 'tell process "finder"' \
|
|
-e 'activate' \
|
|
-e 'keystroke tab using {command down}' \
|
|
-e 'end tell' \
|
|
-e 'end tell'
|
|
)
|
|
else
|
|
echo "No display detected"
|
|
read -p "Do you want to install homebrew? " -n 1 -r
|
|
echo # (optional) move to a new line
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
dialog="Yes"
|
|
fi
|
|
fi
|
|
if [[ "$dialog" = "Yes" ]]; then
|
|
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
|
else
|
|
echo "Can not install homebrew. Packages will not work."
|
|
echo "Exiting"
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
detect_maven() {
|
|
if ! [ "$(type -t mvn)" ]; then
|
|
install_maven
|
|
fi
|
|
}
|
|
|
|
detect_java() {
|
|
if ! [ "$(type -t java)" ]; then
|
|
install_java
|
|
fi
|
|
}
|
|
|
|
detect_unzip() {
|
|
if ! [ "$(type -t unzip)" ]; then
|
|
install_unzip
|
|
fi
|
|
}
|
|
|
|
detect_screen() {
|
|
if ! [ "$(type -t DISPLAY)" ]; then
|
|
if [ "$command" ]; then
|
|
command="commandline"
|
|
else
|
|
command="none"
|
|
fi
|
|
display='no'
|
|
fi
|
|
}
|
|
|
|
detect_uninstall() {
|
|
if ! [ -e "/etc/languagetool/uninstall.sh" ]; then
|
|
mkdir -p /etc/languagetool
|
|
touch /etc/languagetool/uninstall.sh
|
|
echo "#!/bin/bash" >> /etc/languagetool/uninstall.sh
|
|
fi
|
|
}
|
|
|
|
postinstall_command () {
|
|
detect_screen
|
|
file=""
|
|
if [ "$command" = GUI ] || [ "$command" = gui ] || [ "$command" = standalone ]; then
|
|
cmd="languagetool-standalone/"
|
|
elif [ "$command" = commandline ] || [ "$command" = cmdline ] || [ "$command" = cmd ] || [ "$command" = CMD ] || [ "$command" = "command line" ]; then
|
|
file="$text"
|
|
check_command_line
|
|
elif [ "$command" = server ] || [ "$command" = web ]; then
|
|
cmd="languagetool-server"
|
|
else
|
|
cmd=""
|
|
fi
|
|
}
|
|
|
|
# Checks if file specified with command line option exists
|
|
check_command_line () {
|
|
if [ -e $file ]; then
|
|
cmd="languagetool-commandline"
|
|
else
|
|
echo "Error: spellcheck.txt does not exist, and no text to be checked was specified."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
build_or_install_loud () {
|
|
# Build or install loudly
|
|
if [ "$build" == YES ]; then
|
|
build
|
|
echo "Your build is done."
|
|
echo "Post-installation commands are not available for the build option. Contributions are welcome."
|
|
else
|
|
install
|
|
postinstall_command
|
|
if [ "$cmd" ]; then
|
|
echo "Running $cmd, press CTRL-C to cancel"
|
|
java -jar "$RELEASE-$version"/$cmd.jar $file
|
|
fi
|
|
fi
|
|
}
|
|
|
|
build_or_install_quiet () {
|
|
# Build or install quietly
|
|
if [ "$build" == YES ]; then
|
|
build_quiet
|
|
echo "Your build is done."
|
|
echo "Post-installation commands are not available for the build option. Contributions are welcome."
|
|
else
|
|
install_quiet
|
|
postinstall_command
|
|
if [ "$cmd" ]; then
|
|
echo "Running $cmd, press CTRL-C to cancel"
|
|
java -jar "$RELEASE-$version"/$cmd.jar
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Detect if Java is installed
|
|
detect_java
|
|
|
|
# Help option
|
|
if [ "$help" == YES ]; then
|
|
display_help
|
|
fi
|
|
|
|
# Detect if uninstalled was selected
|
|
if [ "$uninstall" == YES ]; then
|
|
if [ "$quiet" == YES ]; then
|
|
uninstall_quiet
|
|
else
|
|
uninstall_loud
|
|
fi
|
|
fi
|
|
|
|
# Build or install options
|
|
if [ "$quiet" == YES ]; then
|
|
build_or_install_quiet
|
|
else
|
|
build_or_install_loud
|
|
fi
|