GoToSocial/vendor/github.com/pelletier/go-toml/CONTRIBUTING.md
tobi 0884f89431
Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config

* replace many many instances of config

* move more stuff => viper

* properly remove urfave

* move some flags to root command

* add testrig commands to root

* alias config file keys

* start adding cli parsing tests

* reorder viper init

* remove config path alias

* fmt

* change config file keys to non-nested

* we're more or less in business now

* tidy up the common func

* go fmt

* get tests passing again

* add note about the cliparsing tests

* reorganize

* update docs with changes

* structure cmd dir better

* rename + move some files around

* fix dangling comma
2021-12-07 13:31:39 +01:00

4.9 KiB
Raw Blame History

Contributing

Thank you for your interest in go-toml! We appreciate you considering contributing to go-toml!

The main goal is the project is to provide an easy-to-use TOML implementation for Go that gets the job done and gets out of your way dealing with TOML is probably not the central piece of your project.

As the single maintainer of go-toml, time is scarce. All help, big or small, is more than welcomed!

Ask questions

Any question you may have, somebody else might have it too. Always feel free to ask them on the issues tracker. We will try to answer them as clearly and quickly as possible, time permitting.

Asking questions also helps us identify areas where the documentation needs improvement, or new features that weren't envisioned before. Sometimes, a seemingly innocent question leads to the fix of a bug. Don't hesitate and ask away!

Improve the documentation

The best way to share your knowledge and experience with go-toml is to improve the documentation. Fix a typo, clarify an interface, add an example, anything goes!

The documentation is present in the README and thorough the source code. On release, it gets updated on pkg.go.dev. To make a change to the documentation, create a pull request with your proposed changes. For simple changes like that, the easiest way to go is probably the "Fork this project and edit the file" button on Github, displayed at the top right of the file. Unless it's a trivial change (for example a typo), provide a little bit of context in your pull request description or commit message.

Report a bug

Found a bug! Sorry to hear that :(. Help us and other track them down and fix by reporting it. File a new bug report on the issues tracker. The template should provide enough guidance on what to include. When in doubt: add more details! By reducing ambiguity and providing more information, it decreases back and forth and saves everyone time.

Code changes

Want to contribute a patch? Very happy to hear that!

First, some high-level rules:

  • A short proposal with some POC code is better than a lengthy piece of text with no code. Code speaks louder than words.
  • No backward-incompatible patch will be accepted unless discussed. Sometimes it's hard, and Go's lack of versioning by default does not help, but we try not to break people's programs unless we absolutely have to.
  • If you are writing a new feature or extending an existing one, make sure to write some documentation.
  • Bug fixes need to be accompanied with regression tests.
  • New code needs to be tested.
  • Your commit messages need to explain why the change is needed, even if already included in the PR description.

It does sound like a lot, but those best practices are here to save time overall and continuously improve the quality of the project, which is something everyone benefits from.

Get started

The fairly standard code contribution process looks like that:

  1. Fork the project.
  2. Make your changes, commit on any branch you like.
  3. Open up a pull request
  4. Review, potential ask for changes.
  5. Merge. You're in!

Feel free to ask for help! You can create draft pull requests to gather some early feedback!

Run the tests

You can run tests for go-toml using Go's test tool: go test ./.... When creating a pull requests, all tests will be ran on Linux on a few Go versions (Travis CI), and on Windows using the latest Go version (AppVeyor).

Style

Try to look around and follow the same format and structure as the rest of the code. We enforce using go fmt on the whole code base.


Maintainers-only

Merge pull request

Checklist:

  • Passing CI.
  • Does not introduce backward-incompatible changes (unless discussed).
  • Has relevant doc changes.
  • Has relevant unit tests.
  1. Merge using "squash and merge".
  2. Make sure to edit the commit message to keep all the useful information nice and clean.
  3. Make sure the commit title is clear and contains the PR number (#123).

New release

  1. Go to releases. Click on "X commits to master since this release".
  2. Make note of all the changes. Look for backward incompatible changes, new features, and bug fixes.
  3. Pick the new version using the above and semver.
  4. Create a new release.
  5. Follow the same format as 1.1.0.