Skip to content

Commit 29f1765

Browse files
authored
Merge pull request #4 from bialger/deadline_0
Add installation script
2 parents 4a8ecb8 + bb849be commit 29f1765

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed

PrintOS.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (UNIX AND NOT APPLE)
4+
set(LINUX TRUE)
5+
endif ()
6+
7+
if (WIN32)
8+
message("Windows")
9+
elseif (LINUX)
10+
message("Linux")
11+
else ()
12+
message("MacOS")
13+
endif ()

install.sh

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/bin/sh
2+
3+
OS_NAME="$(cmake -P ./PrintOS.cmake 2>&1)"
4+
PROJECT_NAME="SimpleSearchEngine"
5+
SECOND_TARGET="SimpleSearchEngineIndexer"
6+
CMAKE_BUILD_DIR="$HOME/CMakeBuilds"
7+
CMAKE_PROJECT_DIR="$CMAKE_BUILD_DIR/$PROJECT_NAME"
8+
9+
if [ "x$SAVE_PREV" = "x" ]; then
10+
if [ -e "$CMAKE_PROJECT_DIR" ]; then
11+
rm -rf "$CMAKE_PROJECT_DIR"
12+
fi
13+
fi
14+
15+
EXEC_EXTENSION=".exe"
16+
EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$PROJECT_NAME$EXEC_EXTENSION"
17+
SECOND_EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$SECOND_TARGET$EXEC_EXTENSION"
18+
19+
if [ "$OS_NAME" = "Linux" ]; then
20+
EXEC_EXTENSION=".run"
21+
EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$PROJECT_NAME"
22+
SECOND_EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$SECOND_TARGET"
23+
elif [ "$OS_NAME" = "MacOS" ]; then
24+
EXEC_EXTENSION=".run"
25+
EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$PROJECT_NAME"
26+
SECOND_EXEC_PATH="$CMAKE_PROJECT_DIR/bin/$SECOND_TARGET"
27+
fi
28+
29+
EXEC_LINK_PATH="$HOME/$PROJECT_NAME$EXEC_EXTENSION"
30+
SECOND_EXEC_LINK_PATH="$HOME/$SECOND_TARGET$EXEC_EXTENSION"
31+
32+
if (cmake -S . -B "$CMAKE_PROJECT_DIR" -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" && cmake --build "$CMAKE_PROJECT_DIR" --target "$PROJECT_NAME" "$SECOND_TARGET"); then
33+
rm -f "$EXEC_LINK_PATH"
34+
rm -f "$SECOND_EXEC_LINK_PATH"
35+
ln -s "$EXEC_PATH" "$EXEC_LINK_PATH"
36+
ln -s "$SECOND_EXEC_PATH" "$SECOND_EXEC_LINK_PATH"
37+
echo ''
38+
39+
if ("$EXEC_LINK_PATH" -h >/dev/null 2>/dev/null && "$SECOND_EXEC_LINK_PATH" -h >/dev/null 2>/dev/null); then
40+
echo "Congratulations! $PROJECT_NAME was compiled successfully."
41+
echo ''
42+
"$EXEC_LINK_PATH" -h
43+
echo ''
44+
"$SECOND_EXEC_LINK_PATH" -h
45+
echo ''
46+
47+
if [ "$OS_NAME" = "Linux" ]; then
48+
printf 'Do you want to add this utility to /usr/bin (y/n)? ' && read -r CHOISE
49+
COMMON_LINK_PATH="/usr/bin/${PROJECT_NAME:?}"
50+
COMMON_SECOND_LINK_PATH="/usr/bin/${SECOND_TARGET:?}"
51+
COMMON_PROJECT_DIR="/opt/${PROJECT_NAME:?}"
52+
COMMON_EXEC_PATH="$COMMON_PROJECT_DIR/bin/$PROJECT_NAME"
53+
COMMON_SECOND_EXEC_PATH="$COMMON_PROJECT_DIR/bin/$SECOND_TARGET"
54+
55+
if [ "$CHOISE" = "y" ]; then
56+
sudo -S rm -f "$COMMON_LINK_PATH"
57+
sudo rm -f "$COMMON_SECOND_LINK_PATH"
58+
59+
if (sudo ln -s "$EXEC_PATH" "$COMMON_LINK_PATH"); then
60+
if [ -e "$COMMON_PROJECT_DIR" ]; then
61+
sudo rm -rf "$COMMON_PROJECT_DIR"
62+
fi
63+
64+
sudo rm -f "$COMMON_LINK_PATH"
65+
sudo cp -r "$CMAKE_PROJECT_DIR" "$COMMON_PROJECT_DIR"
66+
sudo ln -s "$COMMON_EXEC_PATH" "$COMMON_LINK_PATH"
67+
sudo ln -s "$COMMON_SECOND_EXEC_PATH" "$COMMON_SECOND_LINK_PATH"
68+
echo "Accepted, run utility with $PROJECT_NAME and $SECOND_TARGET"
69+
else
70+
echo 'Please try again later.'
71+
echo "Declined, run utility with $EXEC_LINK_PATH and $SECOND_EXEC_LINK_PATH"
72+
fi
73+
else
74+
echo "Declined, run utility with $EXEC_LINK_PATH and $SECOND_EXEC_LINK_PATH"
75+
fi
76+
else
77+
echo "Run utility with $EXEC_LINK_PATH and $SECOND_EXEC_LINK_PATH"
78+
fi
79+
exit 0
80+
elif (cd "$CMAKE_PROJECT_DIR" && "./$PROJECT_NAME$EXEC_EXTENSION" -h >/dev/null 2>/dev/null); then
81+
rm -f "$EXEC_LINK_PATH"
82+
rm -f "$SECOND_EXEC_LINK_PATH"
83+
rm -rf "$HOME/${PROJECT_NAME:?}"
84+
echo "Congratulations! $PROJECT_NAME was compiled successfully."
85+
echo "Because of Windows-specific limitations, it is not possible to create a link to it."
86+
echo "You can run it from $HOME/$PROJECT_NAME as .\\$PROJECT_NAME$EXEC_EXTENSION and .\\$SECOND_TARGET$EXEC_EXTENSION"
87+
echo "Or you can run CMD.EXE with administrative privileges and type: "
88+
echo 'mklink "%userprofile%\SimpleSearchEngine.exe" "%userprofile%\SimpleSearchEngine\SimpleSearchEngine.exe"'
89+
echo 'mklink "%userprofile%\SimpleSearchEngineIndexer.exe" "%userprofile%\SimpleSearchEngine\SimpleSearchEngineIndexer.exe"'
90+
echo ''
91+
mkdir "$HOME/$PROJECT_NAME"
92+
cp "$CMAKE_PROJECT_DIR/$PROJECT_NAME$EXEC_EXTENSION" "$HOME/$PROJECT_NAME/$PROJECT_NAME$EXEC_EXTENSION"
93+
cp "$CMAKE_PROJECT_DIR/$SECOND_TARGET$EXEC_EXTENSION" "$HOME/$PROJECT_NAME/$SECOND_TARGET$EXEC_EXTENSION"
94+
cd "$HOME/$PROJECT_NAME" && "./$PROJECT_NAME$EXEC_EXTENSION" -h && "./$SECOND_TARGET$EXEC_EXTENSION" -h
95+
exit 0
96+
else
97+
echo 'Oops! Could not execute the program.'
98+
exit 1
99+
fi
100+
else
101+
echo 'Error occurred during running CMake. Make sure that it is installed and configured properly.'
102+
exit 1
103+
fi

0 commit comments

Comments
 (0)