Beispiel #1
0
        protected virtual TeamCityParameter GetParameter(MemberInfo member, NukeBuild build, bool required)
        {
            var attribute      = member.GetCustomAttribute <ParameterAttribute>();
            var valueSet       = ParameterService.GetParameterValueSet(member, build);
            var valueSeparator = attribute.Separator ?? " ";

            // TODO: Abstract AbsolutePath/Solution/Project etc.
            var defaultValue = !member.HasCustomAttribute <SecretAttribute>() ? member.GetValue(build) : default(string);

            // TODO: enumerables of ...
            if (defaultValue != null &&
                (member.GetMemberType() == typeof(AbsolutePath) ||
                 member.GetMemberType() == typeof(Solution) ||
                 member.GetMemberType() == typeof(Project)))
            {
                defaultValue = (UnixRelativePath)GetRelativePath(NukeBuild.RootDirectory, defaultValue.ToString());
            }

            TeamCityParameterType GetParameterType()
            {
                if (member.HasCustomAttribute <SecretAttribute>())
                {
                    return(TeamCityParameterType.Password);
                }
                if (member.GetMemberType() == typeof(bool))
                {
                    return(TeamCityParameterType.Checkbox);
                }
                if (valueSet != null)
                {
                    return(TeamCityParameterType.Select);
                }
                return(TeamCityParameterType.Text);
            }

            return(new TeamCityConfigurationParameter
            {
                // TODO: #555 - Should this use ParameterService.GetParameterMemberName(member) ?
                Name = ParameterService.GetParameterMemberName(member),
                Description = attribute.Description,
                Options = valueSet?.ToDictionary(x => x.Item1, x => x.Item2),
                Type = GetParameterType(),
                DefaultValue = member.GetMemberType().IsArray&& defaultValue is IEnumerable enumerable
                           ? enumerable.Cast <object>().Select(x => x.ToString()).Join(valueSeparator)
                           : defaultValue?.ToString(),
                Display = required ? TeamCityParameterDisplay.Prompt : TeamCityParameterDisplay.Normal,
                AllowMultiple = member.GetMemberType().IsArray&& valueSet is not null,
                ValueSeparator = valueSeparator
            });
        protected virtual AzurePipelinesVariable GetParameter(MemberInfo member, NukeBuild build, bool required)
        {
            var attribute      = member.GetCustomAttribute <ParameterAttribute>();
            var valueSet       = ParameterService.GetParameterValueSet(member, build);
            var valueSeparator = attribute.Separator ?? " ";

            // TODO: Abstract AbsolutePath/Solution/Project etc.
            var defaultValue = !member.HasCustomAttribute <SecretAttribute>() ? member.GetValue(build) : default(string);

            // TODO: enumerables of ...
            if (defaultValue != null &&
                (member.GetMemberType() == typeof(AbsolutePath) ||
                 member.GetMemberType() == typeof(Solution) ||
                 member.GetMemberType() == typeof(Project)))
            {
                defaultValue = (UnixRelativePath)GetRelativePath(NukeBuild.RootDirectory, defaultValue.ToString());
            }

            return(new AzurePipelinesVariable(ParameterService.GetParameterMemberName(member),
                                              member.GetMemberType().IsArray&& defaultValue is IEnumerable enumerable
                ? enumerable.Cast <object>().Select(x => x.ToString()).Join(valueSeparator)
                : defaultValue?.ToString()));
        }
Beispiel #3
0
 public static bool HasArgument(MemberInfo member)
 {
     return(ParameterService.Instance.HasCommandLineArgument(ParameterService.GetParameterMemberName(member)));
 }