private static void WriteCompletionFile(NukeBuild build) { var completionItems = new SortedDictionary <string, string[]>(); var targets = build.ExecutableTargets.OrderBy(x => x.Name).ToList(); completionItems[InvokedTargetsParameterName] = targets.Where(x => x.Listed).Select(x => x.Name).ToArray(); completionItems[SkippedTargetsParameterName] = targets.Select(x => x.Name).ToArray(); var parameters = ValueInjectionUtility.GetParameterMembers(build.GetType(), includeUnlisted: false); foreach (var parameter in parameters) { var parameterName = ParameterService.GetParameterMemberName(parameter); if (completionItems.ContainsKey(parameterName)) { continue; } var subItems = ParameterService.GetParameterValueSet(parameter, build)?.Select(x => x.Text); completionItems[parameterName] = subItems?.ToArray(); } SerializationTasks.YamlSerializeToFile(completionItems, GetCompletionFile(NukeBuild.RootDirectory)); }
public void OnBeforeLogo( NukeBuild build, IReadOnlyCollection <ExecutableTarget> executableTargets) { var completionItems = new SortedDictionary <string, string[]>(); var targetNames = build.ExecutableTargets.Select(x => x.Name).OrderBy(x => x).ToList(); completionItems[Constants.InvokedTargetsParameterName] = targetNames.ToArray(); completionItems[Constants.SkippedTargetsParameterName] = targetNames.ToArray(); var parameters = InjectionUtility.GetParameterMembers(build.GetType(), includeUnlisted: false); foreach (var parameter in parameters) { var parameterName = ParameterService.GetParameterMemberName(parameter); if (completionItems.ContainsKey(parameterName)) { continue; } var subItems = ParameterService.GetParameterValueSet(parameter, build)?.Select(x => x.Text); completionItems[parameterName] = subItems?.ToArray(); } SerializationTasks.YamlSerializeToFile(completionItems, Constants.GetCompletionFile(NukeBuild.RootDirectory)); if (EnvironmentInfo.GetParameter <bool>(Constants.CompletionParameterName)) { Environment.Exit(exitCode: 0); } }
private static void HandleCompletion(NukeBuild build) { var completionItems = new SortedDictionary <string, string[]>(); var targetNames = build.TargetDefinitions.Select(x => x.Name).OrderBy(x => x).ToList(); completionItems[NukeBuild.InvokedTargetsParameterName] = targetNames.ToArray(); completionItems[NukeBuild.SkippedTargetsParameterName] = targetNames.ToArray(); string[] GetSubItems(Type type) { if (type.IsEnum) { return(type.GetEnumNames()); } if (type.IsSubclassOf(typeof(Enumeration))) { return(type.GetFields(ReflectionService.Static).Select(x => x.Name).ToArray()); } return(null); } foreach (var parameter in build.GetParameterMembers()) { var parameterName = ParameterService.Instance.GetParameterName(parameter); if (completionItems.ContainsKey(parameterName)) { continue; } completionItems[parameterName] = GetSubItems(parameter.GetFieldOrPropertyType())?.OrderBy(x => x).ToArray(); } SerializationTasks.YamlSerializeToFile(completionItems, NukeBuild.CompletionFile); if (EnvironmentInfo.ParameterSwitch(NukeBuild.CompletionParameterName)) { Environment.Exit(exitCode: 0); } }