From 4c28f325e3a41ee01a5a682d2235247057a7882c Mon Sep 17 00:00:00 2001 From: Peter Minten Date: Fri, 23 Aug 2013 17:59:51 +0200 Subject: [PATCH] Supress 'Compiled' msg by default in elixirc Adds a --verbose option to elixirc This fixes #1618 --- bin/elixirc | 1 + bin/elixirc.bat | 1 + lib/elixir/lib/kernel/cli.ex | 9 +++++++-- lib/elixir/test/elixir/kernel/cli_test.exs | 10 +++++++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/bin/elixirc b/bin/elixirc index a080378445..c02202cd56 100755 --- a/bin/elixirc +++ b/bin/elixirc @@ -7,6 +7,7 @@ if [ $# -eq 0 ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then --no-debug-info Do not attach debug info to compiled modules --ignore-module-conflict --warnings-as-errors Treat warnings as errors and return non-zero exit code + --verbose Print informational messages. ** Options given after -- are passed down to the executed code ** Options can be passed to the erlang runtime using ELIXIR_ERL_OPTS" >&2 diff --git a/bin/elixirc.bat b/bin/elixirc.bat index 6e54be5cbf..6832178cd0 100644 --- a/bin/elixirc.bat +++ b/bin/elixirc.bat @@ -14,6 +14,7 @@ echo --no-docs Do not attach documentation to compiled modules echo --no-debug-info Do not attach debug info to compiled modules echo --ignore-module-conflict echo --warnings-as-errors Treat warnings as errors and return non-zero exit code +echo --verbose Print informational messages. echo. echo ** Options marked with (*) can be given more than once echo ** Options given after -- are passed down to the executed code diff --git a/lib/elixir/lib/kernel/cli.ex b/lib/elixir/lib/kernel/cli.ex index 970be437a5..7f8472430c 100644 --- a/lib/elixir/lib/kernel/cli.ex +++ b/lib/elixir/lib/kernel/cli.ex @@ -2,7 +2,8 @@ defmodule Kernel.CLI do @moduledoc false defrecord Config, commands: [], output: ".", compile: [], - halt: true, compiler_options: [], errors: [] + halt: true, compiler_options: [], errors: [], + verbose_compile: false @doc """ This is the API invoked by Elixir boot process. @@ -216,6 +217,10 @@ defmodule Kernel.CLI do defp process_compiler(["--warnings-as-errors"|t], config) do process_compiler t, config.update_compiler_options([{:warnings_as_errors, true}|&1]) end + + defp process_compiler(["--verbose"|t], config) do + process_compiler t, config.verbose_compile(true) + end defp process_compiler([h|t] = list, config) do case h do @@ -343,7 +348,7 @@ defmodule Kernel.CLI do if files != [] do Code.compiler_options(config.compiler_options) Kernel.ParallelCompiler.files_to_path(files, config.output, - each_file: fn file -> IO.puts "Compiled #{file}" end) + each_file: fn file -> if config.verbose_compile do IO.puts "Compiled #{file}" end end) :ok else { :error, "--compile : No files matched patterns #{Enum.join(patterns, ",")}" } diff --git a/lib/elixir/test/elixir/kernel/cli_test.exs b/lib/elixir/test/elixir/kernel/cli_test.exs index 2eec8a3ba9..97ea6e203e 100644 --- a/lib/elixir/test/elixir/kernel/cli_test.exs +++ b/lib/elixir/test/elixir/kernel/cli_test.exs @@ -71,7 +71,15 @@ defmodule Kernel.CLI.CompileTest do test :compile_code do fixture = fixture_path "compile_sample.ex" - assert elixirc('#{fixture} -o #{tmp_path}') == + assert elixirc('#{fixture} -o #{tmp_path}') == '' + assert File.regular?(tmp_path "Elixir.CompileSample.beam") + after + File.rm(tmp_path("Elixir.CompileSample.beam")) + end + + test :compile_code_verbose do + fixture = fixture_path "compile_sample.ex" + assert elixirc('#{fixture} -o #{tmp_path} --verbose') == 'Compiled #{fixture}\n' assert File.regular?(tmp_path "Elixir.CompileSample.beam") after