Files
firezone/scripts/README.md
Jamil 19a7bac4ae chore(ci): enforce shellscript formatting and style (#3679)
Noticed that we all have different styles of writing scripts :-).

This PR adds linting to our shell scripts to standardize on formatting,
catch common issues and/or possible security bugs.

For editor setup:
- Ensure [`shellcheck`](https://github.com/koalaman/shellcheck) and
[`shfmt`](https://github.com/mvdan/sh) are in your `PATH`
- Configure `shfmt` with indentation of `4`, otherwise it uses tabs by
default.
[Here](https://github.com/jamilbk/nvim/blob/master/init.vim#L159) is how
you can do that with Vim and
[here](https://marketplace.visualstudio.com/items?itemName=mkhl.shfmt)
is how for VScode.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Brian Manifold <bmanifold@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
2024-02-21 01:01:32 +00:00

41 lines
1.3 KiB
Markdown

# Firezone shell scripts
This directory contains various shell scripts used for development, testing, and
deployment of the Firezone product.
## Developer Setup
We lint shell scripts in CI. To get your PR to pass, you'll want to ensure your
local development environment is set up to lint shell scripts:
1. Install [`shfmt`](https://github.com/mvdan/sh):
- `brew install shfmt` on macOS
- Install shfmt from https://github.com/mvdan/sh/releases for other platforms
1. Install [`shellcheck`](https://github.com/koalaman/shellcheck/tree/master):
- `brew install shellcheck` on macOS
- `sudo apt-get install shellcheck` on Ubuntu
Then just lint and format your shell scripts before you commit:
```
shfmt -i 4 **/*.sh
shellcheck --severity=warning **/*.sh
```
You can achieve this more easily by using `pre-commit`. See
[CONTRIBUTING](../CONTRIBUTING.md#pre-commit).
### Editor setup
- [Vim](https://github.com/dense-analysis/ale/blob/master/autoload/ale/fixers/shfmt.vim)
([here's an example](https://github.com/jamilbk/nvim/blob/master/init.vim#L159)
using ALE)
- [VSCode](https://marketplace.visualstudio.com/items?itemName=mkhl.shfmt)
## Scripting tips
- Use `#!/usr/bin/env bash` along with `set -euo pipefail` in general for dev
and test scripts.
- In Docker images and other minimal envs, stick to `#!/bin/sh` and simply
`set -eu`.