From 66886987deb2837206f9a4a01a4e51dec3004dcc Mon Sep 17 00:00:00 2001
From: Basile Burg <basile.b@gmx.com>
Date: Sun, 7 Jan 2018 16:20:48 +0100
Subject: [PATCH] "DUB Build" options, add a verbosity selector, close #214

---
 src/ce_dubproject.pas | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/ce_dubproject.pas b/src/ce_dubproject.pas
index 2e54c5f9..a7bc2168 100644
--- a/src/ce_dubproject.pas
+++ b/src/ce_dubproject.pas
@@ -16,6 +16,8 @@ type
 
   TDubDependencyCheck = (dcStandard, dcOffline, dcNo);
 
+  TDubVerbosity = (vDefault, vQuiet, vVerbose, vVeryVerbose, vOnlyWarnAndError, vOnlyError);
+
   (**
    * Stores the build options, always applied when a project is build
    *)
@@ -26,6 +28,7 @@ type
     fLinkMode: TDubLinkMode;
     fCombined: boolean;
     fDepCheck: TDubDependencyCheck;
+    fVerbosity: TDubVerbosity;
     fOther: string;
     fCompiler: DCompiler;
     fShowConsole: boolean;
@@ -41,6 +44,7 @@ type
     property combined: boolean read fCombined write fCombined;
     property other: string read fOther write fOther;
     property dependenciesCheck: TDubDependencyCheck read fDepCheck write fDepCheck;
+    property verbosity: TDubVerbosity read fVerbosity write fVerbosity default vDefault;
   public
     procedure assign(source: TPersistent); override;
     procedure getOpts(options: TStrings);
@@ -218,11 +222,20 @@ begin
     other:=opts.other;
     dependenciesCheck:=opts.dependenciesCheck;
     compiler:=opts.compiler;
+    verbosity:=opts.verbosity;
   end
   else inherited;
 end;
 
 procedure TCEDubBuildOptionsBase.getOpts(options: TStrings);
+const
+  vb: array[TDubVerbosity] of string = (
+  '',           //vDefault,
+  '--vquiet',   //vQuiet,
+  '-v',         //vVerbose,
+  '--vverbose', //vVeryVerbose,
+  '-q',         //vOnlyWarnAndError,
+  '--verror');  //vError
 begin
   if parallel then
     options.Add('--parallel');
@@ -238,6 +251,7 @@ begin
     dcNo: options.Add('--skip-registry=all');
     dcOffline: options.Add('--skip-registry=standard');
   end;
+  options.Add(vb[fVerbosity]);
   if other.isNotEmpty then
     CommandToList(other, options);
 end;