cake-build/cake

Automatic argument retrieval with fallback mechanism

Open

#1 265 ouverte le 10 oct. 2016

Voir sur GitHub
 (7 commentaires) (0 réactions) (0 assignés)C# (738 forks)batch import
Good first issueHelp wantedImprovementUp-for-grabs

Métriques du dépôt

Stars
 (3 742 stars)
Métriques de merge PR
 (Merge moyen 1j 1h) (25 PRs mergées en 30 j)

Description

For my own purposes I have created this convenience method. It checks for argument values in the following order:

  1. Specified via command line
  2. Specified via build server (build server variable)
  3. Specified via environment variable

This way we need less explicit variable definitions because most of them are automatically retrieved from the build server (in most cases, people are running cake from a build server and pass in variables already defined in the build server).

It's currently written for continua ci only, but this can easily be extended to other build servers as well and renamed to GetVariable

public string GetContinuaCIVariable(string variableName, string defaultValue)
{
    var argumentValue = Argument(variableName, "non-existing");
    if (argumentValue != "non-existing")
    {
        Information("Variable '{0}' is specified via an argument", variableName);

        return argumentValue;
    }

    if (ContinuaCI.IsRunningOnContinuaCI)
    {
        var buildServerVariables = ContinuaCI.Environment.Variable;
        if (buildServerVariables.ContainsKey(variableName))
        {
            Information("Variable '{0}' is specified via Continua CI", variableName);

            return buildServerVariables[variableName];
        }
    }

    if (HasEnvironmentVariable(variableName))
    {
        Information("Variable '{0}' is specified via an environment variable", variableName);

        return EnvironmentVariable(variableName);
    }

    Information("Variable '{0}' is not specified, returning default value", variableName);    

    return defaultValue;
}

What do you think, is it worth PR-ing?

Guide contributeur