This repository has been archived on 2024-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
neofetch/CONTRIBUTING.md

93 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# How to Contribute
## Table of Contents
<!-- vim-markdown-toc GFM -->
* [ShellCheck](#shellcheck)
* [Coding Conventions](#coding-conventions)
* [No no's](#no-nos)
* [If Statements](#if-statements)
* [Case Statements](#case-statements)
<!-- vim-markdown-toc -->
## 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
- Dont use `bc`.
- Dont use `sed`.
- Use `bash`'s built-in [parameter expansion](http://wiki.bash-hackers.org/syntax/pe).
- Dont use `cat`.
- Use `bash`'s built-in syntax (`file="$(< /path/to/file.txt)")`).
- Dont 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
```