docs: Initial CONTRIBUTING.md
This commit is contained in:
parent
4f4f237395
commit
736b45a9ed
1 changed files with 80 additions and 0 deletions
80
CONTRIBUTING.md
Normal file
80
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,80 @@
|
|||
# How to Contribute
|
||||
|
||||
|
||||
## ShellCheck
|
||||
|
||||
For your contribution to be accepted, your changes need to pass
|
||||
ShellCheck.
|
||||
|
||||
Run ShellCheck with the following command:
|
||||
|
||||
```sh
|
||||
# Why do we exclude numerous tests?
|
||||
# See: https://github.com/dylanaraps/neofetch/wiki/Shellcheck-Exclusions
|
||||
shellcheck neofetch -e SC1090,SC2009,SC2012,SC2016,SC2034,SC2128,SC2153,SC2154,SC2178,SC2010,SC1004,SC1091,SC1117
|
||||
```
|
||||
|
||||
**Note**: If you have trouble installing ShellCheck. You can open a pull
|
||||
request on the repo and our Travis.ci hook will run ShellCheck for you.
|
||||
|
||||
|
||||
## Coding Conventions
|
||||
|
||||
- Indent 4 spaces.
|
||||
- Use [snake_case](https://en.wikipedia.org/wiki/Snake_case) for function
|
||||
and variable names.
|
||||
- Keep lines below `100` characters long.
|
||||
- Use `[[ ]]` for tests.
|
||||
|
||||
|
||||
## No no's
|
||||
|
||||
- Don’t use `bc`.
|
||||
- Don’t use `sed`.
|
||||
- Use `bash`'s built-in [parameter expansion](http://wiki.bash-hackers.org/syntax/pe).
|
||||
- Don’t use `cat`.
|
||||
- Use `bash`'s built-in syntax (`file="$(< /path/to/file.txt)")`).
|
||||
- Don’t use `grep "pattern" | awk '{ printf }'`.
|
||||
- Use `awk '/pattern/ { printf }'`
|
||||
|
||||
|
||||
## If Statements
|
||||
|
||||
If the test only has one command inside of it; use the compact `if`
|
||||
syntax. Otherwise the normal `if`/`fi` is just fine.
|
||||
|
||||
```sh
|
||||
# Bad
|
||||
if [[ "$var" ]]; then
|
||||
echo "$var"
|
||||
fi
|
||||
|
||||
# Good
|
||||
[[ "$var" ]] && echo "$var"
|
||||
|
||||
# Also good (Use this for longer lines.
|
||||
[[ "$var" ]] && \
|
||||
echo "$var"
|
||||
```
|
||||
|
||||
|
||||
## Case Statements
|
||||
|
||||
Case statements need to be formatted in a specific way.
|
||||
|
||||
```sh
|
||||
# Good example (Notice the indentation).
|
||||
case "$var" in
|
||||
1) echo 1 ;;
|
||||
2)
|
||||
echo 1
|
||||
echo 2
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1
|
||||
echo 2
|
||||
echo 3
|
||||
;;
|
||||
esac
|
||||
```
|
Loading…
Reference in a new issue