Basic readme for language server
This commit is contained in:
@@ -1 +1,136 @@
|
||||
This wraps the GitHub Actions language service and makes it available via the [language server protocol](https://microsoft.github.io/language-server-protocol/) (LSP).
|
||||
# actions-languageserver
|
||||
|
||||
`actions-languageserver` hosts the `actions-languageservice` and makes it available via the [language server protocol](https://microsoft.github.io/language-server-protocol/) (LSP) as a standalone language server.
|
||||
|
||||
## Installation
|
||||
|
||||
The [package](https://www.npmjs.com/package/@actions/languageserver) contains TypeScript types and compiled ECMAScript modules.
|
||||
|
||||
```bash
|
||||
$ npm install @github/actions-languageserver
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic usage using `vscode-languageserver-node`
|
||||
|
||||
For the server, import the module. It detects whether it's running in a Node.js environment or a web worker and initializes the appropriate connection.
|
||||
|
||||
`server.js`:
|
||||
|
||||
```js
|
||||
import "@github/actions-languageserver";
|
||||
```
|
||||
|
||||
For the client, create a new `LanguageClient` pointing to the server module.
|
||||
|
||||
`client.ts`:
|
||||
|
||||
```js
|
||||
import {LanguageClient, ServerOptions, TransportKind} from "vscode-languageclient/node";
|
||||
|
||||
const debugOptions = {execArgv: ["--nolazy", "--inspect=6010"]};
|
||||
|
||||
const clientOptions: LanguageClientOptions = {
|
||||
documentSelector: [{
|
||||
pattern: "**/.github/workflows/*.{yaml,yml}"
|
||||
}],
|
||||
progressOnInitialization: true
|
||||
};
|
||||
|
||||
const serverModule = context.asAbsolutePath(path.join("dist", "server.js"));
|
||||
const serverOptions: ServerOptions = {
|
||||
run: {module: serverModule, transport: TransportKind.ipc},
|
||||
debug: {
|
||||
module: serverModule,
|
||||
transport: TransportKind.ipc,
|
||||
options: debugOptions
|
||||
}
|
||||
};
|
||||
|
||||
const client = new LanguageClient("actions-language", "GitHub Actions Language Server", serverOptions, clientOptions);
|
||||
```
|
||||
|
||||
### From a web worker
|
||||
|
||||
See [../browser-playground](../browser-playground) for an example implementation that hosts the language server in a web worker.
|
||||
|
||||
### Providing advanced functionality
|
||||
|
||||
The language server accepts initialization options that can be used to configure additional functionality. If you pass in a github.com `sessionToken`, the language service will use data from github.com to perform additional validations and provide additional auto-completion suggestions.
|
||||
|
||||
```typescript
|
||||
export interface InitializationOptions {
|
||||
/**
|
||||
* GitHub token that will be used to retrieve additional information from github.com
|
||||
*
|
||||
* Requires the `repo` and `workflow` scopes
|
||||
*/
|
||||
sessionToken?: string;
|
||||
|
||||
/**
|
||||
* List of repositories that the language server should be aware of
|
||||
*/
|
||||
repos?: RepositoryContext[];
|
||||
|
||||
/**
|
||||
* Desired log level
|
||||
*/
|
||||
logLevel?: LogLevel;
|
||||
}
|
||||
```
|
||||
|
||||
pass the `initializationOptions` to the `LanguageClient` when establishing the connection:
|
||||
|
||||
```typescript
|
||||
const clientOptions: LanguageClientOptions = {
|
||||
documentSelector: [{
|
||||
pattern: "**/.github/workflows/*.{yaml,yml}"
|
||||
}],
|
||||
initializationOptions: initializationOptions,
|
||||
progressOnInitialization: true
|
||||
};
|
||||
|
||||
const client = new LanguageClient("actions-language", "GitHub Actions Language Server", serverOptions, clientOptions);
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
See [CONTRIBUTING.md](../CONTRIBUTING.md) at the root of the repository for general guidelines and recommendations.
|
||||
|
||||
If you do want to contribute, please run [prettier](https://prettier.io/) to format your code and add unit tests as appropriate before submitting your PR.
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
$ npm run build
|
||||
```
|
||||
|
||||
or to watch for changes
|
||||
|
||||
```bash
|
||||
$ npm run watch
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```bash
|
||||
$ npm test
|
||||
```
|
||||
|
||||
or to watch for changes and run tests:
|
||||
|
||||
```bash
|
||||
$ npm run test-watch
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
$ npm run format-check
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the terms of the MIT open source license. Please refer to [MIT](../LICENSE) for the full terms.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user