private static void Run(GitHubFlowVersionContext context)
        {
            var gitHelper = new GitHelper();
            var gitRepo   = new Repository(context.GitDirectory);
            var lastTaggedReleaseFinder = new LastTaggedReleaseFinder(gitRepo, gitHelper, context.WorkingDirectory);
            var nextSemverCalculator    = new NextSemverCalculator(new NextVersionTxtFileFinder(context.RepositoryRoot),
                                                                   lastTaggedReleaseFinder);
            var buildNumberCalculator = new BuildNumberCalculator(nextSemverCalculator, lastTaggedReleaseFinder, gitHelper,
                                                                  gitRepo, context.CurrentBuildServer);

            context.NextBuildNumber = buildNumberCalculator.GetBuildNumber();

            var variableProvider = new VariableProvider();

            context.Variables = variableProvider.GetVariables(context.NextBuildNumber);
            WriteResults(context);
        }
 private static void WriteResults(GitHubFlowArguments arguments, SemanticVersion nextBuildNumber, IBuildServer currentBuildServer)
 {
     var variableProvider = new VariableProvider();
     var variables = variableProvider.GetVariables(nextBuildNumber);
     var outputStrategies = new IOutputStrategy[]
     {
         new BuildServerOutputStrategy(currentBuildServer),
         new JsonFileOutputStrategy(),
         new EnvironmentalVariablesOutputStrategy()
     };
     foreach (var outputStrategy in outputStrategies)
     {
         outputStrategy.Write(arguments, variables, nextBuildNumber);
     }
 }