using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; namespace Scripts { #pragma warning disable CA1034 #pragma warning disable CA1819 public static class CentronPaths { public static string SolutionDirectory { get { var currentFolder = new DirectoryInfo(Path.GetDirectoryName(typeof(CentronPaths).Assembly.Location)!); return currentFolder.Parent?.Parent?.Parent?.Parent?.Parent?.FullName ?? throw new InvalidOperationException("Could not determine the SolutionDirectory"); } } public static string ArtifactsDirectory => Path.Combine(SolutionDirectory, "artifacts"); public static ReadOnlyCollection ProjectDirectories => new[] { CentronNexus.ProjectDirectory, Installer.ProjectDirectory, Tests.ProjectDirectory, }.ToList().AsReadOnly(); public static ReadOnlyCollection BinAndObjDirectories => new[] { ProjectDirectories.Select(f => Path.Combine(f, "bin")), ProjectDirectories.Select(f => Path.Combine(f, "obj")), }.SelectMany(f => f).ToList().AsReadOnly(); public static class CentronNexus { public static string TargetFramework => "net10.0"; public static string ProjectName => "CentronNexus.Host"; public static string ProjectDirectory => Path.Combine(SolutionDirectory, "src", "nexus", ProjectName); public static string CsProj => Path.Combine(ProjectDirectory, $"{ProjectName}.csproj"); public static string PublishDirectory => Path.Combine(ProjectDirectory, "bin", "Release", TargetFramework, "win-x64", "publish"); public static string[] PublishedFilesToSign => new string[] {}; public static string ArtifactsFile => Path.Combine(ArtifactsDirectory, "CentronNexus.zip"); public static class Linux { public static string PublishDirectory => Path.Combine(ProjectDirectory, "bin", "Release", TargetFramework, "linux-x64", "publish"); public static string ArtifactsFile => Path.Combine(ArtifactsDirectory, "CentronNexusLinux.zip"); } } public static class Installer { public static string ProjectName => "WixSharpInstaller"; public static string ProjectDirectory => Path.Combine(SolutionDirectory, "deployment", ProjectName); public static string InputDirectory => Path.Combine(ProjectDirectory, "Files"); public static string CsProj => Path.Combine(ProjectDirectory, $"{ProjectName}.csproj"); public static string PublishDirectory => Path.Combine(ProjectDirectory, "bin", "Release", "net10.0-windows"); public static string PublishedApplication => Path.Combine(PublishDirectory, $"{ProjectName}.exe"); public static string PublishedInstaller => Path.Combine(PublishDirectory, "c-entron Nexus.msi"); public static string ArtifactsFile => Path.Combine(ArtifactsDirectory, "c-entron Nexus Installer.zip"); } public static class Tests { public static string TargetFramework => "net10.0"; public static string ProjectName => "CentronNexusTests"; public static string ProjectDirectory => Path.Combine(SolutionDirectory, "tests", ProjectName); public static string CsProj => Path.Combine(ProjectDirectory, $"{ProjectName}.csproj"); public static string ArtifactsFileName => "TestResults.trx"; } } #pragma warning restore CA1819 #pragma warning restore CA1034 }