mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
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>
41 lines
1.3 KiB
Markdown
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`.
|