From 9ca4840b424f8153654271dc24864152121ad2bf Mon Sep 17 00:00:00 2001 From: Adam Patridge Date: Sat, 15 Jul 2017 22:22:16 -0600 Subject: [PATCH] ArgumentOrEnvironmentVariable overload without environment name prefix. --- .../ArgumentOrEnvironmentVariableAliasTests.cs | 15 +++++++++++++++ .../ArgumentOrEnvironmentVariableAlias.cs | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs b/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs index aab6307..a628d33 100644 --- a/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs +++ b/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs @@ -105,6 +105,21 @@ namespace Cake.ArgumentHelpers.Tests var expected = true; var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + Assert.AreEqual(expected, actual, "Didn't find Environment variable without prefix."); + } + [Test] + public void NullArgumentAndTrueEnvironmentNoPrefixOverload_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = (string)null; + bool? testArgumentValue = null; + bool? testEnvironmentValue = true; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, true); + Assert.AreEqual(expected, actual, "Didn't find Environment variable without prefix."); } [Test] diff --git a/Cake.ArgumentHelpers/ArgumentOrEnvironmentVariableAlias.cs b/Cake.ArgumentHelpers/ArgumentOrEnvironmentVariableAlias.cs index d74365d..01c1bcb 100644 --- a/Cake.ArgumentHelpers/ArgumentOrEnvironmentVariableAlias.cs +++ b/Cake.ArgumentHelpers/ArgumentOrEnvironmentVariableAlias.cs @@ -17,5 +17,15 @@ namespace Cake.ArgumentHelpers { return ArgumentAliases.Argument(context, name, EnvironmentAliases.EnvironmentVariable(context, (environmentNamePrefix ?? "") + name) ?? defaultValue.ToString()).Equals("true", StringComparison.OrdinalIgnoreCase); } + + /// + /// Get a bool variable from various script inputs: first via Argument, then falling back on EnvironmentVariable, finally falling back on a default. + /// + /// Value found or default, first checked in command-line argument, then environment variable. + [CakeMethodAlias] + public static bool ArgumentOrEnvironmentVariable(this ICakeContext context, string name, bool defaultValue) + { + return context.ArgumentOrEnvironmentVariable(name, null, defaultValue); + } } }