2014-03-04 12:39:34 +00:00
|
|
|
# Contributing
|
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
Contributions are most welcome! All `tldr` pages are stored in Markdown right here on GitHub.
|
|
|
|
Just open an issue or send a pull request and we'll incorporate it as soon as possible.
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
*Note*: when submitting a new command, don't forget to check if there's already a pull request in progress for it.
|
2015-04-12 20:54:27 +01:00
|
|
|
|
2014-03-04 12:39:34 +00:00
|
|
|
## Guidelines
|
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
The basic format of a `tldr` page is a set of concrete usage examples.
|
2016-01-07 19:53:19 +00:00
|
|
|
Here are a few guidelines to get started:
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2015-12-25 10:20:32 +00:00
|
|
|
1. Focus on the 5 or 6 most common usages. It's OK if the page doesn't cover everything; that's what `man` is for.
|
|
|
|
2. When in doubt, keep new command-line users in mind. Err on the side of clarity rather than terseness.
|
2016-07-26 10:32:22 +01:00
|
|
|
3. Try to incorporate the spelled-out version of single-letter options in the example's description.
|
|
|
|
The goal is to allow people to *understand* the syntax of the commands, not just *memorize* it.
|
2015-12-25 10:20:32 +00:00
|
|
|
4. Introduce options gradually, starting with the simplest commands and using more complex examples progressively.
|
|
|
|
5. Use short but descriptive values for the tokens, ex. `{{source_file}}` or `{{wallet.txt}}`.
|
2016-07-26 10:32:22 +01:00
|
|
|
6. Focus on details specific to the command, and avoid explaining general UNIX concepts that could apply to any command
|
|
|
|
(ex: relative/absolute paths, glob patterns/wildcards, special character escaping...).
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-01-07 19:53:19 +00:00
|
|
|
The best way to be consistent is to have a look at a few existing pages :).
|
2014-03-04 12:39:34 +00:00
|
|
|
|
|
|
|
## Markdown format
|
|
|
|
|
2015-08-25 04:07:19 +01:00
|
|
|
The format of each page should match the following:
|
2014-03-04 12:39:34 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
# command-name
|
|
|
|
|
2016-01-07 19:53:19 +00:00
|
|
|
> Short, snappy description.
|
2016-01-08 02:01:59 +00:00
|
|
|
> Preferably one line; two are acceptable if necessary.
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-01-07 19:53:19 +00:00
|
|
|
- Example description:
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2015-08-25 01:16:26 +01:00
|
|
|
`command -opt1 -opt2 -arg1 {{arg_value}}`
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-01-07 19:53:19 +00:00
|
|
|
- Example description:
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2015-08-25 01:16:26 +01:00
|
|
|
`command -opt1 -opt2`
|
2014-03-04 12:39:34 +00:00
|
|
|
```
|
|
|
|
|
2016-01-21 23:35:37 +00:00
|
|
|
We actually have a linter/formatter that enforces our format.
|
2016-07-24 08:05:21 +01:00
|
|
|
It is run automatically on every pull request,
|
|
|
|
but you may install it to test your contributions locally before submitting them:
|
2016-01-21 23:35:37 +00:00
|
|
|
|
|
|
|
```
|
2016-07-24 08:05:21 +01:00
|
|
|
npm install tldr-lint
|
|
|
|
tldrl -f {{page.md}}
|
2016-01-21 23:35:37 +00:00
|
|
|
```
|
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
For other ways to use `tldrl`, such as linting an entire directory, check out (what else!)
|
|
|
|
[`tldr tldrl`](https://github.com/tldr-pages/tldr/blob/master/pages/common/tldrl.md)
|
|
|
|
|
|
|
|
### Token syntax
|
2016-01-07 19:53:19 +00:00
|
|
|
User-provided values should use the `{{token}}` syntax in order to allow clients
|
|
|
|
to highlight them.
|
2015-08-25 01:16:26 +01:00
|
|
|
|
2016-01-07 19:53:19 +00:00
|
|
|
Some examples:
|
|
|
|
- `tar cf {{file}}`
|
|
|
|
- `ln -s {{path/to/original/file}} {{path/to/link}}`
|
|
|
|
- `mysql {{database_name}}`
|
|
|
|
- `unrar x {{compressed.rar}}`
|
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
In short, make it as intuitive as possible
|
|
|
|
for the user to figure out how to use the command
|
|
|
|
and fill it in with values.
|
|
|
|
|
2016-01-08 02:01:59 +00:00
|
|
|
Stick to [`snake_case`](https://en.wikipedia.org/wiki/Snake_case) where possible.
|
|
|
|
In some situations a command works with typical file extensions
|
2016-07-26 10:32:22 +01:00
|
|
|
(like the `unrar` example above);
|
|
|
|
you are encouraged to add these for demonstration.
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2015-12-29 00:36:49 +00:00
|
|
|
## Submitting a pull request
|
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
For submitting changes, you can use whatever workflow you're more comfortable with.
|
2016-07-26 10:32:22 +01:00
|
|
|
|
|
|
|
### Using Github's web interface
|
|
|
|
|
|
|
|
The easiest way to submit a change is to just edit the page directly on the Github interface.
|
2016-07-24 08:05:21 +01:00
|
|
|
Check out the step-by-step instructions (with screenshots) on
|
|
|
|
[Github Help](https://help.github.com/articles/editing-files-in-another-user-s-repository/).
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
### Using the command line
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
Alternatively, you can do most of the process using the command line:
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
- fork the repository on the github web interface
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
- clone your fork locally:
|
|
|
|
`git clone https://github.com/{{your_username}}/tldr.git && cd tldr`
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
- create a feature branch, e.g. named after the command you plan to edit:
|
|
|
|
`git checkout -b {{branch_name}}`
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
- make your changes (edit existing files or create a new one)
|
2016-01-19 13:28:43 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
- commit the changes:
|
|
|
|
`git commit --all -m "{{commit_message}}"`
|
2016-01-03 10:01:16 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
- push to your fork:
|
|
|
|
`git push`
|
2016-01-03 10:01:16 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
- go to the github page for your fork and click the green pull request button.
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
Please send only related changes in the same pull request.
|
|
|
|
Typically a pull request will include changes in a single file.
|
2016-01-24 22:37:37 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
### Commit message
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
For the commit message, use the following format:
|
2016-01-03 10:01:16 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
<command>: type of change
|
2015-12-29 00:36:49 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
Examples:
|
|
|
|
- `ls: add page`
|
|
|
|
- `cat: fix typo`
|
|
|
|
- `git-push: add --force example`
|
|
|
|
- `uname: fix -a example`
|
2015-12-29 00:36:49 +00:00
|
|
|
|
|
|
|
## Licensing
|
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
`tldr` is licensed under the [MIT license](https://github.com/tldr-pages/tldr/blob/master/LICENSE.md).
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-07-24 08:05:21 +01:00
|
|
|
**IMPORTANT**: By submitting a patch, you agree to license your work
|
|
|
|
under the same license as that used by the project.
|
2014-03-04 12:39:34 +00:00
|
|
|
|
2016-07-26 10:32:22 +01:00
|
|
|
You're free to modify or redistribute the content.
|
|
|
|
That being said, but why not contribute over here? :)
|
|
|
|
Say if you wanted to have `tldr` pages in `groff` format,
|
|
|
|
why not have a client that uses [pandoc](http://johnmacfarlane.net/pandoc/)
|
|
|
|
and periodically updates straight from this repo?
|