Fixes from @code-asher's godly review

This commit is contained in:
Anmol Sethi 2020-05-27 15:48:03 -04:00
parent 33bca2d141
commit 665ca017a1
No known key found for this signature in database
GPG Key ID: 8CEF1878FF10ADEB
6 changed files with 59 additions and 46 deletions

View File

@ -25,7 +25,7 @@ It tries to use the system package manager if possible.
First run to print out the install process:
```bash
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
```
Now to actually install:

View File

@ -9,7 +9,7 @@ main() {
tsc --noEmit
# See comment in ./ci/container/Dockerfile
if [[ ! ${CI-} ]]; then
shellcheck -e SC2046,SC2164,SC2154,SC1091 $(git ls-files "*.sh")
shellcheck -e SC2046,SC2164,SC2154,SC1091,SC1090 $(git ls-files "*.sh")
fi
}

View File

@ -152,15 +152,13 @@ user a virtual machine instead of just a container.
## Docker in code-server container?
If you'd like to access docker inside of code-server, we'd recommend running a `docker:dind` container
and mounting in a directory to share between `dind` and the `code-server` container at `/var/run`.
After, install the docker CLI in the code-server container and you should be able to access the
daemon as the socket will be shared at `/var/run/docker.sock`.
If you'd like to access docker inside of code-server, mount the docker socket in from `/var/run/docker.sock`.
Install the docker CLI in the code-server container and you should be able to access the daemon!
In order to make volume mounts work, mount the home directory in the code-server container and the
dind container at the same path. i.e you'd volume mount a directory from the host to `/home/coder`
on both. This will allow any volume mounts in the home directory to work. Similar process
to make volume mounts in any other directory work.
You can even make volume mounts work. Lets say you want to run a container and mount in
`/home/coder/myproject` into it from inside the `code-server` container. You need to make sure
the docker daemon's `/home/coder/myproject` is the same as the one mounted inside the `code-server`
container and the mount will just work.
## Collaboration
@ -269,7 +267,7 @@ it is against their TOS to use the published extensions so we are unable to
add them to our marketplace.
We may reimplement them at some point.
You can follow [#1315](https://github.com/cdr/code-server/issues/1315) for updates.
You can subscribe to [#1315](https://github.com/cdr/code-server/issues/1315) for updates.
## Enterprise

View File

@ -78,14 +78,14 @@ to avoid the slow dashboard.
## 2. Install code-server
We have a [script](./install.sh) to install `code-server` for Linux and macOS.
We have a [script](../install.sh) to install `code-server` for Linux and macOS.
It tries to use the system package manager if possible.
First run to print out the install process:
```bash
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
```
Now to actually install:
@ -96,7 +96,7 @@ curl -fsSL https://code-server.dev/install.sh | sh
The install script will print out how to run and start using `code-server`.
Docs on the install script, manual installation and docker image are at [./doc/install.md](./doc/install.md).
Docs on the install script, manual installation and docker image are at [./install.md](./install.md).
## 3. Expose code-server
@ -205,7 +205,7 @@ the dependency on caddy.
### Self Signed Certificate
**note:** Self signed certificates do not work with iPad and will cause a blank page. You'll
have to use [Let's Encrypt](#lets-encrypt) instead. See the [FAQ](https://github.com/cdr/code-server/blob/master/doc/FAQ.md#blank-screen-on-ipad).
have to use [Let's Encrypt](#lets-encrypt) instead. See the [FAQ](./FAQ.md#blank-screen-on-ipad).
Recommended reading: https://security.stackexchange.com/a/8112.
@ -255,4 +255,4 @@ systemctl --user restart code-server
If you're working on a web service and want to access it locally, `code-server` can proxy it for you.
See the [FAQ](https://github.com/cdr/code-server/blob/master/doc/FAQ.md#how-do-i-securely-access-web-services).
See the [FAQ](./FAQ.md#how-do-i-securely-access-web-services).

View File

@ -20,14 +20,14 @@ various distros and operating systems.
## install.sh
We have a [script](./install.sh) to install code-server for Linux and macOS.
We have a [script](../install.sh) to install code-server for Linux and macOS.
It tries to use the system package manager if possible.
First run to print out the install process:
```bash
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
```
Now to actually install:
@ -43,7 +43,7 @@ If you believe an install script used with `curl | sh` is insecure, please give
[sandstorm.io](https://sandstorm.io) a read.
If you'd still prefer manual installation despite the below [detect reference](#detect-reference) and `--dry-run`
then continue on for docs on manual installation. The [`install.sh`](./install.sh) script runs the _exact_ same
then continue on for docs on manual installation. The [`install.sh`](../install.sh) script runs the _exact_ same
commands presented in the rest of this document.
### Flags
@ -117,7 +117,7 @@ We recommend installing with `yarn` or `npm` when:
2. If you're on Linux with glibc < v2.17
**note:** Installing via `yarn` or `npm` builds native modules on install and so requires C dependencies.
See [./doc/npm.md](./doc/npm.md) for installing these dependencies.
See [./npm.md](./npm.md) for installing these dependencies.
You will need at least node v12 installed. See [#1633](https://github.com/cdr/code-server/issues/1633).

View File

@ -95,7 +95,6 @@ main() {
DRY_RUN \
METHOD \
ARCHIVE_INSTALL_PREFIX \
SKIP_ECHO \
VERSION \
OPTIONAL
@ -199,7 +198,9 @@ main() {
parse_arg() {
case "$1" in
*=*)
opt="${1#=*}"
# Remove everything after first equal sign.
opt="${1%%=*}"
# Remove everything before first equal sign.
optarg="${1#*=}"
if [ ! "$optarg" ] && [ ! "${OPTIONAL-}" ]; then
echoerr "$opt requires an argument"
@ -230,23 +231,17 @@ fetch() {
URL="$1"
FILE="$2"
echo "+ Downloading $URL"
if [ -e "$FILE" ]; then
echo "+ Using cached $FILE"
echo "+ Reusing $CACHE_DIR/${URL##*/}"
return
fi
SKIP_ECHO=1
sh_c curl \
-#fL \
-o "$FILE.incomplete" \
-C - \
"$URL"
sh_c mv "$FILE.incomplete" "$FILE"
unset SKIP_ECHO
echo "+ Downloaded into $FILE"
}
install_macos() {
@ -290,19 +285,21 @@ install_aur() {
echo "Installing from the AUR."
echo
prev_dir="$PWD"
tmp_dir="$(mktemp -d)"
cd "$tmp_dir"
echo "+ Downloading PKGBUILD from https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz"
SKIP_ECHO=1 sh_c 'curl -fsSL https://aur.archlinux.org/cgit/aur.git/snapshot/code-server.tar.gz | tar -xz --strip-components 1'
unset SKIP_ECHO
echo "+ Downloaded into $tmp_dir"
echo "+ 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"
VERSION="$(. "$tmp_dir/code-server/PKGBUILD" && echo "$pkgver")"
rm -R "$tmp_dir"
mkdir -p "$CACHE_DIR/code-server-$VERSION-aur"
sh_c cp -a "$tmp_dir/code-server/*" "$CACHE_DIR/code-server-$VERSION-aur"
echo "+ Installing $CACHE_DIR/code-server-$VERSION-aur"
cd "$CACHE_DIR/code-server-$VERSION-aur"
sh_c makepkg -si
cd "$prev_dir"
rm -Rf "$tmp_dir"
echo_systemd_postinstall
}
@ -318,15 +315,14 @@ install_archive() {
sh_c="sudo_sh_c"
fi
SKIP_ECHO=1 sh_c mkdir -p "$ARCHIVE_INSTALL_PREFIX/lib" "$ARCHIVE_INSTALL_PREFIX/bin"
unset SKIP_ECHO
if [ -e "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION" ]; then
echo
echo "code-server-$VERSION is already installed at $ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION"
echo "Remove it to reinstall."
exit 0
fi
"$sh_c" mkdir -p "$ARCHIVE_INSTALL_PREFIX/lib" "$ARCHIVE_INSTALL_PREFIX/bin"
"$sh_c" tar -C "$ARCHIVE_INSTALL_PREFIX/lib" -xzf "$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz"
"$sh_c" mv -f "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION-$OS-$ARCH" "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION"
"$sh_c" ln -fs "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION/bin/code-server" "$ARCHIVE_INSTALL_PREFIX/bin/code-server"
@ -336,14 +332,22 @@ install_archive() {
install_npm() {
if command_exists yarn; then
sh_c="sh_c"
if [ ! -w "$(yarn global bin)" ]; then
sh_c="sudo_sh_c"
fi
echo "Installing with yarn."
echo
sh_c yarn global add code-server --unsafe-perm
"$sh_c" yarn global add code-server --unsafe-perm
return
elif command_exists npm; then
sh_c="sh_c"
if [ ! -w "$(npm config get prefix)" ]; then
sh_c="sudo_sh_c"
fi
echo "Installing with npm."
echo
sh_c npm install -g code-server --unsafe-perm
"$sh_c" npm install -g code-server --unsafe-perm
return
fi
echo
@ -431,9 +435,7 @@ command_exists() {
}
sh_c() {
if [ ! "${SKIP_ECHO-}" ]; then
echo "+ $*"
fi
echo "+ $*"
if [ ! "${DRY_RUN-}" ]; then
sh -c "$*"
fi
@ -465,8 +467,21 @@ echo_cache_dir() {
fi
}
echo() {
builtin echo "$@" | humanpath
}
cat() {
humanpath
}
echoerr() {
echo "$@" >&2
}
# humanpath replaces all occurances of $HOME with ~
humanpath() {
sed "s#$HOME#~#g"
}
main "$@"