From 9ae14105c32453e5601b635bc83e6e6de9b985da Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Thu, 12 Dec 2024 01:35:42 +0100 Subject: [PATCH] Add --verbose command line argument This patch implements a new command line argument `--verbose` which enables verbose ouutput. Runic is now silent by default so `--verbose` re-enables the verbose file printing from previous releases. --- CHANGELOG.md | 7 +++++ README.md | 6 ++++ src/main.jl | 7 +++-- test/maintests.jl | 73 ++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 90 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e2e762..3f90643 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased +### Added + - New command line argument `--verbose` which enables verbose output ([#121]). +### Changed + - Runic is now silent by default. Use `--verbose` to enable the verbose file progress + printing from previous releases ([#121]). + ## [v1.2.0] - 2024-12-09 ### Added - New command line option `--lines=a:b` for limiting formatting to lines `a` to `b`. diff --git a/README.md b/README.md index df8c1df..1ae8246 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,12 @@ OPTIONS -o , --output= File to write formatted output to. If no output is given, or if the file is `-`, output is written to stdout. + + -v, --verbose + Enable verbose output. + + --version + Print Runic and julia version information. ``` In addition to the CLI there is also the two function `Runic.format_file` and diff --git a/src/main.jl b/src/main.jl index 131f68d..7551499 100644 --- a/src/main.jl +++ b/src/main.jl @@ -143,6 +143,9 @@ function print_help() File to write formatted output to. If no output is given, or if the file is `-`, output is written to stdout. + -v, --verbose + Enable verbose output. + --version Print Runic and julia version information. """ @@ -355,8 +358,8 @@ function main(argv) end end - # Print file info unless quiet and unless stdin and/or stdout is involved - print_progress = !(quiet || input_is_stdin || !(output.output_is_file || check)) + # Print file info if `verbose` unless piping from/to stdin/stdout + print_progress = verbose && !(input_is_stdin || !(output.output_is_file || check)) # Print file info unless quiet and unless input/output is stdin/stdout if print_progress diff --git a/test/maintests.jl b/test/maintests.jl index 571c11b..71cdae9 100644 --- a/test/maintests.jl +++ b/test/maintests.jl @@ -91,6 +91,15 @@ function maintests(f::R) where {R} write(f_in, bad) f_out = "out.jl" for argv in [["--output=$f_out", f_in], ["-o", f_out, f_in]] + rm(f_out, force = true) + rc, fd1, fd2 = runic(argv) + @test rc == 0 + @test isempty(fd1) && isempty(fd2) + @test read(f_out, String) == good + @test read(f_in, String) == bad + end + # --verbose + let argv = ["--verbose", "--output=$f_out", f_in] rm(f_out, force = true) rc, fd1, fd2 = runic(argv) @test rc == 0 @@ -107,6 +116,14 @@ function maintests(f::R) where {R} cdtmp() do f_in = "in.jl" for argv in [["--inplace", f_in], ["-i", f_in]] + write(f_in, bad) + rc, fd1, fd2 = runic(argv) + @test rc == 0 + @test isempty(fd1) && isempty(fd2) + @test read(f_in, String) == good + end + # --verbose + let argv = ["-v", "--inplace", f_in] write(f_in, bad) rc, fd1, fd2 = runic(argv) @test rc == 0 @@ -125,7 +142,14 @@ function maintests(f::R) where {R} write(f_in, good) rc, fd1, fd2 = runic(argv) @test rc == 0 - @test isempty(fd1) + @test isempty(fd1) && isempty(fd2) + @test read(f_in, String) == good + end + # --verbose + let argv = ["--verbose", "--inplace", f_in] + write(f_in, good) + rc, fd1, fd2 = runic(argv) + @test rc == 0 @test occursin("Formatting `in.jl` ...", fd2) @test occursin("✔", fd2) @test !occursin("✖", fd2) @@ -144,6 +168,15 @@ function maintests(f::R) where {R} markdownfile = "markdown.md" write(markdownfile, "this is not a Julia file") for argv in [["--inplace", "."], ["-i", "."], ["-i", ".", "src"]] + write(fgood, good) + write(fbad, bad) + rc, fd1, fd2 = runic(argv) + @test rc == 0 + @test isempty(fd1) && isempty(fd2) + @test read(fgood, String) == read(fbad, String) == good + end + # --verbose + let argv = ["-v", "--inplace", "."] write(fgood, good) write(fbad, bad) rc, fd1, fd2 = runic(argv) @@ -163,6 +196,14 @@ function maintests(f::R) where {R} cdtmp() do f_in = "in.jl" for argv in [["--check", f_in], ["-c", f_in]] + write(f_in, bad) + rc, fd1, fd2 = runic(argv) + @test rc == 1 + @test isempty(fd1) && isempty(fd2) + @test read(f_in, String) == bad + end + # --verbose + let argv = ["--verbose", "--check", f_in] write(f_in, bad) rc, fd1, fd2 = runic(argv) @test rc == 1 @@ -178,6 +219,13 @@ function maintests(f::R) where {R} cdtmp() do f_in = "in.jl" for argv in [["--check", f_in], ["-c", f_in]] + write(f_in, good) + rc, fd1, fd2 = runic(argv) + @test rc == 0 + @test isempty(fd1) && isempty(fd2) + @test read(f_in, String) == good + end + let argv = ["-v", "--check", f_in] write(f_in, good) rc, fd1, fd2 = runic(argv) @test rc == 0 @@ -200,6 +248,16 @@ function maintests(f::R) where {R} markdownfile = "markdown.md" write(markdownfile, "this is not a Julia file") for argv in [["--check", "."], ["-c", "."]] + write(fgood, good) + write(fbad, bad) + rc, fd1, fd2 = runic(argv) + @test rc == 1 + @test isempty(fd1) && isempty(fd2) + @test read(fgood, String) == good + @test read(fbad, String) == bad + end + # --verbose + let argv = ["--verbose", "--check", "."] write(fgood, good) write(fbad, bad) rc, fd1, fd2 = runic(argv) @@ -221,6 +279,19 @@ function maintests(f::R) where {R} cdtmp() do f_in = "in.jl" for argv in [["--check", "--diff", f_in], ["-c", "-d", f_in]] + write(f_in, bad) + rc, fd1, fd2 = runic(argv) + @test rc == 1 + @test isempty(fd1) + @test !occursin("Checking `in.jl` ...", fd2) + @test !occursin("✔", fd2) + @test !occursin("✖", fd2) + @test occursin("diff --git", fd2) + @test occursin("-1+1", fd2) + @test occursin("+1 + 1", fd2) + @test read(f_in, String) == bad + end + let argv = ["-v", "--check", "--diff", f_in] write(f_in, bad) rc, fd1, fd2 = runic(argv) @test rc == 1