未验证 提交 665ca017 编写于 作者: A Anmol Sethi

Fixes from @code-asher's godly review

上级 33bca2d1
......@@ -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:
......
......@@ -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
}
......
......@@ -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
......
......@@ -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).
......@@ -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).
......
......@@ -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,18 +285,20 @@ 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"
sh_c makepkg -si
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"
cd "$prev_dir"
rm -Rf "$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
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 "$@"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册