Compare commits

...

16 Commits

Author SHA1 Message Date
Anmol Sethi
17267bd801 Add Dockerfile and some cleanup (#57) 2019-03-06 18:59:43 -08:00
Michael Desantis
ac56fcaafc Remove unused markup from password page (#49) 2019-03-06 18:47:05 -08:00
Michael Desantis
e20b79b5cc Generate secure passwords, fixes issue #26 (#51) 2019-03-06 16:25:44 -08:00
Philipp Gillé
e99f8abc3c Fix spelling error (#46) 2019-03-06 16:21:33 -08:00
Asher
994531d8bb Add task for packaging release (#6)
* Add task for packaging release

* Modify package task to package a single binary

This is so it can be used as part of the build/release script.

* Package release as part of Travis deploy

* Set platform env var

* Add arch env var

* Make version available to the code

* Use tar for Linux and zip for Mac & Windows
2019-03-06 18:15:52 -06:00
Kyle Carberry
8916cb9bb2 Update to vscode 1.31.1 (#45) 2019-03-06 11:10:23 -08:00
Ammar Bandukwala
d4867ca430 Cleanup English in README (#21) 2019-03-06 10:11:27 -08:00
Icebob
3fbdb2e46c Implement #4 - fix password via CLI (#5) 2019-03-06 00:08:43 -08:00
Ammar Bandukwala
1d8da2161f Add value props to readme (#20) 2019-03-05 17:45:21 -08:00
Kyle Carberry
414eb7076f Update element fill to replace file URIs in image tags 2019-03-06 00:06:44 +00:00
Asher
2b3d2933eb Updated binary name in issue templates 2019-03-05 17:23:13 -06:00
Andrew Grekov
14ead1a62f Fixes calculating number of threads for HappyPack (#10) 2019-03-05 15:02:49 -08:00
John McCambridge
3b48c57861 Fix port number in docs (#12) 2019-03-05 13:53:35 -08:00
Colin
c772e920cd Add Discord widget to README (#16) 2019-03-05 13:53:05 -08:00
Ammar Bandukwala
e6aa74c412 Merge pull request #7 from codercom/fix-doc
Clarify that cloud offering is seperate from the open source
2019-03-05 10:52:43 -08:00
Ammar Bandukwala
838c8a6f2c Clarify that the cloud offering is seperate from the open source 2019-03-05 12:51:34 -06:00
18 changed files with 172 additions and 69 deletions

1
.dockerignore Normal file
View File

@@ -0,0 +1 @@
Dockerfile

View File

@@ -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

View File

@@ -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
View File

@@ -3,3 +3,4 @@ node_modules
dist dist
out out
.DS_Store .DS_Store
release

View File

@@ -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
View 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

View File

@@ -3,15 +3,36 @@
[!["Open Issues"](https://img.shields.io/github/issues-raw/codercom/code-server.svg)](https://github.com/codercom/code-server/issues) [!["Open Issues"](https://img.shields.io/github/issues-raw/codercom/code-server.svg)](https://github.com/codercom/code-server/issues)
[!["Latest Release"](https://img.shields.io/github/release/codercom/code-server.svg)](https://github.com/codercom/code-server/releases/latest) [!["Latest Release"](https://img.shields.io/github/release/codercom/code-server.svg)](https://github.com/codercom/code-server/releases/latest)
[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](#) [![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](#)
[![Discord](https://discordapp.com/api/guilds/463752820026376202/widget.png)](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.
![Screenshot](/doc/assets/ide.png) ![Screenshot](/doc/assets/ide.png)
## 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

View File

@@ -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();

View File

@@ -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

View File

@@ -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>

View File

@@ -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");

View File

@@ -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);

View File

@@ -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/**/*"),
], ],

View File

@@ -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({

View File

@@ -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

View File

@@ -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,
+ }); + });

View File

@@ -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: {