/
npm
76 lines (63 loc) · 2.01 KB
/
npm
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
#!/bin/sh
APP=node
SITE="https://nodejs.org"
# CREATE THE FOLDER
mkdir /opt/$APP
cd /opt/$APP
# ADD THE REMOVER
echo '#!/bin/sh' >> /opt/$APP/remove
echo "rm -R -f /usr/share/applications/AM-$APP.desktop /opt/$APP /usr/local/bin/$APP
cd /usr/local/bin && find . -xtype l -exec rm {} \;" >> /opt/$APP/remove
chmod a+x /opt/$APP/remove
# DOWNLOAD THE ARCHIVE
mkdir tmp
cd ./tmp
version=$(echo "https://nodejs.org/dist/latest/$(curl -Ls https://nodejs.org/dist/latest/ | grep "linux-x64.tar.gz" | grep -o -P '(?<=href=").*(?=">node)')")
wget $version
echo "$version" >> /opt/$APP/version
tar fx ./*tar.gz
cd ..
mv ./tmp/node*linux-x64/* ./
rm -R -f ./tmp
# LINKS
ln -s /opt/$APP/bin/$APP /usr/local/bin/$APP
ln -s /opt/$APP/bin/npm /usr/local/bin/npm
ln -s /opt/$APP/bin/npx /usr/local/bin/npx
ln -s /opt/$APP/bin/corepack /usr/local/bin/corepak
# SCRIPT TO UPDATE THE PROGRAM
cat >> /opt/$APP/AM-updater << 'EOF'
#!/usr/bin/env bash
APP=node
version0=$(cat /opt/$APP/version)
version=$(echo "https://nodejs.org/dist/latest/$(curl -Ls https://nodejs.org/dist/latest/ | grep "linux-x64.tar.gz" | grep -o -P '(?<=href=").*(?=">node)')")
if [ $version = $version0 ]; then
echo "Update not needed!"
else
notify-send "A new version of $APP is available, please wait"
mkdir /opt/$APP/tmp
cd /opt/$APP/tmp
wget $version
tar fx ./*tar.gz
cd ..
mv --backup=t ./tmp/node*linux-x64/* ./
rm -R -f ./tmp
rm ./version
echo $version >> ./version
chmod a+x /opt/$APP/$APP
rm -R -f ./tmp ./*~
notify-send "$APP is updated!"
fi
EOF
chmod a+x /opt/$APP/AM-updater
# LAUNCHER
rm -f /usr/share/applications/AM-$APP.desktop
echo "[Desktop Entry]
Name=NodeJS (Terminal)
Comment=A JavaScript runtime built on Chrome's V8 JavaScript engine.
Exec=exo-open --working-directory /opt/$APP/bin --launch TerminalEmulator
Icon=/opt/$APP/icons/$APP
Type=Application
Categories=Development;" >> /usr/share/applications/AM-$APP.desktop
# ICON
mkdir icons
wget https://nodejs.org/static/images/favicons/apple-touch-icon.png -O ./icons/$APP 2> /dev/null