mirror of
https://github.com/go-task/task.git
synced 2025-04-13 11:50:50 +02:00
chore: update contribution guide to support Task for Visual Studio Code
This commit is contained in:
parent
031558afe4
commit
02ac79e577
@ -8,6 +8,13 @@ sidebar_position: 10
|
|||||||
Contributions to Task are very welcome, but we ask that you read this document
|
Contributions to Task are very welcome, but we ask that you read this document
|
||||||
before submitting a PR.
|
before submitting a PR.
|
||||||
|
|
||||||
|
:::note
|
||||||
|
|
||||||
|
This document applies to the core [Task][task] repository _and_ [Task for Visual
|
||||||
|
Studio Code][vscode-task].
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Before you start
|
## Before you start
|
||||||
|
|
||||||
- **Check existing work** - Is there an existing PR? Are there issues discussing
|
- **Check existing work** - Is there an existing PR? Are there issues discussing
|
||||||
@ -24,18 +31,19 @@ before submitting a PR.
|
|||||||
- **Go** - Task is written in [Go][go]. We always support the latest two major
|
- **Go** - Task is written in [Go][go]. We always support the latest two major
|
||||||
Go versions, so make sure your version is recent enough.
|
Go versions, so make sure your version is recent enough.
|
||||||
- **Node.js** - [Node.js][nodejs] is used to host Task's documentation server
|
- **Node.js** - [Node.js][nodejs] is used to host Task's documentation server
|
||||||
and is required if you want to run this server locally.
|
and is required if you want to run this server locally. It is also required if
|
||||||
|
you want to contribute to the Visual Studio Code extension.
|
||||||
- **Yarn** - [Yarn][yarn] is the Node.js package manager used by Task.
|
- **Yarn** - [Yarn][yarn] is the Node.js package manager used by Task.
|
||||||
|
|
||||||
## 2. Making changes
|
## 2. Making changes
|
||||||
|
|
||||||
- **Code style** - Try to maintain the existing code style where possible and
|
- **Code style** - Try to maintain the existing code style where possible. Go
|
||||||
ensure that code is formatted by
|
code should be formatted by [`gofumpt`][gofumpt] and linted using
|
||||||
[`gofumpt`](https://github.com/mvdan/gofumpt). We use
|
[`golangci-lint`][golangci-lint]. Any Markdown or TypeScript files should be
|
||||||
[`golangci-lint`](https://golangci-lint.run/) in our CI to enforce a
|
formatted and linted by [Prettier][prettier]. This style is enforced by our CI
|
||||||
consistent style and best-practice. You can use the `task lint` command to run
|
to ensure that we have a consistent style across the project. You can use the
|
||||||
this locally and the `task lint:fix` command to automatically fix any issues
|
`task lint` command to lint the code locally and the `task lint:fix` command
|
||||||
that are found.
|
to automatically fix any issues that are found.
|
||||||
- **Documentation** - Ensure that you add/update any relevant documentation. See
|
- **Documentation** - Ensure that you add/update any relevant documentation. See
|
||||||
the [updating documentation](#updating-documentation) section below.
|
the [updating documentation](#updating-documentation) section below.
|
||||||
- **Tests** - Ensure that you add/update any relevant tests and that all tests
|
- **Tests** - Ensure that you add/update any relevant tests and that all tests
|
||||||
@ -48,12 +56,20 @@ To run Task with working changes, you can use `go run ./cmd/task`. To run a
|
|||||||
development build of task against a test Taskfile in `testdata`, you can use
|
development build of task against a test Taskfile in `testdata`, you can use
|
||||||
`go run ./cmd/task --dir ./testdata/<my_test_dir> <task_name>`.
|
`go run ./cmd/task --dir ./testdata/<my_test_dir> <task_name>`.
|
||||||
|
|
||||||
|
To run Task for Visual Studio Code, you can open the project in VSCode and hit
|
||||||
|
F5 (or whatever you debug keybind is set to). This will open a new VSCode window
|
||||||
|
with the extension running. Debugging this way is recommended as it will allow
|
||||||
|
you to set breakpoints and step through the code. Otherwise, you can run
|
||||||
|
`task package` which will generate a `.vsix` file that can be used to manually
|
||||||
|
install the extension.
|
||||||
|
|
||||||
### Updating documentation
|
### Updating documentation
|
||||||
|
|
||||||
Task uses [Docusaurus][docusaurus] to host a documentation server. This can be
|
Task uses [Docusaurus][docusaurus] to host a documentation server. The code for
|
||||||
setup and run locally by using `task docs` (requires `nodejs` & `yarn`). All
|
this is located in the core Task repository. This can be setup and run locally
|
||||||
content is written in Markdown and is located in the `docs/docs` directory. All
|
by using `task docs` (requires `nodejs` & `yarn`). All content is written in
|
||||||
Markdown documents should have an 80 character line wrap limit.
|
Markdown and is located in the `docs/docs` directory. All Markdown documents
|
||||||
|
should have an 80 character line wrap limit (enforced by Prettier).
|
||||||
|
|
||||||
When making a change, consider whether a change to the [Usage Guide](./usage.md)
|
When making a change, consider whether a change to the [Usage Guide](./usage.md)
|
||||||
is necessary. This document contains descriptions and examples of how to use
|
is necessary. This document contains descriptions and examples of how to use
|
||||||
@ -69,30 +85,38 @@ the schema should match.
|
|||||||
|
|
||||||
### Writing tests
|
### Writing tests
|
||||||
|
|
||||||
Most of Task's test are held in the `task_test.go` file in the project root and
|
A lot of Task's tests are held in the `task_test.go` file in the project root
|
||||||
this is where you'll most likely want to add new ones too. Most of these tests
|
and this is where you'll most likely want to add new ones too. Most of these
|
||||||
also have a subdirectory in the `testdata` directory where any Taskfiles/data
|
tests also have a subdirectory in the `testdata` directory where any
|
||||||
required to run the tests are stored.
|
Taskfiles/data required to run the tests are stored.
|
||||||
|
|
||||||
When making a changes, consider whether new tests are required. These tests
|
When making a changes, consider whether new tests are required. These tests
|
||||||
should ensure that the functionality you are adding will continue to work in the
|
should ensure that the functionality you are adding will continue to work in the
|
||||||
future. Existing tests may also need updating if you have changed Task's
|
future. Existing tests may also need updating if you have changed Task's
|
||||||
behavior.
|
behavior.
|
||||||
|
|
||||||
|
You may also consider adding unit tests for any new functions you have added.
|
||||||
|
The unit tests should follow the Go convention of being location in a file named
|
||||||
|
`*_test.go` in the same package as the code being tested.
|
||||||
|
|
||||||
## 3. Committing your code
|
## 3. Committing your code
|
||||||
|
|
||||||
Try to write meaningful commit messages and avoid having too many commits on the
|
Try to write meaningful commit messages and avoid having too many commits on the
|
||||||
PR. Most PRs should likely have a single commit (although for bigger PRs it may
|
PR. Most PRs should likely have a single commit (although for bigger PRs it may
|
||||||
be reasonable to split it in a few). Git squash and rebase is your friend!
|
be reasonable to split it in a few). Git squash and rebase is your friend!
|
||||||
|
|
||||||
|
If you're not sure how to format your commit message, check out [Conventional
|
||||||
|
Commits][conventional-commits]. This style is not enforced, but it is a good way
|
||||||
|
to make your commit messages more readable and consistent.
|
||||||
|
|
||||||
## 4. Submitting a PR
|
## 4. Submitting a PR
|
||||||
|
|
||||||
- **Describe your changes** - Ensure that you provide a comprehensive
|
- **Describe your changes** - Ensure that you provide a comprehensive
|
||||||
description of your changes.
|
description of your changes.
|
||||||
- **Issue/PR links** - Link any previous work such as related issues or PRs.
|
- **Issue/PR links** - Link any previous work such as related issues or PRs.
|
||||||
Please describe how your changes differ to/extend this work.
|
Please describe how your changes differ to/extend this work.
|
||||||
- **Examples** - Add any examples that you think are useful to demonstrate the
|
- **Examples** - Add any examples or screenshots that you think are useful to
|
||||||
effect of your changes.
|
demonstrate the effect of your changes.
|
||||||
- **Draft PRs** - If your changes are incomplete, but you would like to discuss
|
- **Draft PRs** - If your changes are incomplete, but you would like to discuss
|
||||||
them, open the PR as a draft and add a comment to start a discussion. Using
|
them, open the PR as a draft and add a comment to start a discussion. Using
|
||||||
comments rather than the PR description allows the description to be updated
|
comments rather than the PR description allows the description to be updated
|
||||||
@ -102,7 +126,8 @@ be reasonable to split it in a few). Git squash and rebase is your friend!
|
|||||||
|
|
||||||
> I want to contribute, where do I start?
|
> I want to contribute, where do I start?
|
||||||
|
|
||||||
Take a look at the list of [open issues][open-issues]. We have a [good first
|
Take a look at the list of [open issues for Task][task-open-issues] or [Task for
|
||||||
|
Visual Studio Code][vscode-task-open-issues]. We have a [good first
|
||||||
issue][good-first-issue] label for simpler issues that are ideal for first time
|
issue][good-first-issue] label for simpler issues that are ideal for first time
|
||||||
contributions.
|
contributions.
|
||||||
|
|
||||||
@ -118,13 +143,20 @@ If you have questions, feel free to ask them in the `#help` forum channel on our
|
|||||||
---
|
---
|
||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
|
[task]: https://github.com/go-task/task
|
||||||
|
[vscode-task]: https://github.com/go-task/vscode-task
|
||||||
[go]: https://go.dev
|
[go]: https://go.dev
|
||||||
|
[gofumpt]: https://github.com/mvdan/gofumpt
|
||||||
|
[golangci-lint]: https://golangci-lint.run
|
||||||
|
[prettier]: https://prettier.io
|
||||||
[nodejs]: https://nodejs.org/en/
|
[nodejs]: https://nodejs.org/en/
|
||||||
[yarn]: https://yarnpkg.com/
|
[yarn]: https://yarnpkg.com/
|
||||||
[docusaurus]: https://docusaurus.io
|
[docusaurus]: https://docusaurus.io
|
||||||
[json-schema]: https://github.com/go-task/task/blob/main/docs/static/schema.json
|
[json-schema]: https://github.com/go-task/task/blob/main/docs/static/schema.json
|
||||||
[open-issues]: https://github.com/go-task/task/issues
|
[task-open-issues]: https://github.com/go-task/task/issues
|
||||||
|
[vscode-task-open-issues]: https://github.com/go-task/vscode-task/issues
|
||||||
[good-first-issue]: https://github.com/go-task/task/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
|
[good-first-issue]: https://github.com/go-task/task/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
|
||||||
[discord-server]: https://discord.gg/6TY36E39UK
|
[discord-server]: https://discord.gg/6TY36E39UK
|
||||||
[discussion]: https://github.com/go-task/task/discussions
|
[discussion]: https://github.com/go-task/task/discussions
|
||||||
|
[conventional-commits]: https://www.conventionalcommits.org
|
||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user