Files
languageservices/actions-languageservice/README.md
T

103 lines
2.7 KiB
Markdown

# actions-languageservice
This package contains the logic for the GitHub Actions workflows language server.
## Installation
The [package](https://www.npmjs.com/package/@actions/languageservice) contains TypeScript types and compiled ECMAScript modules.
```bash
npm install @actions/languageservice
```
## Usage
### Basic usage
#### Concepts
The language service features use three sources of information:
* a built-in static schema for the workflow YAML file
* _value providers_ which can dynamically add values to the schema, for example, the list of available labels for a repository when validating `runs-on`.
* _context providers_ which can dynamically provide available contexts used in [expressions](https://docs.github.com/actions/reference/context-and-expression-syntax-for-github-actions#about-contexts-and-expressions). For example, the contents of the `github.event` context for a given workflow file.
##### Value Providers
TODO
##### Context Providers
TODO
#### Validation
Validate a workflow file, returns an array of [`Diagnostic`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnostic) objects.
```typescript
const config: ValidationConfig = {
valueProviderConfig: valueProviders(sessionToken, repoContext, cache),
contextProviderConfig: contextProviders(sessionToken, repoContext, cache),
};
const result = await validate(textDocument, config); // result is an array of `Diagnostic`
```
#### Hover
Get information when [hovering](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_hover) over a token in the workflow file.
```typescript
import {hover} from "@actions/languageservice";
const document = {
uri: "file:///path/to/file",
getText: () => "on: push\n jobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - run: echo hello"
};
const hover = await hover(document, {line: 0, character: 1}); // { contents: { kind: "markdown", value: "The event that triggers the workflow" } }
```
#### Auto-completion
TODO
## 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.