Workaround lack of builtin in /bin/sh
This commit is contained in:
parent
29e5c4a293
commit
af398c49fd
71
install.sh
71
install.sh
@ -13,7 +13,7 @@ usage() {
|
|||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat << EOF
|
cath << EOF
|
||||||
Installs code-server for Linux and macOS.
|
Installs code-server for Linux and macOS.
|
||||||
It tries to use the system package manager if possible.
|
It tries to use the system package manager if possible.
|
||||||
After successful installation it explains how to start using code-server.
|
After successful installation it explains how to start using code-server.
|
||||||
@ -67,8 +67,8 @@ echo_latest_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo_standalone_postinstall() {
|
echo_standalone_postinstall() {
|
||||||
echo
|
echoh
|
||||||
cat << EOF
|
cath << EOF
|
||||||
Standalone release has been installed into $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION
|
Standalone release has been installed into $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION
|
||||||
Please extend your path to use code-server:
|
Please extend your path to use code-server:
|
||||||
PATH="$STANDALONE_INSTALL_PREFIX/bin:\$PATH"
|
PATH="$STANDALONE_INSTALL_PREFIX/bin:\$PATH"
|
||||||
@ -78,8 +78,8 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo_systemd_postinstall() {
|
echo_systemd_postinstall() {
|
||||||
echo
|
echoh
|
||||||
cat << EOF
|
cath << EOF
|
||||||
To have systemd start code-server now and restart on boot:
|
To have systemd start code-server now and restart on boot:
|
||||||
systemctl --user enable --now code-server
|
systemctl --user enable --now code-server
|
||||||
Or, if you don't want/need a background service you can run:
|
Or, if you don't want/need a background service you can run:
|
||||||
@ -163,7 +163,7 @@ main() {
|
|||||||
echoerr 'Please rerun without the "--method standalone" flag to install from npm.'
|
echoerr 'Please rerun without the "--method standalone" flag to install from npm.'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "No precompiled releases for $(uname -m)."
|
echoh "No precompiled releases for $(uname -m)."
|
||||||
install_npm
|
install_npm
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -190,7 +190,7 @@ main() {
|
|||||||
install_aur
|
install_aur
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported package manager."
|
echoh "Unsupported package manager."
|
||||||
install_standalone
|
install_standalone
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -233,7 +233,7 @@ fetch() {
|
|||||||
FILE="$2"
|
FILE="$2"
|
||||||
|
|
||||||
if [ -e "$FILE" ]; then
|
if [ -e "$FILE" ]; then
|
||||||
echo "+ Reusing $CACHE_DIR/${URL##*/}"
|
echoh "+ Reusing $CACHE_DIR/${URL##*/}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -247,22 +247,22 @@ fetch() {
|
|||||||
|
|
||||||
install_macos() {
|
install_macos() {
|
||||||
if command_exists brew; then
|
if command_exists brew; then
|
||||||
echo "Installing from Homebrew."
|
echoh "Installing from Homebrew."
|
||||||
echo
|
echoh
|
||||||
|
|
||||||
sh_c brew install code-server
|
sh_c brew install code-server
|
||||||
|
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Homebrew not installed."
|
echoh "Homebrew not installed."
|
||||||
|
|
||||||
install_standalone
|
install_standalone
|
||||||
}
|
}
|
||||||
|
|
||||||
install_deb() {
|
install_deb() {
|
||||||
echo "Installing v$VERSION deb package from GitHub releases."
|
echoh "Installing v$VERSION deb package from GitHub releases."
|
||||||
echo
|
echoh
|
||||||
|
|
||||||
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server_${VERSION}_$ARCH.deb" \
|
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server_${VERSION}_$ARCH.deb" \
|
||||||
"$CACHE_DIR/code-server_${VERSION}_$ARCH.deb"
|
"$CACHE_DIR/code-server_${VERSION}_$ARCH.deb"
|
||||||
@ -272,8 +272,8 @@ install_deb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_rpm() {
|
install_rpm() {
|
||||||
echo "Installing v$VERSION rpm package from GitHub releases."
|
echoh "Installing v$VERSION rpm package from GitHub releases."
|
||||||
echo
|
echoh
|
||||||
|
|
||||||
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$ARCH.rpm" \
|
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$ARCH.rpm" \
|
||||||
"$CACHE_DIR/code-server-$VERSION-$ARCH.rpm"
|
"$CACHE_DIR/code-server-$VERSION-$ARCH.rpm"
|
||||||
@ -283,27 +283,28 @@ install_rpm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_aur() {
|
install_aur() {
|
||||||
echo "Installing from the AUR."
|
echoh "Installing from the AUR."
|
||||||
echo
|
echoh
|
||||||
|
|
||||||
tmp_dir="$(mktemp -d)"
|
tmp_dir="$(mktemp -d)"
|
||||||
|
|
||||||
echo "+ Downloading PKGBUILD into $tmp_dir from https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz"
|
echoh "+ Downloading PKGBUILD into $tmp_dir from https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz"
|
||||||
curl -fsSL https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz | tar -xzC "$tmp_dir"
|
curl -fsSL https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz | tar -xzC "$tmp_dir"
|
||||||
VERSION="$(. "$tmp_dir/code-server/PKGBUILD" && echo "$pkgver")"
|
VERSION="$(. "$tmp_dir/code-server/PKGBUILD" && echo "$pkgver")"
|
||||||
rm -R "$tmp_dir"
|
|
||||||
|
|
||||||
sh_c mkdir -p "$CACHE_DIR/code-server-$VERSION-aur"
|
sh_c mkdir -p "$CACHE_DIR/code-server-$VERSION-aur"
|
||||||
sh_c cp -a "$tmp_dir/code-server/*" "$CACHE_DIR/code-server-$VERSION-aur"
|
sh_c cp -a "$tmp_dir/code-server/*" "$CACHE_DIR/code-server-$VERSION-aur"
|
||||||
sh_c cd "$CACHE_DIR/code-server-$VERSION-aur"
|
sh_c cd "$CACHE_DIR/code-server-$VERSION-aur"
|
||||||
sh_c makepkg -si
|
sh_c makepkg -si
|
||||||
|
|
||||||
|
rm -R "$tmp_dir"
|
||||||
|
|
||||||
echo_systemd_postinstall
|
echo_systemd_postinstall
|
||||||
}
|
}
|
||||||
|
|
||||||
install_standalone() {
|
install_standalone() {
|
||||||
echo "Installing standalone release archive v$VERSION"
|
echoh "Installing standalone release archive v$VERSION"
|
||||||
echo
|
echoh
|
||||||
|
|
||||||
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$OS-$ARCH.tar.gz" \
|
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$OS-$ARCH.tar.gz" \
|
||||||
"$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz"
|
"$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz"
|
||||||
@ -314,9 +315,9 @@ install_standalone() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION" ]; then
|
if [ -e "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION" ]; then
|
||||||
echo
|
echoh
|
||||||
echo "code-server-$VERSION is already installed at $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION"
|
echoh "code-server-$VERSION is already installed at $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION"
|
||||||
echo "Remove it to reinstall."
|
echoh "Remove it to reinstall."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -334,8 +335,8 @@ install_npm() {
|
|||||||
if [ ! -w "$(yarn global bin)" ]; then
|
if [ ! -w "$(yarn global bin)" ]; then
|
||||||
sh_c="sudo_sh_c"
|
sh_c="sudo_sh_c"
|
||||||
fi
|
fi
|
||||||
echo "Installing with yarn."
|
echoh "Installing with yarn."
|
||||||
echo
|
echoh
|
||||||
"$sh_c" yarn global add code-server --unsafe-perm
|
"$sh_c" yarn global add code-server --unsafe-perm
|
||||||
return
|
return
|
||||||
elif command_exists npm; then
|
elif command_exists npm; then
|
||||||
@ -343,12 +344,12 @@ install_npm() {
|
|||||||
if [ ! -w "$(npm config get prefix)" ]; then
|
if [ ! -w "$(npm config get prefix)" ]; then
|
||||||
sh_c="sudo_sh_c"
|
sh_c="sudo_sh_c"
|
||||||
fi
|
fi
|
||||||
echo "Installing with npm."
|
echoh "Installing with npm."
|
||||||
echo
|
echoh
|
||||||
"$sh_c" npm install -g code-server --unsafe-perm
|
"$sh_c" npm install -g code-server --unsafe-perm
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
echo
|
echoh
|
||||||
echoerr "Please install npm or yarn to install code-server!"
|
echoerr "Please install npm or yarn to install code-server!"
|
||||||
echoerr "You will need at least node v12 and a few C dependencies."
|
echoerr "You will need at least node v12 and a few C dependencies."
|
||||||
echoerr "See the docs https://github.com/cdr/code-server#yarn-npm"
|
echoerr "See the docs https://github.com/cdr/code-server#yarn-npm"
|
||||||
@ -433,7 +434,7 @@ command_exists() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sh_c() {
|
sh_c() {
|
||||||
echo "+ $*"
|
echoh "+ $*"
|
||||||
if [ ! "${DRY_RUN-}" ]; then
|
if [ ! "${DRY_RUN-}" ]; then
|
||||||
sh -c "$*"
|
sh -c "$*"
|
||||||
fi
|
fi
|
||||||
@ -447,7 +448,7 @@ sudo_sh_c() {
|
|||||||
elif command_exists su; then
|
elif command_exists su; then
|
||||||
sh_c "su -c '$*'"
|
sh_c "su -c '$*'"
|
||||||
else
|
else
|
||||||
echo
|
echoh
|
||||||
echoerr "This script needs to run the following command as root."
|
echoerr "This script needs to run the following command as root."
|
||||||
echoerr " $*"
|
echoerr " $*"
|
||||||
echoerr "Please install sudo or su."
|
echoerr "Please install sudo or su."
|
||||||
@ -465,16 +466,16 @@ echo_cache_dir() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
echo() {
|
echoh() {
|
||||||
builtin echo "$@" | humanpath
|
echo "$@" | humanpath
|
||||||
}
|
}
|
||||||
|
|
||||||
cat() {
|
cath() {
|
||||||
humanpath
|
humanpath
|
||||||
}
|
}
|
||||||
|
|
||||||
echoerr() {
|
echoerr() {
|
||||||
echo "$@" >&2
|
echoh "$@" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
# humanpath replaces all occurances of $HOME with ~
|
# humanpath replaces all occurances of $HOME with ~
|
||||||
|
Reference in New Issue
Block a user