private static IEnumerable<ITabCompletionSource> FindOldTabCompletionHooks(CommandLineArgumentsDefinition definition)
{
List<ITabCompletionSource> completionSources = new List<ITabCompletionSource>();
if (definition.Metadata.HasMeta<TabCompletion>() && definition.Metadata.Meta<TabCompletion>().CompletionSourceType != null && definition.Metadata.Meta<TabCompletion>().CompletionSourceType.GetInterfaces().Contains(typeof(ITabCompletionSource)))
{
completionSources.Add((ITabCompletionSource)Activator.CreateInstance(definition.Metadata.Meta<TabCompletion>().CompletionSourceType));
}
foreach (var argument in definition.AllGlobalAndActionArguments)
{
foreach (var argSource in argument.Metadata.Metas<ArgumentAwareTabCompletionAttribute>())
{
var source = argSource.CreateTabCompletionSource(definition, argument);
if (source is ITabCompletionSource)
{
completionSources.Insert(0, (ITabCompletionSource)source);
}
}
}
return completionSources;
}