Cargo Sort Check
A tool to check that your Cargo.toml dependencies are sorted alphabetically. Project created as a solution to @dtolnay's request for implementation #29. Cross platform implementation, windows compatible. Terminal coloring works on both cmd.exe and powershell. Checks/sorts by key in tables and also nested table headers (does not sort the items in a nested header, sorts the table itself). cargo sort-ck uses toml-parse to turn the toml file into a rowan syntax tree, it then sorts tokens keeping whitespace and comments intact. If the print or write options are used the tree is lightly formatted, fixing only formatting issues the sorting causes.
The print and write options may result in improperly formatted toml please file an issue.
Use
There are three modes cargo-sort-ck can be used in:
- default
- no flags set cargo-sort-ck will pass (exit 0) if .toml is sorted or fail if not (exit 1).
- -p or --print
- will print the sorted toml file to stdout.
- -w or --write
- will rewrite the toml file, I would like to eventually add some kind of check like cargo fix to warn if file is uncommitted/unsaved?.
included in sort check is:
[]
[]
[]
[]
[]
if you have a header to add open a PR's, they are welcomed.
Install
Run
Defaults to current dir but any path can be passed in.
)
<CWD>...
Thanks to dspicher for issue #4 you can now invoke cargo sort check as a cargo subcommand
Wildcard expansion is supported so you can do this
or any other pattern that is supported by your terminal. This also means multiple paths work.
These are all valid, file name and extension can be used on some of the paths but not others, if left off the defaults to Cargo.toml.
Examples
[]
="0.1.1"
# comments will stay with the item
="0.1.1"
# if this key value is moved the whitespace before and after will stick
# unless it is at the end of a table then it is formatted.
="0.1.1"
[]
="0"
[]
="0"
="0"
# comments will also stay with header
[]
="0"
[]
="0"
[]
="0"
="0"
Will sort to, or fail until organized like so
[]
="0.1.1"
# if this key value is moved the whitespace before and after will stick
# unless it is at the end of a table then it is formatted.
="0.1.1"
# comments will stay with the item
="0.1.1"
[]
="0"
[]
="0"
# comments will also stay with header
[]
="0"
[]
="0"
="0"
[]
="0"
="0"