A source code formatter for the OpenSCAD language.
The utility is available on npm, you can install it like so:
$ npm install -g openscad-format
It packages clang-format
with it for most platforms, so you don't need to
worry about installing it.
openscad-format
is designed to be simple and flexible to use:
$ openscad-format --help
Usage: openscad-format [options]
Options:
--version Show version number [boolean]
-i, --input Input file to read, file globs allowed (quotes recommended)
[string]
-o, --output Output file to write [string]
-c, --config Use the specified path to a config using the .openscad-format
style file [string]
-j, --javadoc Automatically add {Java,JS}doc-style comment templates to
functions and modules where missing [boolean]
-f, --force Forcibly overwrite (or "fix") the source file [boolean]
-d, --dry Perform a dry run, without writing [boolean]
-h, --help Show help [boolean]
Examples:
openscad-format -i input.scad -o Formats input.scad and saves it as
output.scad output.scad
openscad-format < input.scad > Formats input.scad and saves it as
output.scad output.scad
openscad-format < input.scad Formats input.scad and writes to
stdout
cat input.scad | openscad-format | less Formats input.scad and displays in
less
openscad-format -i './**/*.scad' Formats all *.scad files recursively
and writes them to their respective
files
This utility requires clang-format, but this is automatically installed for most
platforms.
This utility by default will search for the configuration file .openscad-format in one of the parent directories. If none is found it will fall back to the default.
The format used is identical to that of clang-format, the easiest way to create the .openscad-format file is using clang-format.
clang-format -style=llvm -dump-config > .openscad-format
See the clang-format docs for the full list of options. At the time of writing this the current styles supported are: LLVM, Google, Chromium, Mozilla, andWebKit.
Make sure your PR's pass the unit tests and are free of ESLint errors. To check,
run npm run all
and it will guide you through what needs to be done.