static void Main(string[] args)
        {
            // Try to parse options from command line
            var options = new Options();
            if (Parser.Default.ParseArguments(args, options))
            {
                try
                {
                    _collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(options.TeamCollection));
                    _buildServer = _collection.GetService<IBuildServer>();
                    _commonStructureService = _collection.GetService<ICommonStructureService>();
                    _printer = new TabbedPrinter();

                    PrintDefinitions(options);
                }
                catch (Exception ex)
                {
                    Console.WriteLine();
                    Console.WriteLine("An error occured:");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("Couldn't read options");
                Console.WriteLine();
            }
        }
        private static void PrintDefinitions(Options options)
        {
            var buildDefinitionResults = Helpers.QueryBuildDefinitions(_commonStructureService, _buildServer, options.TeamProject, options.BuildName);

            var list = new List<IBuildDefinition>();
            foreach (var buildDefinitionResult in buildDefinitionResults)
            {
                if (buildDefinitionResult.Failures != null && buildDefinitionResult.Failures.Length > 0)
                {
                    // print out the errors
                    foreach (var f in buildDefinitionResult.Failures)
                    {
                        Console.WriteLine(f.Code + ": " + f.Message);
                    }
                }

                // There still might be some definitions to modify in this result
                list.AddRange(buildDefinitionResult.Definitions.Where(buildDefinition => buildDefinition != null));

            }

            _printer.PrintDefinitionDetails(list, options.PrintTemplate, options.PrintTrigger, options.PrintDropLocation,
                options.PrintParameters, options.PrintPolicies, options.PrintBuilds, options.Parameters, options.Filters);
        }