// Copyright 2005-2015 Giacomo Stelluti Scala & Contributors. All rights reserved. See License.md in the project root for license information.
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
namespace CommandLine
{
public static class HelpTextExtensions
{
///
/// return true when errors contain HelpXXXError
///
public static bool IsHelp(this IEnumerable errs)
{
if (errs.Any(x => x.Tag == ErrorType.HelpRequestedError ||
x.Tag == ErrorType.HelpVerbRequestedError))
return true;
//when AutoHelp=false in parser, help is disabled and Parser raise UnknownOptionError
return errs.Any(x => (x is UnknownOptionError ee ? ee.Token : "") == "help");
}
///
/// return true when errors contain VersionXXXError
///
public static bool IsVersion(this IEnumerable errs)
{
if (errs.Any(x => x.Tag == ErrorType.VersionRequestedError))
return true;
//when AutoVersion=false in parser, Version is disabled and Parser raise UnknownOptionError
return errs.Any(x => (x is UnknownOptionError ee ? ee.Token : "") == "version");
}
///
/// redirect errs to Console.Error, and to Console.Out for help/version error
///
public static TextWriter Output(this IEnumerable errs)
{
if (errs.IsHelp() || errs.IsVersion())
return Console.Out;
return Console.Error;
}
}
}