blob: c72949bcead574ea5124b614d246aa7fed643cd4 (
plain) (
blame)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
#!/bin/bash
tput rev
printf '%s\n' "Luxcena-neo Installer"
tput sgr0
printf '\e[93m%s\e[0m\n\n' "---------------------"
if [ $USER != "pi" ]; then
printf "Install failed...\nOther user than 'pi' detected. If you want to use another user, you have to install manually."
exit 1
fi
# Update system
tput sc
tput setaf 4
printf ". Update your system (y/n)? "
while :
do
read -n 1 -p "" YNQuestionAnswer
if [[ $YNQuestionAnswer == "y" ]]; then
tput rc; tput el
printf ". Update your system?: \e[0;32mYes\e[0m\n"
tput sc
sudo apt-get -y -qq update || { printf "\n\nInstall failed.\n"; exit 1; }
sudo apt-get -y -qq upgrade || { printf "\n\nInstall failed.\n"; exit 1; }
tput rc; tput ed
break
elif [[ $YNQuestionAnswer == "n" ]]; then
tput rc; tput el
printf ". Update your system?: \e[0;31mNo\e[0m\n"
break
fi
done
# Install packages
tput sc
tput setaf 4
printf ". Install required packages (y/n)? "
while :
do
read -n 1 -p "" YNQuestionAnswer
if [[ $YNQuestionAnswer == "y" ]]; then
tput rc; tput el
printf ". Install required packages?: \e[0;32mYes\e[0m\n"
tput sc
sudo apt-get -y -qq install nodejs scons python-dev swig || { printf "\n\nInstall failed.\n"; exit 1; }
if [ $? -eq 0 ]; then
tput rc; tput ed
printf "✓"
else
printf "\nInstall failed.\n"
exit 1
fi
break
elif [[ $YNQuestionAnswer == "n" ]]; then
tput rc; tput el
printf ". Install required packages?: \e[0;31mNo\e[0m\n"
tput setaf 2
printf " We are now assuming that all the following packages exists on your system:\n"
printf " nodejs scons python-dev swig\n"
tput sgr0
break
fi
done
# Install led-library
tput sc
tput setaf 4
printf ". Install jgarff's rpi_ws281x library (y/n)? "
while :
do
read -n 1 -p "" YNQuestionAnswer
if [[ $YNQuestionAnswer == "y" ]]; then
tput rc; tput el
printf ". Install jgarff's rpi_ws281x library?: \e[0;32mYes\e[0m\n"
tput sc
git clone https://github.com/jgarff/rpi_ws281x /tmp/rpi_ws281x # TODO CHANGE PATH
python /tmp/rpi_ws281x/python/setup.py install # TODO CHANGE PAHT
if [ $? -eq 0 ]; then
tput rc; tput ed
printf "✓"
else
printf "\nInstall failed.\n"
exit 1
fi
break
elif [[ $YNQuestionAnswer == "n" ]]; then
tput rc; tput el
printf ". Install jgarff's rpi_ws281x library?: \e[0;31mNo\e[0m\n"
break
fi
done
tput setaf 4
printf ". Which rPi is this? (j:↓, k:↑, ↩:↩)\n"
tput sgr0
tput sc
tput bel
piModel=0
printf "\n\n\n" # So that the menu just erases things it has alredy written
while :
do
tput cuu 3
tput ed
tput sc
tput setaf 8
if [[ piModel -eq 0 ]]; then
tput sgr0; fi
printf '%s\n' "- Raspberry Pi B"
tput setaf 8
if [[ piModel -eq 1 ]]; then
tput sgr0; fi
printf '%s\n' "- Raspberry Pi B+"
tput setaf 8
if [[ piModel -eq 2 ]]; then
tput sgr0; fi
printf '%s\n' "- Raspberry Pi Model 2"
tput setaf 8
read -sn1 key
if [ "$key" == "j" ]; then
piModel=$((piModel+1))
if [[ piModel -gt 2 ]]; then
piModel=2
fi
fi
if [ "$key" == "k" ]; then
piModel=$((piModel-1))
if [[ piModel -lt 0 ]]; then
piModel=0
fi
fi
if [ "$key" == "" ]; then
tput cuu 4
tput ed
tput sgr0
printf "%s\e[0;34m%s\e[0m\n" ". Which rPi is this? " "ListItem #$piModel"
break
fi
done
tput setaf 4
printf ". Installing the app itself...\n"
tput sgr0
# First we make our directories
tput setaf 8
printf '%s\n' " - Making app-dir (/bin/luxcena-neo)..."
tput sgr0
mkdir ~/luxcena-neo-install || { printf "\n\nInstall failed.\n"; exit 1; }
mkdir ~/luxcena-neo-install/src || { printf "\n\nInstall failed.\n"; exit 1; }
mkdir ~/luxcena-neo-install/userdata || { printf "\n\nInstall failed.\n"; exit 1; }
# Third we copy the source into the correct swap-folder
tput setaf 8
printf '%s\n' " - Copying sourceCode to app-dir..."
tput sgr0
cp -r . ~/luxcena-neo-install/src || { printf "\n\nInstall failed.\n"; exit 1; }
# fourth we run npm i
tput setaf 8
printf '%s\n' " - Running npm i..."
tput sgr0
tput sc
export NODE_ENV=production || { printf "\n\nInstall failed.\n"; exit 1; }
npm --prefix ~/luxcena-neo-install/src install ~/luxcena-neo-install/src --only=production || { printf "\n\nInstall failed.\n"; exit 1; } # This is probably a bit overkill to have --only=... but better safe than sorry?
tput rc; tput ed
# Fifth we add the service files
tput setaf 8
printf '%s\n' " - Adding service-file to systemd..."
tput sgr0
sudo cp bin/luxcena-neo.service /etc/systemd/system/luxcena-neo.service
sudo systemctl daemon-reload
# Installation is done!
printf '\n\e[5m%s\e[0m\n' "🎉Luxcena-Neo is now installed🎉"
|