整形
対象のファイル
nuten format # カレントディレクトリ以下の .nu と .nuon
nuten format src # src 以下の .nu と .nuon
nuten format a.nu b.nu # 指定したファイル
ディレクトリを渡した場合、以下のファイルは対象になりません。
.gitignoreなどで無視されているファイル.gitなどの VCS のディレクトリにあるファイル- シンボリックリンクの先 (リンクはたどらない)
ファイルを直接渡した場合は、拡張子に関わらず整形します。対象の選び方は 設定 の include, exclude, respect_gitignore で変えられます。
書き換え
ファイルはその場で書き換えるので、ハードリンクやパーミッションはそのまま残ります。書き込みに失敗した場合は元の内容に戻します。
最後に、結果の内訳を stderr に 1 行出します。
10 files: 2 formatted, 1 failed, 3 skipped, 4 excluded
formatted: 書き換えたunchanged: 差分がなかったfailed: 構文エラーや読み書きの失敗があったskipped: 設定ファイルの誤りで処理しなかったexcluded:excludeや.gitignoreで除いた
差分を見る
nuten format --check
ファイルを変更せず、差分を stdout に出します。
2 files would be reformatted:
╭─ main.nu:2
│ def greet [name] {
│ ▍ ··$"hello·($name)"
│ ▍ ····$"hello·($name)"
│ }
│
│ ▍ let·x·=·{a:1,b:[1·2·3]}
│ ▍ let·x·=·{·a:·1,·b:·[1,·2,·3]·}
╰─
╭─ ok.nu:1
│ ▍ def·ok·[]·{·1·}
│ ▍ def·ok·[]·{⏎
│ ▍ ····1⏎
│ ▍ }
╰─
2 files: 2 need formatting (5 lines, 4 whitespace only)
- 赤は整形前、緑は整形後の行。色が付かない環境では
-と+ ·は空白、→はタブ、⏎は増減した改行- 改行コードだけが変わるときは
line endings: CRLF → LF
nuten format --list-different
差分のあるファイルのパスだけを 1 行ずつ出します。スクリプトから使う場合に向いています。
いずれも、差分があれば exit code は 1 になります。CI で結果を報告するには --reporter を使います。
stdin
open --raw a.nu | nuten format -
- を渡すと stdin を整形し、結果を stdout に出します。設定ファイルはカレントディレクトリを基準に探し、overrides と exclude は効きません。
内容がどのファイルのものか分かっているときは、--stdin-filepath でそのパスを渡します。そのパスを基準に設定ファイルを探し、overrides と exclude も効きます。
$buffer | nuten format --stdin-filepath src/a.nu -