Compare commits
16 Commits
1.31.0-20
...
1.31.1-100
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17267bd801 | ||
|
|
ac56fcaafc | ||
|
|
e20b79b5cc | ||
|
|
e99f8abc3c | ||
|
|
994531d8bb | ||
|
|
8916cb9bb2 | ||
|
|
d4867ca430 | ||
|
|
3fbdb2e46c | ||
|
|
1d8da2161f | ||
|
|
414eb7076f | ||
|
|
2b3d2933eb | ||
|
|
14ead1a62f | ||
|
|
3b48c57861 | ||
|
|
c772e920cd | ||
|
|
e6aa74c412 | ||
|
|
838c8a6f2c |
1
.dockerignore
Normal file
1
.dockerignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Dockerfile
|
||||||
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -9,7 +9,7 @@ assignees: ''
|
|||||||
<!-- Please search existing issues to avoid creating duplicates. -->
|
<!-- Please search existing issues to avoid creating duplicates. -->
|
||||||
<!-- All extension-specific issues should be created with the `Extension Bug` template. -->
|
<!-- All extension-specific issues should be created with the `Extension Bug` template. -->
|
||||||
|
|
||||||
- `vscode-remote` version: <!-- The version of vscode-remote -->
|
- `code-server` version: <!-- The version of code-server -->
|
||||||
- OS Version: <!-- OS version, cloud provider, -->
|
- OS Version: <!-- OS version, cloud provider, -->
|
||||||
|
|
||||||
#### Steps to Reproduce
|
#### Steps to Reproduce
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/extension_bug.md
vendored
2
.github/ISSUE_TEMPLATE/extension_bug.md
vendored
@@ -8,7 +8,7 @@ assignees: ''
|
|||||||
|
|
||||||
<!-- Please search existing issues to avoid creating duplicates. -->
|
<!-- Please search existing issues to avoid creating duplicates. -->
|
||||||
|
|
||||||
- `vscode-remote` version: <!-- The version of vscode-remote -->
|
- `code-server` version: <!-- The version of code-server -->
|
||||||
- OS Version: <!-- OS version, cloud provider, -->
|
- OS Version: <!-- OS version, cloud provider, -->
|
||||||
- Extension: <!-- Link to extension -->
|
- Extension: <!-- Link to extension -->
|
||||||
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ node_modules
|
|||||||
dist
|
dist
|
||||||
out
|
out
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
release
|
||||||
|
|||||||
18
.travis.yml
18
.travis.yml
@@ -1,6 +1,8 @@
|
|||||||
language: node_js
|
language: node_js
|
||||||
node_js:
|
node_js:
|
||||||
- 8.9.3
|
- 8.9.3
|
||||||
|
env:
|
||||||
|
- VERSION="1.31.1-$TRAVIS_BUILD_NUMBER"
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -12,22 +14,24 @@ before_install:
|
|||||||
script:
|
script:
|
||||||
- scripts/build.sh
|
- scripts/build.sh
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- export TRAVIS_TAG="1.31.0-$TRAVIS_BUILD_NUMBER"
|
- echo "$VERSION" "$TRAVIS_COMMIT"
|
||||||
- echo "$TRAVIS_TAG" "$TRAVIS_COMMIT"
|
|
||||||
- git config --local user.name "$USER_NAME"
|
- git config --local user.name "$USER_NAME"
|
||||||
- git config --local user.email "$USER_EMAIL"
|
- git config --local user.email "$USER_EMAIL"
|
||||||
- git tag "$TRAVIS_TAG" "$TRAVIS_COMMIT"
|
- git tag "$VERSION" "$TRAVIS_COMMIT"
|
||||||
|
- yarn task package "$VERSION"
|
||||||
deploy:
|
deploy:
|
||||||
provider: releases
|
provider: releases
|
||||||
file_glob: true
|
file_glob: true
|
||||||
draft: true
|
draft: true
|
||||||
tag_name: $TRAVIS_TAG
|
tag_name: "$VERSION"
|
||||||
target_commitish: $TRAVIS_COMMIT
|
target_commitish: "$TRAVIS_COMMIT"
|
||||||
name: $TRAVIS_TAG
|
name: "$VERSION"
|
||||||
skip_cleanup: true
|
skip_cleanup: true
|
||||||
api_key:
|
api_key:
|
||||||
secure: YL/x24KjYjgYXPcJWk3FV7FGxI79Mh6gBECQEcdlf3fkLEoKFVgzHBoUNWrFPzyR4tgLyWNAgcpD9Lkme1TRWTom7UPjXcwMNyLcLa+uec7ciSAnYD9ntLTpiCuPDD1u0LtRGclSi/EHQ+F8YVq+HZJpXTsJeAmOmihma3GVbGKSZr+BRum+0YZSG4w+o4TOlYzw/4bLWS52MogZcwpjd+hemBbgXLuGU2ziKv2vEKCZFbEeA16II4x1WLI4mutDdCeh7+3aLzGLwDa49NxtsVYNjyNFF75JhCTCNA55e2YMiLz9Uq69IXe/mi5F7xUaFfhIqqLNyKBnKeEOzu3dYnc+8n3LjnQ+00PmkF05nx9kBn3UfV1kwQGh6QbyDmTtBP07rtUMyI14aeQqHjxsaVRdMnwj9Q2DjXRr8UDqESZF0rmK3pHCXS2fBhIzLE8tLVW5Heiba2pQRFMHMZW+KBE97FzcFh7is90Ait3T8enfcd/PWFPYoBejDAdjwxwOkezh5N5ZkYquEfDYuWrFi6zRFCktsruaAcA+xGtTf9oilBBzUqu8Ie+YFWH5me83xakcblJWdaW/D2rLJAJH3m6LFm8lBqyUgDX5t/etob6CpDuYHu5D1J3XINOj/+aLAcadq6qlh70PMZS3zYffUu3JlzaD2amlSHIT8b5YXFc=
|
secure: YL/x24KjYjgYXPcJWk3FV7FGxI79Mh6gBECQEcdlf3fkLEoKFVgzHBoUNWrFPzyR4tgLyWNAgcpD9Lkme1TRWTom7UPjXcwMNyLcLa+uec7ciSAnYD9ntLTpiCuPDD1u0LtRGclSi/EHQ+F8YVq+HZJpXTsJeAmOmihma3GVbGKSZr+BRum+0YZSG4w+o4TOlYzw/4bLWS52MogZcwpjd+hemBbgXLuGU2ziKv2vEKCZFbEeA16II4x1WLI4mutDdCeh7+3aLzGLwDa49NxtsVYNjyNFF75JhCTCNA55e2YMiLz9Uq69IXe/mi5F7xUaFfhIqqLNyKBnKeEOzu3dYnc+8n3LjnQ+00PmkF05nx9kBn3UfV1kwQGh6QbyDmTtBP07rtUMyI14aeQqHjxsaVRdMnwj9Q2DjXRr8UDqESZF0rmK3pHCXS2fBhIzLE8tLVW5Heiba2pQRFMHMZW+KBE97FzcFh7is90Ait3T8enfcd/PWFPYoBejDAdjwxwOkezh5N5ZkYquEfDYuWrFi6zRFCktsruaAcA+xGtTf9oilBBzUqu8Ie+YFWH5me83xakcblJWdaW/D2rLJAJH3m6LFm8lBqyUgDX5t/etob6CpDuYHu5D1J3XINOj/+aLAcadq6qlh70PMZS3zYffUu3JlzaD2amlSHIT8b5YXFc=
|
||||||
file: packages/server/cli-*
|
file:
|
||||||
|
- release/*.tar.gz
|
||||||
|
- release/*.zip
|
||||||
on:
|
on:
|
||||||
repo: codercom/code-server
|
repo: codercom/code-server
|
||||||
branch: master
|
branch: master
|
||||||
|
|||||||
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
FROM node:8.15.0
|
||||||
|
|
||||||
|
# Install VS Code's deps. These are the only two it seems we need.
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y libxkbfile-dev libsecret-1-dev
|
||||||
|
|
||||||
|
# Ensure latest yarn.
|
||||||
|
RUN npm install -g yarn
|
||||||
|
|
||||||
|
# In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make it use the node_modules
|
||||||
|
# directly which should be faster.
|
||||||
|
WORKDIR /src
|
||||||
|
COPY . .
|
||||||
|
RUN yarn
|
||||||
|
RUN yarn task build:server:binary
|
||||||
|
|
||||||
|
# We deploy with ubuntu so that devs have a familiar environemnt.
|
||||||
|
FROM ubuntu:18.10
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y openssl
|
||||||
|
RUN apt-get install -y net-tools
|
||||||
|
WORKDIR /root/project
|
||||||
|
COPY --from=0 /src/packages/server/cli-linux /usr/local/bin/code-server
|
||||||
|
EXPOSE 8443
|
||||||
|
# Unfortunately `.` does not work with code-server.
|
||||||
|
CMD code-server $PWD
|
||||||
27
README.md
27
README.md
@@ -3,15 +3,36 @@
|
|||||||
[](https://github.com/codercom/code-server/issues)
|
[](https://github.com/codercom/code-server/issues)
|
||||||
[](https://github.com/codercom/code-server/releases/latest)
|
[](https://github.com/codercom/code-server/releases/latest)
|
||||||
[](#)
|
[](#)
|
||||||
|
[](https://discord.gg/zxSwN8Z)
|
||||||
|
|
||||||
`code-server` is VS Code running on a remote server, accessible through the browser.
|
`code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a remote server, accessible through the browser.
|
||||||
|
|
||||||
|
Try it out:
|
||||||
|
```bash
|
||||||
|
docker run -p localhost:8443:8443 -v "${PWD}:/root/project" codercom/code-server code-server --allow-http --no-auth
|
||||||
|
```
|
||||||
|
|
||||||
|
- Code on your Chromebook, tablet, and laptop with a consistent dev environment.
|
||||||
|
- If you have a Windows or Mac workstation, more easily develop for Linux.
|
||||||
|
- Take advantage of large cloud servers to speed up tests, compilations, downloads, and more.
|
||||||
|
- Preserve battery life when you're on the go.
|
||||||
|
- All intensive computation is ran on your server.
|
||||||
|
- You're no longer running excess instances of Chrome.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
### Hosted
|
||||||
|
|
||||||
[Try `code-server` now](https://coder.com/signup) for free at coder.com.
|
[Try `code-server` now](https://coder.com/signup) for free at coder.com.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
See docker oneliner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile).
|
||||||
|
|
||||||
|
### Binaries
|
||||||
|
|
||||||
1. [Download a binary](https://github.com/codercom/code-server/releases) (Linux and OSX supported. Windows coming soon)
|
1. [Download a binary](https://github.com/codercom/code-server/releases) (Linux and OSX supported. Windows coming soon)
|
||||||
2. Start the binary with the project directory as the first argument
|
2. Start the binary with the project directory as the first argument
|
||||||
|
|
||||||
@@ -43,7 +64,7 @@ How to [secure your setup](/doc/security/ssl.md).
|
|||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Guides on setup for development will be coming soon. :)
|
Development guides are coming soon.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
@@ -51,7 +72,7 @@ Guides on setup for development will be coming soon. :)
|
|||||||
|
|
||||||
## Enterprise
|
## Enterprise
|
||||||
|
|
||||||
Visit [our enterprise page](https://coder.com/enterprise) for more information on our enterprise offering.
|
Visit [our enterprise page](https://coder.com/enterprise) for more information about our enterprise offering.
|
||||||
|
|
||||||
## Commercialization
|
## Commercialization
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ const ensureCloned = register("vscode:clone", async (runner) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
runner.cwd = vscodePath;
|
runner.cwd = vscodePath;
|
||||||
const checkout = await runner.execute("git", ["checkout", "tags/1.31.0"]);
|
const checkout = await runner.execute("git", ["checkout", "tags/1.31.1"]);
|
||||||
if (checkout.exitCode !== 0) {
|
if (checkout.exitCode !== 0) {
|
||||||
throw new Error(`Failed to checkout: ${checkout.stderr}`);
|
throw new Error(`Failed to checkout: ${checkout.stderr}`);
|
||||||
}
|
}
|
||||||
@@ -260,4 +260,30 @@ const ensurePatched = register("vscode:patch", async (runner) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
register("package", async (runner, releaseTag) => {
|
||||||
|
if (!releaseTag) {
|
||||||
|
throw new Error("Please specify the release tag.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const releasePath = path.resolve(__dirname, "../release");
|
||||||
|
|
||||||
|
const archiveName = `code-server-${releaseTag}-${os.platform()}-${os.arch()}`;
|
||||||
|
const archiveDir = path.join(releasePath, archiveName);
|
||||||
|
fse.removeSync(archiveDir);
|
||||||
|
fse.mkdirpSync(archiveDir);
|
||||||
|
|
||||||
|
const binaryPath = path.join(__dirname, `../packages/server/cli-${os.platform()}-${os.arch()}`);
|
||||||
|
const binaryDestination = path.join(archiveDir, "code-server");
|
||||||
|
fse.copySync(binaryPath, binaryDestination);
|
||||||
|
fs.chmodSync(binaryDestination, "755");
|
||||||
|
["README.md", "LICENSE"].forEach((fileName) => {
|
||||||
|
fse.copySync(path.resolve(__dirname, `../${fileName}`), path.join(archiveDir, fileName));
|
||||||
|
});
|
||||||
|
|
||||||
|
runner.cwd = releasePath;
|
||||||
|
await os.platform() === "linux"
|
||||||
|
? runner.execute("tar", ["-cvzf", `${archiveName}.tar.gz`, `${archiveName}`])
|
||||||
|
: runner.execute("zip", ["-r", `${archiveName}.zip`, `${archiveName}`]);
|
||||||
|
});
|
||||||
|
|
||||||
run();
|
run();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
This document pertains to Coder specific implementations of VS Code. For documentation on how to use VS Code itself, please refer to the official [documentation for VS Code](https://code.visualstudio.com/docs)
|
This document pertains to Coder specific implementations of VS Code. For documentation on how to use VS Code itself, please refer to the official [documentation for VS Code](https://code.visualstudio.com/docs)
|
||||||
|
|
||||||
It takes just a few minutes to get your own self-hosted server running. If you've got a machine running macOS, Windows, or Linux, you're ready to start the binary which listens on port `8080` by default.
|
It takes just a few minutes to get your own self-hosted server running. If you've got a machine running macOS, Windows, or Linux, you're ready to start the binary which listens on port `8443` by default.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
DO NOT CHANGE THIS TO A CODEBLOCK.
|
DO NOT CHANGE THIS TO A CODEBLOCK.
|
||||||
@@ -20,7 +20,7 @@ It takes just a few minutes to get your own self-hosted server running. If you'v
|
|||||||
1. Visit [the releases](https://github.com/codercom/code-server/releases) page and download the latest cli for your operating system
|
1. Visit [the releases](https://github.com/codercom/code-server/releases) page and download the latest cli for your operating system
|
||||||
2. Double click the executable to run in the current directory
|
2. Double click the executable to run in the current directory
|
||||||
3. Copy the password that appears in the cli<img src="../assets/cli.png">
|
3. Copy the password that appears in the cli<img src="../assets/cli.png">
|
||||||
4. In your browser navigate to `localhost:8080`
|
4. In your browser navigate to `localhost:8443`
|
||||||
5. Paste the password from the cli into the login window<img src="../assets/server-password-modal.png">
|
5. Paste the password from the cli into the login window<img src="../assets/server-password-modal.png">
|
||||||
> NOTE: Be careful with your password as sharing it will grant those users access to your server's file system
|
> NOTE: Be careful with your password as sharing it will grant those users access to your server's file system
|
||||||
|
|
||||||
@@ -44,10 +44,11 @@ OPTIONS
|
|||||||
-d, --data-dir=data-dir
|
-d, --data-dir=data-dir
|
||||||
-h, --host=host [default: 0.0.0.0]
|
-h, --host=host [default: 0.0.0.0]
|
||||||
-o, --open Open in browser on startup
|
-o, --open Open in browser on startup
|
||||||
-p, --port=port [default: 8080] Port to bind on
|
-p, --port=port [default: 8443] Port to bind on
|
||||||
-v, --version show CLI version
|
-v, --version show CLI version
|
||||||
--cert=cert
|
--cert=cert
|
||||||
--cert-key=cert-key
|
--cert-key=cert-key
|
||||||
|
--password=password
|
||||||
--help show CLI help
|
--help show CLI help
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -55,14 +56,14 @@ OPTIONS
|
|||||||
Use `code-server -d (path/to/directory)` or `code-server --data-dir=(path/to/directory)`, excluding the parentheses to specify the root folder that VS Code will start in
|
Use `code-server -d (path/to/directory)` or `code-server --data-dir=(path/to/directory)`, excluding the parentheses to specify the root folder that VS Code will start in
|
||||||
|
|
||||||
### Host
|
### Host
|
||||||
By default, code-server will use `0.0.0.0` as it's address. This can be changed by using `code-server -h` or `code-server --host=` followed by the address you want to use.
|
By default, code-server will use `0.0.0.0` as its address. This can be changed by using `code-server -h` or `code-server --host=` followed by the address you want to use.
|
||||||
> Example: `code-server -h 127.0.0.1`
|
> Example: `code-server -h 127.0.0.1`
|
||||||
|
|
||||||
### Open
|
### Open
|
||||||
You can have the server automatically open the VS Code in your browser on startup by using the `code server -o` or `code-server --open` flags
|
You can have the server automatically open the VS Code in your browser on startup by using the `code server -o` or `code-server --open` flags
|
||||||
|
|
||||||
### Port
|
### Port
|
||||||
By default, code-server will use `8080` as it's port. This can be changed by using `code-server -p` or `code-server --port=` followed by the port you want to use.
|
By default, code-server will use `8443` as its port. This can be changed by using `code-server -p` or `code-server --port=` followed by the port you want to use.
|
||||||
> Example: `code-server -p 9000`
|
> Example: `code-server -p 9000`
|
||||||
|
|
||||||
### Cert and Cert Key
|
### Cert and Cert Key
|
||||||
|
|||||||
@@ -19,21 +19,6 @@
|
|||||||
<label class="mdc-floating-label" for="password">Password</label>
|
<label class="mdc-floating-label" for="password">Password</label>
|
||||||
<div class="mdc-line-ripple"></div>
|
<div class="mdc-line-ripple"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mdc-text-field-helper-line">
|
|
||||||
<div class="mdc-text-field-helper-text">helper text</div>
|
|
||||||
</div>
|
|
||||||
<div class="mdc-form-field">
|
|
||||||
<div class="mdc-checkbox">
|
|
||||||
<input type="checkbox" class="mdc-checkbox__native-control" id="remember" />
|
|
||||||
<div class="mdc-checkbox__background">
|
|
||||||
<svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
|
|
||||||
<path class="mdc-checkbox__checkmark-path" fill="none" d="M1.73,12.91 8.1,19.28 22.79,4.59" />
|
|
||||||
</svg>
|
|
||||||
<div class="mdc-checkbox__mixedmark"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<label for="remember">Remember Me</label>
|
|
||||||
</div>
|
|
||||||
<button id="submit" class="mdc-button mdc-button--unelevated">
|
<button id="submit" class="mdc-button mdc-button--unelevated">
|
||||||
<span class="mdc-button__label">Enter IDE</span>
|
<span class="mdc-button__label">Enter IDE</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -25,18 +25,37 @@ const newCreateElement = <K extends keyof HTMLElementTagNameMap>(tagName: K): HT
|
|||||||
// tslint:disable-next-line:no-any
|
// tslint:disable-next-line:no-any
|
||||||
return oldCreateElement.call(document, tagName as any);
|
return oldCreateElement.call(document, tagName as any);
|
||||||
};
|
};
|
||||||
|
// tslint:disable-next-line:no-any
|
||||||
|
const getPropertyDescriptor = (object: any, id: string): PropertyDescriptor | undefined => {
|
||||||
|
let op = Object.getPrototypeOf(object);
|
||||||
|
while (!Object.getOwnPropertyDescriptor(op, id)) {
|
||||||
|
op = Object.getPrototypeOf(op);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object.getOwnPropertyDescriptor(op, id);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (tagName === "img") {
|
||||||
|
const img = createElement("img");
|
||||||
|
const oldSrc = getPropertyDescriptor(img, "src");
|
||||||
|
if (!oldSrc) {
|
||||||
|
throw new Error("Failed to find src property");
|
||||||
|
}
|
||||||
|
Object.defineProperty(img, "src", {
|
||||||
|
get: (): string => {
|
||||||
|
return oldSrc!.get!.call(img);
|
||||||
|
},
|
||||||
|
set: (value: string): void => {
|
||||||
|
value = value.replace(/file:\/\//g, "/resource");
|
||||||
|
oldSrc!.set!.call(img, value);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
if (tagName === "style") {
|
if (tagName === "style") {
|
||||||
const style = createElement("style");
|
const style = createElement("style");
|
||||||
// tslint:disable-next-line:no-any
|
|
||||||
const getPropertyDescriptor = (object: any, id: string): PropertyDescriptor | undefined => {
|
|
||||||
let op = Object.getPrototypeOf(object);
|
|
||||||
while (!Object.getOwnPropertyDescriptor(op, id)) {
|
|
||||||
op = Object.getPrototypeOf(op);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Object.getOwnPropertyDescriptor(op, id);
|
|
||||||
};
|
|
||||||
const oldInnerHtml = getPropertyDescriptor(style, "innerHTML");
|
const oldInnerHtml = getPropertyDescriptor(style, "innerHTML");
|
||||||
if (!oldInnerHtml) {
|
if (!oldInnerHtml) {
|
||||||
throw new Error("Failed to find innerHTML property");
|
throw new Error("Failed to find innerHTML property");
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as cp from "child_process";
|
import * as cp from "child_process";
|
||||||
import { logger, Logger, field, time } from "@coder/logger";
|
import {field, Logger, logger, time} from "@coder/logger";
|
||||||
|
|
||||||
export interface CommandResult {
|
export interface CommandResult {
|
||||||
readonly exitCode: number;
|
readonly exitCode: number;
|
||||||
@@ -9,7 +9,9 @@ export interface CommandResult {
|
|||||||
|
|
||||||
const execute = (command: string, args: string[] = [], options: cp.SpawnOptions, logger: Logger): Promise<CommandResult> => {
|
const execute = (command: string, args: string[] = [], options: cp.SpawnOptions, logger: Logger): Promise<CommandResult> => {
|
||||||
let resolve: (result: CommandResult) => void;
|
let resolve: (result: CommandResult) => void;
|
||||||
const prom = new Promise<CommandResult>(res => resolve = res);
|
const prom = new Promise<CommandResult>((res): void => {
|
||||||
|
resolve = res;
|
||||||
|
});
|
||||||
|
|
||||||
const stdout: string[] = [];
|
const stdout: string[] = [];
|
||||||
const stderr: string[] = [];
|
const stderr: string[] = [];
|
||||||
@@ -40,10 +42,12 @@ const execute = (command: string, args: string[] = [], options: cp.SpawnOptions,
|
|||||||
return prom;
|
return prom;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TaskFunction = (runner: Runner) => void | Promise<void>;
|
// tslint:disable-next-line no-any
|
||||||
|
export type TaskFunction = (runner: Runner, ...args: any[]) => void | Promise<void>;
|
||||||
|
|
||||||
export interface Runner {
|
export interface Runner {
|
||||||
cwd: string;
|
cwd: string;
|
||||||
|
|
||||||
execute(command: string, args?: string[], env?: object): Promise<CommandResult>;
|
execute(command: string, args?: string[], env?: object): Promise<CommandResult>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,12 +94,24 @@ export const run = (name: string = process.argv[2]): void | Promise<void> => {
|
|||||||
cwd = path;
|
cwd = path;
|
||||||
},
|
},
|
||||||
execute(command: string, args: string[] = [], env?: object): Promise<CommandResult> {
|
execute(command: string, args: string[] = [], env?: object): Promise<CommandResult> {
|
||||||
return execute(command, args, {
|
const prom = execute(command, args, {
|
||||||
cwd,
|
cwd,
|
||||||
env: env as NodeJS.ProcessEnv,
|
env: env as NodeJS.ProcessEnv,
|
||||||
}, log);
|
}, log);
|
||||||
|
|
||||||
|
return prom.then((result: CommandResult) => {
|
||||||
|
if (result.exitCode != 0) {
|
||||||
|
log.error("failed",
|
||||||
|
field("exitCode", result.exitCode),
|
||||||
|
field("stdout", result.stdout),
|
||||||
|
field("stderr", result.stderr)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
}, ...process.argv.slice(3));
|
||||||
|
|
||||||
if (prom) {
|
if (prom) {
|
||||||
activated.set(name, prom);
|
activated.set(name, prom);
|
||||||
|
|||||||
@@ -14,16 +14,17 @@ fs.writeFileSync(shimPath, shimContent);
|
|||||||
|
|
||||||
const nexe = require("nexe");
|
const nexe = require("nexe");
|
||||||
|
|
||||||
|
const target = `${os.platform()}-${os.arch()}`;
|
||||||
nexe.compile({
|
nexe.compile({
|
||||||
debugBundle: true,
|
debugBundle: true,
|
||||||
input: path.join(__dirname, "../out/cli.js"),
|
input: path.join(__dirname, "../out/cli.js"),
|
||||||
output: `cli-${process.env.TRAVIS_OS_NAME || os.platform()}`,
|
output: `cli-${target}`,
|
||||||
targets: [os.platform()],
|
targets: [target],
|
||||||
/**
|
/**
|
||||||
* To include native extensions, do NOT install node_modules for each one. They
|
* To include native extensions, do NOT install node_modules for each one. They
|
||||||
* are not required as each extension is built using webpack.
|
* are not required as each extension is built using webpack.
|
||||||
*/
|
*/
|
||||||
resources: [
|
resources: [
|
||||||
path.join(__dirname, "../package.json"),
|
path.join(__dirname, "../package.json"),
|
||||||
path.join(__dirname, "../build/**/*"),
|
path.join(__dirname, "../build/**/*"),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { field, logger } from "@coder/logger";
|
|||||||
import { ServerMessage, SharedProcessActiveMessage } from "@coder/protocol/src/proto";
|
import { ServerMessage, SharedProcessActiveMessage } from "@coder/protocol/src/proto";
|
||||||
import { Command, flags } from "@oclif/command";
|
import { Command, flags } from "@oclif/command";
|
||||||
import { fork, ForkOptions, ChildProcess } from "child_process";
|
import { fork, ForkOptions, ChildProcess } from "child_process";
|
||||||
|
import { randomFillSync } from "crypto";
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as os from "os";
|
import * as os from "os";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
@@ -26,6 +27,7 @@ export class Entry extends Command {
|
|||||||
version: flags.version({ char: "v" }),
|
version: flags.version({ char: "v" }),
|
||||||
"no-auth": flags.boolean({ default: false }),
|
"no-auth": flags.boolean({ default: false }),
|
||||||
"allow-http": flags.boolean({ default: false }),
|
"allow-http": flags.boolean({ default: false }),
|
||||||
|
password: flags.string(),
|
||||||
|
|
||||||
// Dev flags
|
// Dev flags
|
||||||
"bootstrap-fork": flags.string({ hidden: true }),
|
"bootstrap-fork": flags.string({ hidden: true }),
|
||||||
@@ -113,7 +115,7 @@ export class Entry extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("\u001B[1mcode-server v1.0.0");
|
logger.info(`\u001B[1mcode-server ${process.env.VERSION ? `v${process.env.VERSION}` : "development"}`);
|
||||||
// TODO: fill in appropriate doc url
|
// TODO: fill in appropriate doc url
|
||||||
logger.info("Additional documentation: http://github.com/codercom/code-server");
|
logger.info("Additional documentation: http://github.com/codercom/code-server");
|
||||||
logger.info("Initializing", field("data-dir", dataDir), field("working-dir", workingDir), field("log-dir", logDir));
|
logger.info("Initializing", field("data-dir", dataDir), field("working-dir", workingDir), field("log-dir", logDir));
|
||||||
@@ -132,13 +134,13 @@ export class Entry extends Command {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const passwordLength = 12;
|
let password = flags["password"];
|
||||||
const possible = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
if (!password) {
|
||||||
const chars = [];
|
// Generate a random password
|
||||||
for (let i = 0; i < passwordLength; i++) {
|
const buffer = Buffer.alloc(12);
|
||||||
chars.push(possible[Math.floor(Math.random() * possible.length)]);
|
randomFillSync(buffer);
|
||||||
|
password = buffer.toString("hex");
|
||||||
}
|
}
|
||||||
const password = chars.join("");
|
|
||||||
|
|
||||||
const hasCustomHttps = certData && certKeyData;
|
const hasCustomHttps = certData && certKeyData;
|
||||||
const app = await createApp({
|
const app = await createApp({
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
npm install -g cross-env
|
|
||||||
yarn task build:server:binary
|
yarn task build:server:binary
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ index 1922450144..9900776aa2 100644
|
|||||||
-import { isMacintosh } from 'vs/base/common/platform';
|
-import { isMacintosh } from 'vs/base/common/platform';
|
||||||
+import { isMacintosh } from 'vs/base/browser/browser';
|
+import { isMacintosh } from 'vs/base/browser/browser';
|
||||||
diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts
|
diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts
|
||||||
index 5386958054..5c936e0a1d 100644
|
index e6b2e4e39b..06cdfe152f 100644
|
||||||
--- a/src/vs/base/browser/ui/list/listWidget.ts
|
--- a/src/vs/base/browser/ui/list/listWidget.ts
|
||||||
+++ b/src/vs/base/browser/ui/list/listWidget.ts
|
+++ b/src/vs/base/browser/ui/list/listWidget.ts
|
||||||
@@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom';
|
@@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom';
|
||||||
@@ -43,7 +43,7 @@ index 5386958054..5c936e0a1d 100644
|
|||||||
@@ -479 +479 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent<any> | IList
|
@@ -479 +479 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent<any> | IList
|
||||||
- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
||||||
+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
||||||
@@ -539 +539 @@ class MouseController<T> implements IDisposable {
|
@@ -540 +540 @@ class MouseController<T> implements IDisposable {
|
||||||
- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
||||||
+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;
|
||||||
diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts
|
diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts
|
||||||
@@ -91,7 +91,7 @@ index 01f59d40fa..453d5c4ed3 100644
|
|||||||
-import { isMacintosh } from 'vs/base/common/platform';
|
-import { isMacintosh } from 'vs/base/common/platform';
|
||||||
+import { isMacintosh } from 'vs/base/browser/browser';
|
+import { isMacintosh } from 'vs/base/browser/browser';
|
||||||
diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts
|
diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts
|
||||||
index 742c6aa0d8..2791d0691e 100644
|
index d9665944a1..80659bb5f0 100644
|
||||||
--- a/src/vs/base/browser/ui/tree/abstractTree.ts
|
--- a/src/vs/base/browser/ui/tree/abstractTree.ts
|
||||||
+++ b/src/vs/base/browser/ui/tree/abstractTree.ts
|
+++ b/src/vs/base/browser/ui/tree/abstractTree.ts
|
||||||
@@ -24 +24 @@ import { disposableTimeout } from 'vs/base/common/async';
|
@@ -24 +24 @@ import { disposableTimeout } from 'vs/base/common/async';
|
||||||
@@ -685,7 +685,7 @@ index 6d25977a66..788f5c96e7 100644
|
|||||||
- return `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`;
|
- return `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`;
|
||||||
+ return undefined; // `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`;
|
+ return undefined; // `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`;
|
||||||
diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
||||||
index 1002950c75..8c187d36ff 100644
|
index 9df71eeec1..c68c42e922 100644
|
||||||
--- a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
--- a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
||||||
+++ b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
+++ b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
|
||||||
@@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co
|
@@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co
|
||||||
@@ -699,13 +699,13 @@ index 0bd9b93fcc..1c8adeb5ca 100644
|
|||||||
-import { isWindows, isMacintosh } from 'vs/base/common/platform';
|
-import { isWindows, isMacintosh } from 'vs/base/common/platform';
|
||||||
+import { isWindows, isMacintosh } from 'vs/base/browser/browser';
|
+import { isWindows, isMacintosh } from 'vs/base/browser/browser';
|
||||||
diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
||||||
index e66f74f034..e2c24d851a 100644
|
index 45b32eec0a..1f58bdcd70 100644
|
||||||
--- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
--- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
||||||
+++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
+++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
||||||
@@ -39 +39 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn
|
@@ -39 +39 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn
|
||||||
-import { isMacintosh, isLinux } from 'vs/base/common/platform';
|
-import { isMacintosh, isLinux } from 'vs/base/common/platform';
|
||||||
+import { isMacintosh, isLinux } from 'vs/base/browser/browser';
|
+import { isMacintosh, isLinux } from 'vs/base/browser/browser';
|
||||||
@@ -586,0 +587 @@ export class FileDragAndDrop implements ITreeDragAndDrop<ExplorerItem> {
|
@@ -591,0 +592 @@ export class FileDragAndDrop implements ITreeDragAndDrop<ExplorerItem> {
|
||||||
+ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent);
|
+ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent);
|
||||||
diff --git a/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts b/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts
|
diff --git a/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts b/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts
|
||||||
index 4015c9cd5d..bebdb25f6c 100644
|
index 4015c9cd5d..bebdb25f6c 100644
|
||||||
@@ -854,13 +854,13 @@ index 033bd98d00..ba776c5ff3 100644
|
|||||||
-import { isMacintosh } from 'vs/base/common/platform';
|
-import { isMacintosh } from 'vs/base/common/platform';
|
||||||
+import { isMacintosh } from 'vs/base/browser/browser';
|
+import { isMacintosh } from 'vs/base/browser/browser';
|
||||||
diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
||||||
index 5d9110300f..eb16014814 100644
|
index d8de423529..5953e920c3 100644
|
||||||
--- a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
--- a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
||||||
+++ b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
+++ b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts
|
||||||
@@ -21 +21 @@ import { endsWith } from 'vs/base/common/strings';
|
@@ -21 +21 @@ import { endsWith } from 'vs/base/common/strings';
|
||||||
-import { isMacintosh } from 'vs/base/common/platform';
|
-import { isMacintosh } from 'vs/base/common/platform';
|
||||||
+import { isMacintosh } from 'vs/base/browser/browser';
|
+import { isMacintosh } from 'vs/base/browser/browser';
|
||||||
@@ -261,0 +262,3 @@ export class WebviewElement extends Disposable {
|
@@ -265,0 +266,3 @@ export class WebviewElement extends Disposable {
|
||||||
+ Object.defineProperty(this._options, 'useSameOriginForRoot', {
|
+ Object.defineProperty(this._options, 'useSameOriginForRoot', {
|
||||||
+ value: true,
|
+ value: true,
|
||||||
+ });
|
+ });
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ module.exports = (options = {}) => ({
|
|||||||
plugins: [
|
plugins: [
|
||||||
new HappyPack({
|
new HappyPack({
|
||||||
id: "ts",
|
id: "ts",
|
||||||
threads: os.cpus().length - 1,
|
threads: Math.max(os.cpus().length - 1, 1),
|
||||||
loaders: [{
|
loaders: [{
|
||||||
path: "ts-loader",
|
path: "ts-loader",
|
||||||
query: {
|
query: {
|
||||||
@@ -118,6 +118,7 @@ module.exports = (options = {}) => ({
|
|||||||
"process.env.NODE_ENV": `"${environment}"`,
|
"process.env.NODE_ENV": `"${environment}"`,
|
||||||
"process.env.LOG_LEVEL": `"${process.env.LOG_LEVEL || ""}"`,
|
"process.env.LOG_LEVEL": `"${process.env.LOG_LEVEL || ""}"`,
|
||||||
"process.env.SERVICE_URL": `"${process.env.SERVICE_URL || ""}"`,
|
"process.env.SERVICE_URL": `"${process.env.SERVICE_URL || ""}"`,
|
||||||
|
"process.env.VERSION": `"${process.env.VERSION || ""}"`,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
stats: {
|
stats: {
|
||||||
|
|||||||
Reference in New Issue
Block a user