/// <summary>
        /// Renders the output of an artifact directory.
        /// </summary>
        /// <param name="directory">
        /// The directory.
        /// </param>
        /// <param name="outputWhitelist">
        /// The output Whitelist.
        /// </param>
        /// <param name="isArtifactContainer">
        /// A flag indicating whether the directory is a container for artifacts.
        /// </param>
        /// <returns>
        /// The rendered output in markdown format.
        /// </returns>
        public string RenderArtifact(DirectoryPath directory, OutputWhitelist outputWhitelist, bool isArtifactContainer)
        {
            this.context.Log.Information($"Rendering content of directory '{directory}'");
            var stringBuilder = new StringBuilder();

            stringBuilder.Append("## Content");
            if (isArtifactContainer)
            {
                var container = this.context.FileSystem.GetDirectory(directory);
                var folders   = container.GetDirectories("*", SearchScope.Current);
                foreach (var folder in folders)
                {
                    stringBuilder.AppendLine();
                    stringBuilder.AppendLine();
                    stringBuilder.AppendLine($"### {folder.Path.GetDirectoryName()}");
                    var artifact = this.GetArtifact(folder.Path, outputWhitelist);
                    RenderArtifactContent(stringBuilder, artifact);
                }
            }
            else
            {
                var artifact = this.GetArtifact(directory, outputWhitelist);
                RenderArtifactContent(stringBuilder, artifact);
            }

            return(stringBuilder.ToString());
        }
示例#2
0
        public static string RenderArtifact(
            this ICakeContext context,
            DirectoryPath directory,
            OutputWhitelist outputWhitelist,
            bool isArtifactContainer)
        {
            var tools = new ReleaseTools(context);

            return(tools.RenderArtifact(directory, outputWhitelist, isArtifactContainer));
        }
        private ReleaseArtifact GetArtifact(DirectoryPath directory, OutputWhitelist outputWhitelist)
        {
            var artifact = new ReleaseArtifact();
            var files    = ImmutableArray <ArtifactFile> .Empty;

            this.context.Log.Information($"Output white list includes {outputWhitelist.Include.Length} item(s)");
            foreach (var include in outputWhitelist.Include)
            {
                this.context.Log.Information($"Getting artifacts for include filter '{include}'");
                var artifactFiles =
                    this.context.GetFiles(directory + "/" + include)
                    .Select(filePath => this.GetArtifactFile(directory, filePath));
                files =
                    files.AddRange(
                        artifactFiles);
            }

            artifact.Files = files.ToList();
            return(artifact);
        }