parsing guidelines
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
This commit is contained in:
parent
d81a037b0b
commit
8d4427c4ff
@ -18,6 +18,7 @@ Instructions for writing clean, safe, and maintainable shell scripts for bash, s
|
|||||||
- Assume scripts are for automation and testing rather than production systems unless specified otherwise
|
- Assume scripts are for automation and testing rather than production systems unless specified otherwise
|
||||||
- Prefer safe expansions: double-quote variable references (`"$var"`), use `${var}` for clarity, and avoid `eval`
|
- Prefer safe expansions: double-quote variable references (`"$var"`), use `${var}` for clarity, and avoid `eval`
|
||||||
- Use modern Bash features (`[[ ]]`, `local`, arrays) when portability requirements allow; fall back to POSIX constructs only when needed
|
- Use modern Bash features (`[[ ]]`, `local`, arrays) when portability requirements allow; fall back to POSIX constructs only when needed
|
||||||
|
- Choose reliable parsers for structured data instead of ad-hoc text processing
|
||||||
|
|
||||||
## Error Handling & Safety
|
## Error Handling & Safety
|
||||||
|
|
||||||
@ -37,6 +38,15 @@ Instructions for writing clean, safe, and maintainable shell scripts for bash, s
|
|||||||
- Create reusable functions instead of repeating similar blocks of code
|
- Create reusable functions instead of repeating similar blocks of code
|
||||||
- Keep the main execution flow clean and readable
|
- Keep the main execution flow clean and readable
|
||||||
|
|
||||||
|
## Working with JSON and YAML
|
||||||
|
|
||||||
|
- Prefer dedicated parsers (`jq` for JSON, `yq` for YAML—or `jq` on JSON converted via `yq`) over ad-hoc text processing with `grep`, `awk`, or shell string splitting
|
||||||
|
- When `jq`/`yq` are unavailable or not appropriate, choose the next most reliable parser available in your environment, and be explicit about how it should be used safely
|
||||||
|
- Validate that required fields exist and handle missing/invalid data paths explicitly (e.g., by checking `jq` exit status or using `// empty`)
|
||||||
|
- Quote jq/yq filters to prevent shell expansion and prefer `--raw-output` when you need plain strings
|
||||||
|
- Treat parser errors as fatal: combine with `set -euo pipefail` or test command success before using results
|
||||||
|
- Document parser dependencies at the top of the script and fail fast with a helpful message if `jq`/`yq` (or alternative tools) are required but not installed
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user