ardent
An opinionated code formatter for NSIS scripts
Description
This is a Rust implementation of dent, a NodeJS-based formatting tool for NSIS scripts.
It aims to be fully compatible while making distribution easier for people outside the NodeJS ecosystem.
Installation
Cargo
Scoop
Homebrew
Nix
Source
The binary is at target/release/ardent.
CLI Usage
ardent [OPTIONS] [COMMAND]
Commands:
format Format NSIS scripts
check Check if NSIS scripts are formatted correctly
Options:
-D, --debug Print debug messages
-h, --help Print help
-V, --version Print version
Format
Formats one or more .nsi / .nsh files.
# Print formatted output to stdout
# Edit files in-place
See ardent format --help for available options.
Check
Checks whether files are already formatted.
# Check only (reports drift)
# Check and auto-fix (still exits 1 if drift was found)
See ardent check --help for available options.
Library Usage
Formatting
use ;
let formatter = new.expect;
let input = r#"section "My Section"
detailprint "Hello"
sectionend
"#;
let output = formatter.format.expect;
assert_eq!;
Checking
Returns None if the input is already formatted, or Some(formatted) if it needs changes.
use ;
let formatter = new.unwrap;
match formatter.check.unwrap
Options
| Field | Type | Default | Description |
|---|---|---|---|
end_of_line |
Option<EndOfLine> |
None (auto-detect) |
Force CRLF or LF line endings |
indent_size |
usize |
2 |
Spaces per indent level (ignored when using tabs) |
print_width |
usize |
120 |
Maximum line width before wrapping with \ continuations (0 disables) |
trim_empty_lines |
bool |
true |
Collapse consecutive blank lines and strip leading/trailing blanks |
use_tabs |
bool |
true |
Indent with tabs instead of spaces |
[!TIP] While many follow their personal preferences in the tabs vs spaces discussion, accessibility is probably the strongest argument to prefer tabs. See this discussion for more context.
Benchmark
Benchmark 1: ardent check Examples/bigtest.nsi
Time (mean ± σ): 1.5 ms ± 0.2 ms [User: 0.7 ms, System: 0.5 ms]
Range (min … max): 1.2 ms … 2.6 ms 552 runs
Benchmark 2: dent check Examples/bigtest.nsi
Time (mean ± σ): 53.9 ms ± 1.5 ms [User: 47.4 ms, System: 7.8 ms]
Range (min … max): 51.8 ms … 57.4 ms 51 runs
Warning: Ignoring non-zero exit code.
Summary
ardent check Examples/bigtest.nsi ran
36.17 ± 4.38 times faster than dent check Examples/bigtest.nsi
Related
- setup-ardent - GitHub Action to install ardent
License
This work is licensed under The MIT License.