Skip to content

Commit

Permalink
Split out a CONTRIBUTING doc (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
bmingles committed Jul 11, 2024
1 parent 3c08354 commit 1b61ad9
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 71 deletions.
88 changes: 88 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Contributing to Deephaven in VS Code

## Installation from .VSIX

This extension can also be installed directly from a `.vsix`. To get a `.vsix`, you can either:

Download one from the [releases/](releases/) folder.

or

Build a .vsix locally via `npm run package`

Then install in vscode:
![Install Deephaven in VS Code](docs/install.png)

## Publishing

### Configuration

Publishing a vscode extension requires:

- Azure AD organization - https://dev.azure.com/deephaven-oss/
- Marketplace publisher - https://marketplace.visualstudio.com/publishers/deephaven
- Personal access token - associated with a user in the Azure AD organization
> NOTE: This can be set in `VSCE_PAT` env variable
### Versioning Strategy

We are following the official `vscode` extension publishing guidance.

- Pre-release versions use `major.ODD_NUMBER.patch` version scheme (e.g. `1.1.3`)
- Release versions use `major.EVEN_NUMBER.patch` versions scheme (e.g. `1.2.3`)

> Note that `vscode` will always install a later release version instead of pre-release, so it's important to always have a pre-release version that is later than the release version if we want to allow pre-release users to stay on the latest pre-release.
You can find additional details here:
https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions

### Publish a new Version

1. Set `VSCE_PAT` env variable to personal access token for a user in the https://dev.azure.com/deephaven-oss/ org.
1. Increment the version number in `package.json`
> See [versioning strategy](#versioning-strategy) for details on our version number scheme.
1. Use `vsce` cli to publish

```sh
# Pre-release
vsce publish --pre-release
```

```sh
# Release
vsce publish
```

## PNG Generation

Logo .pngs were generated from .svgs using `rsvg-convert`

```
rsvg-convert -w 128 -h 128 images/dh-community-on-dark-128.svg -o images/dh-community-on-dark-128.png
rsvg-convert -w 128 -h 128 images/dh-community-on-light-128.svg -o images/dh-community-on-light-128.png
```
## Implementation Notes
### Server Connection
### DHC
The first time a connection is made to a `DHC` server, the extension will:
1. Download the JS API from the server
2. Check server auth config. If anonymous, connect anonymously. If `PSK` prompt for `PSK`.
If auth succeeds and connection was initiated by running a script:
1. Run the script against the server
2. Update panels in vscode and deephaven.
On subsequent script runs, the session will be re-used and only steps 4 and 5 will run
### Downloading JS API
The extension dynamically downloads and loads the DH JS API from a running DH Core server.
- `src/jsApi.downloadDhFromServer()`
At runtime, `dh-internal.js` and `dh-core.js` are downloaded from the running DH server (default http://localhost:10000). The files are saved to `out/tmp` as `.cjs` modules, and import / export are converted to cjs compatible ones.
71 changes: 0 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,13 @@ Deephaven in VS Code
- Run all
- Run selected code
- View output in vscode panels
- View output in DH panels (depends on [pr#1925](https://github.com/deephaven/web-client-ui/pull/1925) to automatically update panels)

![Deephaven in VS Code Extension](docs/extension.png)

## Installation

TODO: Document marketplace instructions.

> Note: There are some `vscode` bugs that cause some flakiness with the `run` button. vscode `v90` introduced an optional `workbench.editor.alwaysShowEditorActions` setting. Setting this to `true` improves the experience here. Namely the run button will not disappear when running commands or selecting its dropdown. See https://github.com/deephaven/vscode-deephaven/issues/1 for more details.
### Installation from .VSIX

This extension can also be installed directly from a `.vsix`. To get a `.vsix`, you can either:

Download one from the [releases/](releases/) folder.

or

Build a .vsix locally via `npm run package`

Then install in vscode:
![Install Deephaven in VS Code](docs/install.png)

## Connecting to a Server

Core server `http://localhost:10000/` is configured by default and doesn't require any additional config. Additional connections can be configured in `vscode` settings.
Expand Down Expand Up @@ -81,58 +65,3 @@ Scripts will be run against the active connection or default to the first connec
The `vscode-deephaven` extension comes with some predefined `python` snippets. These insert pre-defined code snippets into an editor. To use, simply type `ui` to see available snippets.

![Code Snippets](docs/code-snippets.png)

## Releases

We are following the official `vscode` extension publishing guidance.

- Pre-release versions use `major.ODD_NUMBER.patch` version scheme (e.g. `1.1.3`)
- Release versions use `major.EVEN_NUMBER.patch` versions scheme (e.g. `1.2.3`)

> Note that `vscode` will always install a later release version instead of pre-release, so it's important to always have a pre-release version that is later than the release version if we want to allow pre-release users to stay on the latest pre-release.
You can find additional details here:
https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions

## PNG Generation

Logo .pngs were generated from .svgs using `rsvg-convert`

```
rsvg-convert -w 128 -h 128 images/dh-community-on-dark-128.svg -o images/dh-community-on-dark-128.png
rsvg-convert -w 128 -h 128 images/dh-community-on-light-128.svg -o images/dh-community-on-light-128.png
```

## Publishing the Extension

Publishing a vscode extension requires

- Azure AD organization - https://dev.azure.com/deephaven-oss/
- Marketplace publisher - https://marketplace.visualstudio.com/publishers/deephaven
- Personal access token - associated with a user in the Azure AD organization
> NOTE: This can be set in `VSCE_PAT` env variable
## Implementation Notes

### Server Connection

### DHC

The first time a connection is made to a `DHC` server, the extension will:

1. Download the JS API from the server
2. Check server auth config. If anonymous, connect anonymously. If `PSK` prompt for `PSK`.

If auth succeeds and connection was initiated by running a script:

1. Run the script against the server
2. Update panels in vscode and deephaven.

On subsequent script runs, the session will be re-used and only steps 4 and 5 will run

### Downloading JS API

The extension dynamically downloads and loads the DH JS API from a running DH Core server.

- `src/jsApi.downloadDhFromServer()`
At runtime, `dh-internal.js` and `dh-core.js` are downloaded from the running DH server (default http://localhost:10000). The files are saved to `out/tmp` as `.cjs` modules, and import / export are converted to cjs compatible ones.

0 comments on commit 1b61ad9

Please sign in to comment.