diff --git a/spec/ameba/cli/cmd_spec.cr b/spec/ameba/cli/cmd_spec.cr index c02068482..a5530baeb 100644 --- a/spec/ameba/cli/cmd_spec.cr +++ b/spec/ameba/cli/cmd_spec.cr @@ -156,6 +156,11 @@ module Ameba::Cli c.globs.should eq %w[source1.cr source2.cr] end + it "accepts single '-' argument as STDIN" do + c = Cli.parse_args %w[-] + c.stdin_filename.should eq "-" + end + it "accepts one unknown arg as explain location if it has correct format" do c = Cli.parse_args %w[source.cr:3:22] diff --git a/src/ameba/cli/cmd.cr b/src/ameba/cli/cmd.cr index 3d6040d10..32d27772a 100644 --- a/src/ameba/cli/cmd.cr +++ b/src/ameba/cli/cmd.cr @@ -78,8 +78,11 @@ module Ameba::Cli parser.on("-r", "--rules", "Show all available rules") { opts.rules = true } parser.on("-s", "--silent", "Disable output") { opts.formatter = :silent } parser.unknown_args do |arr| - if arr.size == 1 && arr.first.matches?(/.+:\d+:\d+/) + case + when arr.size == 1 && arr.first.matches?(/.+:\d+:\d+/) configure_explain_opts(arr.first, opts) + when arr.size == 1 && arr.first == "-" + opts.stdin_filename = arr.first else opts.globs = arr unless arr.empty? end