lib/codeowners/cli.rb in codeowners-0.0.1 vs lib/codeowners/cli.rb in codeowners-0.0.2
- old
+ new
@@ -53,20 +53,46 @@
private_constant :DEFAULT_BASE_DIRECTORY
DEFAULT_CODEOWNERS_PATH = ::File.join(".github", "CODEOWNERS").freeze
private_constant :DEFAULT_CODEOWNERS_PATH
- desc "List code contributors for a file"
+ FORMAT_MAPPING = { "string" => "to_s", "csv" => "to_csv" }.freeze
+ private_constant :FORMAT_MAPPING
- argument :file, required: true, desc: "File to check"
+ FORMAT_VALUES = FORMAT_MAPPING.keys.freeze
+ private_constant :FORMAT_VALUES
+ DEFAULT_FORMAT = FORMAT_VALUES.first
+ private_constant :DEFAULT_FORMAT
+
+ DEFAULT_DEBUG = false
+ private_constant :DEFAULT_DEBUG
+
+ desc "List code contributors for a file (or a pattern)"
+
+ argument :file, required: true, desc: "File (or pattern) to check"
+
option :base_directory, type: :string, default: DEFAULT_BASE_DIRECTORY, desc: "Base directory"
+ option :format, type: :string, default: DEFAULT_FORMAT, values: FORMAT_VALUES, desc: "Output format"
+ option :debug, type: :boolean, default: DEFAULT_DEBUG, desc: "Print debug information to stdout"
- def call(file:, base_directory:, **)
- result = Codeowners::ListContributors.new(base_directory).call(file)
+ example [
+ "path/to/file.rb # file",
+ "'path/to/**/*.rb' # pattern"
+ ]
+
+ def call(file:, base_directory:, format:, debug:, **)
+ result = Codeowners::ListContributors.new(base_directory).call(file, debug)
exit(1) unless result.successful?
- out.puts result.to_s
+ out.puts output(result, format)
+ end
+
+ private
+
+ def output(result, format)
+ method_name = FORMAT_MAPPING.fetch(format)
+ result.public_send(method_name.to_sym)
end
end
register "version", Version, aliases: ["v", "-v", "--version"]
register "list", List