コード例 #1
0
        public MarkdownHelpInfo(VariantGroup variantGroup, PsHelpInfo helpInfo, string examplesFolder, string externalHelpFilename = "")
        {
            ExternalHelpFilename = externalHelpFilename;
            ModuleName           = helpInfo.ModuleName;
            OnlineVersion        = helpInfo.OnlineVersion?.Uri?.NullIfEmpty() ?? variantGroup.Link;
            Schema = Version.Parse("2.0.0");

            CmdletName  = variantGroup.CmdletName;
            Aliases     = helpInfo.Aliases.NullIfEmpty() ?? variantGroup.Aliases;
            Synopsis    = helpInfo.Synopsis.NullIfEmpty() ?? variantGroup.Description;
            Description = helpInfo.Description.NullIfEmpty() ?? variantGroup.Description;

            var defaultParameterSet = variantGroup.DefaultParameterSetName;

            SyntaxInfos = variantGroup.Variants.Select(v => new MarkdownSyntaxHelpInfo(v, v.VariantName == defaultParameterSet)).ToArray();

            Examples = GetExamplesFromMarkdown(examplesFolder).NullIfEmpty()
                       ?? helpInfo.Examples.Select(e => e.ToExampleHelpInfo()).ToArray().NullIfEmpty()
                       ?? DefaultExampleHelpInfos;

            var parameterGroups = variantGroup.Variants.ToParameterGroups().Where(pg => !pg.DontShow).ToArray();

            Parameters = parameterGroups
                         .Join(helpInfo.Parameters, pg => pg.ParameterName, phi => phi.Name, (pg, phi) => new MarkdownParameterHelpInfo(phi, pg))
                         .OrderBy(phi => phi.Name).ToArray();

            Inputs = helpInfo.InputTypes.Where(it => it.Name.NullIfWhiteSpace() != null).Select(it => it.Name).ToArray().NullIfEmpty() ??
                     parameterGroups.Where(pg => pg.IsInputType).Select(pg => pg.ParameterType.FullName).ToArray();
            Outputs = helpInfo.OutputTypes.Where(it => it.Name.NullIfWhiteSpace() != null).Select(ot => ot.Name).ToArray().NullIfEmpty() ??
                      variantGroup.OutputTypes.Select(ot => ot.Type.FullName).ToArray();
            RelatedLinks = helpInfo.RelatedLinks.Select(rl => rl.Text).ToArray();

            SupportsShouldProcess = variantGroup.SupportsShouldProcess;
            SupportsPaging        = variantGroup.SupportsPaging;
        }
コード例 #2
0
        public static Variant[] ToVariants(this CommandInfo info, PsHelpInfo helpInfo)
        {
            var metadata          = new CommandMetadata(info);
            var privateCmdletName = metadata.Name.Split('!').First();
            var parts             = privateCmdletName.Split('_');

            return(parts.Length > 1
                ? new[] { new Variant(parts[0], parts[1], info, metadata, helpInfo: helpInfo) }
                   // Process multiple parameter sets, so we declare a variant per parameter set.
                : info.ParameterSets.Select(ps => new Variant(privateCmdletName, ps.Name, info, metadata, true, helpInfo)).ToArray());
        }
コード例 #3
0
        public Variant(string cmdletName, string variantName, CommandInfo info, CommandMetadata metadata, bool hasParameterSets = false, PsHelpInfo helpInfo = null)
        {
            CmdletName            = cmdletName;
            VariantName           = variantName;
            Info                  = info;
            HelpInfo              = helpInfo ?? new PsHelpInfo();
            Metadata              = metadata;
            HasParameterSets      = hasParameterSets;
            IsFunction            = Info.CommandType == CommandTypes.Function;
            PrivateModuleName     = Info.Source;
            PrivateCmdletName     = Metadata.Name;
            SupportsShouldProcess = Metadata.SupportsShouldProcess;
            SupportsPaging        = Metadata.SupportsPaging;

            Attributes           = this.ToAttributes();
            Parameters           = this.ToParameters().OrderBy(p => p.OrderCategory).ThenByDescending(p => p.IsMandatory).ToArray();
            IsInternal           = Attributes.OfType <InternalExportAttribute>().Any();
            IsDoNotExport        = Attributes.OfType <DoNotExportAttribute>().Any();
            CmdletOnlyParameters = Parameters.Where(p => !p.Categories.Any(c => c == ParameterCategory.Azure || c == ParameterCategory.Runtime)).ToArray();
            Profiles             = Attributes.OfType <ProfileAttribute>().SelectMany(pa => pa.Profiles).ToArray();
        }