Nuten

整形

対象のファイル

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 -

Last updated: