using System;
using System.IO;
using System.Linq;
using System.Reflection;

namespace AsbCloudInfrastructure;

public static class AssemblyExtensions
{
  public static Stream GetTemplateCopyStream(this Assembly assembly, string templateName)
  {
     var resourceName = assembly
        .GetManifestResourceNames()
        .FirstOrDefault(n => n.EndsWith(templateName));

     if (string.IsNullOrWhiteSpace(resourceName))
        throw new ArgumentNullException(nameof(resourceName));

     using var stream = Assembly.GetExecutingAssembly()
        .GetManifestResourceStream(resourceName);

     var memoryStream = new MemoryStream();
     stream?.CopyTo(memoryStream);
     memoryStream.Position = 0;

			return memoryStream;
		}
	}