# Formatting Guidelines

All files should adhere to these formatting guidelines.

## Shell Script Formatting

- All `build.sh` files should be set to `644` permission.

- All scripts should use tabs rather than spaces.

- All parantheses of shell functions should not be preceded with a space.

- Avoid trailing spaces and tabs.

- Avoid usage of non UTF-8 encoding.

- Comments should be compact. Do not tab them if not necessary.

## Shell Script Coding Practices

- Do not define global scope variables if not necessary.

- Do not export variables if not necessary.

- Custom variables in build.sh scripts should be defined inside functions.
  If you need a "global scope" variable at build time, just define it in
  `termux_step_pre_configure()`. If you still need to define variable outside
  of function, make sure that it does not use command or process substitution.

- Dollar parentheses `$()` rather than backticks ``` `` ``` should be employed
  in command substitution.

- Usage of `sudo` or `su` in build scripts is disallowed.

- Utility `install` is preferred over `cp` as the file installation program.

- Do not hardcode version numbers. Instead, use the `$TERMUX_PKG_VERSION` and
  `$TERMUX_PKG_REVISION` variables.

- Do not hardcode Termux prefix directory. Instead, use the `$TERMUX_PREFIX`
  variable.

- Do not hardcode Termux home directory. Instead, use the `$TERMUX_ANDROID_HOME`
  variable.

## Markdown Formatting

- All `filenames` should be under code formatting, unless they are links.

- All titles should be indented with hashes rather than equal signs.

- All unnumbered lists should be indented with hyphens.

- All Markdown should be edited on alternate line.

- All Markdown should use tabs rather than spaces.

- All `.md` should be set to `644` permission.

- All special characters should be escaped.

- All names of `.md` should be capitalised.

- All code blocks should be enclosed in backticks, with language specified.

- Lines shouldn't be longer than 80 characters.