Skip to content

Commit 26efb69

Browse files
tomapJakeGinnivan
authored andcommitted
support setting verbosity in command line
1 parent 5febf16 commit 26efb69

File tree

5 files changed

+52
-3
lines changed

5 files changed

+52
-3
lines changed

src/GitVersionExe.Tests/ArgumentParserTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,4 +338,23 @@ public void nocache_true_when_defined()
338338
var arguments = ArgumentParser.ParseArguments("-nocache");
339339
arguments.NoCache.ShouldBe(true);
340340
}
341+
342+
[TestCase("-verbosity x", true, VerbosityLevel.None)]
343+
[TestCase("-verbosity none", false, VerbosityLevel.None)]
344+
[TestCase("-verbosity info", false, VerbosityLevel.Info)]
345+
[TestCase("-verbosity INFO", false, VerbosityLevel.Info)]
346+
[TestCase("-verbosity warn", false, VerbosityLevel.Warn)]
347+
[TestCase("-verbosity error", false, VerbosityLevel.Error)]
348+
public void check_verbosity_parsing(string command, bool shouldThrow, VerbosityLevel expectedVerbosity)
349+
{
350+
if (shouldThrow)
351+
{
352+
Assert.Throws<WarningException>(() => ArgumentParser.ParseArguments(command));
353+
}
354+
else
355+
{
356+
var arguments = ArgumentParser.ParseArguments(command);
357+
arguments.Verbosity.ShouldBe(expectedVerbosity);
358+
}
359+
}
341360
}

src/GitVersionExe.Tests/ExecCmdLineArgumentTest.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,24 @@ public void LogPathContainsForwardSlash()
6262
}
6363
}
6464

65+
[Theory]
66+
[TestCase("", "INFO [")]
67+
[TestCase("-verbosity Info", "INFO [")]
68+
[TestCase("-verbosity Error", "")]
69+
public void CheckBuildServerVerbosityConsole(string verbosityArg, string expectedOutput)
70+
{
71+
using (var fixture = new EmptyRepositoryFixture())
72+
{
73+
fixture.MakeATaggedCommit("1.2.3");
74+
fixture.MakeACommit();
75+
76+
var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath, arguments: String.Format( @" {0} -output buildserver /l ""/some/path""", verbosityArg), logToFile: false);
77+
78+
result.ExitCode.ShouldBe(0);
79+
result.Output.ShouldContain(expectedOutput);
80+
}
81+
}
82+
6583
[Test]
6684
public void WorkingDirectoryWithoutGitFolderCrashesWithInformativeMessage()
6785
{

src/GitVersionExe/ArgumentParser.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,15 @@ public static Arguments ParseArguments(List<string> commandLineArguments)
322322
continue;
323323
}
324324

325+
if (name.IsSwitch("verbosity"))
326+
{
327+
if (!Enum.TryParse(value, true, out arguments.Verbosity))
328+
{
329+
throw new WarningException(String.Format("Could not parse Verbosity value '{0}'", value));
330+
}
331+
continue;
332+
}
333+
325334
var couldNotParseMessage = string.Format("Could not parse command line parameter '{0}'.", name);
326335

327336
// If we've reached through all argument switches without a match, we can relatively safely assume that the first argument isn't a switch, but the target path.

src/GitVersionExe/Arguments.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public Arguments()
1010
OverrideConfig = new Config();
1111
Output = OutputType.Json;
1212
UpdateAssemblyInfoFileName = new HashSet<string>();
13+
Verbosity = VerbosityLevel.Info;
1314
}
1415

1516
public Authentication Authentication;
@@ -46,6 +47,8 @@ public Arguments()
4647
public bool NoFetch;
4748
public bool NoCache;
4849

50+
public VerbosityLevel Verbosity;
51+
4952
public void AddAssemblyInfoFileName(string fileName)
5053
{
5154
UpdateAssemblyInfoFileName.Add(fileName);

src/GitVersionExe/Program.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ static void ConfigureLogging(Arguments arguments)
180180
}
181181

182182
Logger.SetLoggers(
183-
s => writeActions.ForEach(a => a(s)),
184-
s => writeActions.ForEach(a => a(s)),
185-
s => writeActions.ForEach(a => a(s)));
183+
s => writeActions.ForEach(a => { if (arguments.Verbosity >= VerbosityLevel.Info) a(s); }),
184+
s => writeActions.ForEach(a => { if (arguments.Verbosity >= VerbosityLevel.Warn) a(s); }),
185+
s => writeActions.ForEach(a => { if (arguments.Verbosity >= VerbosityLevel.Error) a(s); }));
186186

187187
if (exception != null)
188188
Logger.WriteError(string.Format("Failed to configure logging for '{0}': {1}", arguments.LogFilePath, exception.Message));

0 commit comments

Comments
 (0)