Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the option for a short report #502

Merged
merged 4 commits into from
Mar 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions lib/colorls/core.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,24 @@ def ls_files(files)
ls
end

def display_report
puts <<~REPORT
def display_report(report_mode)
if report_mode == :short
puts <<~REPORT

Found #{@count.values.sum} items in total.
\s\s\s\sFolders: #{@count[:folders]}, Files: #{@count[:recognized_files] + @count[:unrecognized_files]}.
REPORT
.colorize(@colors[:report])
else
puts <<~REPORT

Found #{@count.values.sum} items in total.

\tFolders\t\t\t: #{@count[:folders]}
\tRecognized files\t: #{@count[:recognized_files]}
\tUnrecognized files\t: #{@count[:unrecognized_files]}
REPORT
.colorize(@colors[:report])
\tFolders\t\t\t: #{@count[:folders]}
\tRecognized files\t: #{@count[:recognized_files]}
\tUnrecognized files\t: #{@count[:unrecognized_files]}
REPORT
.colorize(@colors[:report])
end
end

private
Expand Down
9 changes: 6 additions & 3 deletions lib/colorls/flags.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def initialize(*args)
@light_colors = false

@opts = default_opts
@show_report = false
@report_mode = false
@exit_status_code = 0

parse_options
Expand Down Expand Up @@ -88,7 +88,7 @@ def process_args
$stderr.puts "#{dir}: #{e}".colorize(:red)
end

core.display_report if @show_report
core.display_report(@report_mode) if @report_mode

@exit_status_code
end
Expand Down Expand Up @@ -142,8 +142,11 @@ def add_common_options(options)
options.on('-d', '--dirs', 'show only directories') { @opts[:show] = :dirs }
options.on('-f', '--files', 'show only files') { @opts[:show] = :files }
options.on('--gs', '--git-status', 'show git status for each file') { @opts[:git_status] = true }
options.on('--report', 'show brief report') { @show_report = true }
options.on('-p', 'append / indicator to directories') { @opts[:indicator_style] = 'slash' }
options.on('--report=[WORD]', %w[short long], 'show report: short, long (default if omitted)') do |word|
word ||= :long
@report_mode = word.to_sym
end
options.on(
'--indicator-style=[STYLE]',
%w[none slash], 'append indicator with style STYLE to entry names: none, slash (-p) (default)'
Expand Down
25 changes: 18 additions & 7 deletions spec/color_ls/flags_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,12 @@
end.not_to output(/((r|-).*(w|-).*(x|-).*){3}/).to_stdout
}

it('does not display hidden files') { expect { subject }.not_to output(/\.hidden-file/).to_stdout }
it('does not show a report') { expect { subject }.not_to output(/Found \d+ contents/).to_stdout }
it('displays dirs & files alphabetically') { expect { subject }.to output(/a-file.+symlinks.+z-file/m).to_stdout }
it('does not display hidden files') { expect { subject }.not_to output(/\.hidden-file/).to_stdout }
it('displays dirs & files alphabetically') { expect { subject }.to output(/a-file.+symlinks.+z-file/m).to_stdout }

it 'does not show a report' do
expect { subject }.not_to output(/(Found \d+ items in total\.)|(Folders: \d+, Files: \d+\.)/).to_stdout
end

it 'displays multiple files per line' do
allow($stdout).to receive(:tty?).and_return(true)
Expand Down Expand Up @@ -352,11 +355,19 @@
end
end

context 'with unrecognized files' do
let(:args) { ['--report', FIXTURES] }
context 'with --report flag' do
let(:args) { ['--report', '--report=long', FIXTURES] }

it 'shows a report with recognized and unrecognized files' do
expect { subject }.to output(/Recognized files\s+: 3\n.+Unrecognized files\s+: 3/).to_stdout
end
end

context 'with --report=short flag' do
let(:args) { ['--report=short', FIXTURES] }

it 'shows a report with unrecognized files' do
expect { subject }.to output(/Unrecognized files\s+: 3/).to_stdout
it 'shows a brief report' do
expect { subject }.to output(/Folders: \d+, Files: \d+\./).to_stdout
end
end

Expand Down
3 changes: 3 additions & 0 deletions test/checks
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ OK colorls --color=never
OK colorls --color=always
OK colorls --tree spec
OK colorls --tree=1
OK colorls --report
OK colorls --report=long
OK colorls --report=short

LC_ALL=C OK colorls spec/fixtures/
LC_ALL=C OK colorls --git spec/fixtures/
Expand Down