using System.IO; using System.Linq; using JustDance.Engine; using JustDance.Tools.Extern; using Sharpmake; namespace JustDance.Tools { /// /// Base class for a project part of the framework. /// public abstract class FrameworkProject : BaseProject { protected const string Avalon = @"[project.SharpmakeCsProjectPath]\..\..\..\tools\extern\TeaBox\Extern\Avalon\Xceed.Wpf.AvalonDock.dll"; protected FrameworkProject() : base("framework") { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = "framework"; conf.ReferencesByName.Add("System.ComponentModel.Composition"); conf.ReferencesByName.Add("Microsoft.CSharp"); } } #region TeaBox #endregion #region CoreLevel #region FromTeaBoxCore /// /// Project that was created out of the old TeaBox.Core project /// public class FromTeaBoxCoreProject : FrameworkProject { } [Generate] public class JD_Kernel : FromTeaBoxCoreProject { public JD_Kernel() { OutputType = Configuration.OutputType.DotNetClassLibrary; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); } } [Generate] public class JD_Collections : FromTeaBoxCoreProject { public JD_Collections() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.AddPublicDependency(target); } } [Generate] public class JD_UserControls : FromTeaBoxCoreProject { public JD_UserControls() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.AddPublicDependency(target); } } [Generate] public class JD_ColorForms : FromTeaBoxCoreProject { public JD_ColorForms() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.AddPublicDependency(target); } } [Generate] public class JD_Maths : FromTeaBoxCoreProject { public JD_Maths() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.Options.Add(Options.CSharp.AllowUnsafeBlocks.Enabled); conf.AddPublicDependency(target); } } [Generate] public class JD_ScreenWrappers : FromTeaBoxCoreProject { public JD_ScreenWrappers() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("PresentationCore"); conf.ReferencesByName.Add("PresentationFramework"); conf.ReferencesByName.Add("System.Core"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Xaml"); conf.ReferencesByName.Add("WindowsBase"); conf.AddPublicDependency(target); } } [Generate] public class JD_Sequencers : FromTeaBoxCoreProject { public JD_Sequencers() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("PresentationCore"); conf.ReferencesByName.Add("PresentationFramework"); conf.ReferencesByName.Add("System.Core"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Xaml"); conf.ReferencesByName.Add("WindowsBase"); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_Threading : FromTeaBoxCoreProject { public JD_Threading() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("PresentationCore"); conf.ReferencesByName.Add("PresentationFramework"); conf.ReferencesByName.Add("System.Core"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Xaml"); conf.ReferencesByName.Add("WindowsBase"); conf.AddPublicDependency(target); } } [Generate] public class JD_WinFormExtensions : FromTeaBoxCoreProject { public JD_WinFormExtensions() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("PresentationCore"); conf.ReferencesByName.Add("PresentationFramework"); conf.ReferencesByName.Add("System.Core"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Xaml"); conf.ReferencesByName.Add("WindowsBase"); conf.AddPublicDependency(target); } } [Generate] public class JD_LogService : FromTeaBoxCoreProject { public JD_LogService() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_MessageService : FromTeaBoxCoreProject { public JD_MessageService() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByName.Add("PresentationCore"); conf.ReferencesByName.Add("PresentationFramework"); conf.ReferencesByName.Add("System.Core"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Xaml"); conf.ReferencesByName.Add("WindowsBase"); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_StringParserService : FromTeaBoxCoreProject { public JD_StringParserService() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.AddPublicDependency(target); } } [Generate] public class JD_Reflection : FromTeaBoxCoreProject { public JD_Reflection() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_Serializers : FromTeaBoxCoreProject { public JD_Serializers() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_Statistics : FromTeaBoxCoreProject { public JD_Statistics() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.AddPublicDependency(target); } } [Generate] public class JD_PropertyService : FromTeaBoxCoreProject { public JD_PropertyService() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_TeaBoxAddinSystem : FromTeaBoxCoreProject { public JD_TeaBoxAddinSystem() { AdditionalContentCopyIfNewer.Add(@"Data\Layouts\*"); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = @"framework/teabox"; conf.RegisterWpf(); conf.Options.Add(Options.CSharp.AllowUnsafeBlocks.Enabled); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Management"); conf.ReferencesByName.Add("System.Runtime.Remoting"); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } #endregion [Generate] public class JD_Vault : FrameworkProject { public JD_Vault() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.JdSecretsManager); } } [Generate] public class JD_Interfaces : FrameworkProject { public JD_Interfaces() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); } } [Generate] public class JD_Core : FrameworkProject { public JD_Core() { ResourceFilesExtensions.Add(".csv"); EmbeddedResourceExtensions.Add(".csv"); AdditionalContentAlwaysCopy.Add(Path.Combine(SourceRootPath, "ProjectId.txt")); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore); conf.ReferencesByNuGetPackage.Add(Externs.NUnit); conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Configuration"); conf.ReferencesByName.Add("System.Web.Extensions"); conf.ReferencesByName.Add("System.DirectoryServices.AccountManagement"); } } [Generate] public class JD_Serialization : FrameworkProject { public JD_Serialization() { ResourceFilesExtensions.Add(".ilu"); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations"); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByName.Add("System.Design"); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore); conf.ReferencesByNuGetPackage.Add(Externs.NUnit); conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.RegisterNLua(); } } [Generate] public class JD_Perforce : FrameworkProject { public JD_Perforce() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce); conf.RegisterWpf(); conf.RegisterWinForms(); conf.RegisterWindowsFormsIntegration(); } } [Generate] public class JD_Asset : FrameworkProject { public JD_Asset() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.Cottle); conf.ReferencesByName.Add("System.Drawing"); } } [Generate] public class JD_Remoting : FrameworkProject { public JD_Remoting() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.ReferencesByNuGetPackage.Add(Externs.NUnit); conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute); conf.RegisterWpf(); conf.RegisterWinForms(); conf.RegisterWindowsFormsIntegration(); } } [Generate] public class JD_Audio : FrameworkProject { public JD_Audio() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByPath.Add(Externs.NAudio); conf.ReferencesByNuGetPackage.Add(Externs.Cottle); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_Bloomberg : FrameworkProject { public JD_Bloomberg() { // TODO: this.MergeDependency(); <-- delete this project } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); AdditionalContentCopyIfNewer.Add(@"bloomberg_settings_tools.ini"); } } [Generate] public class JD_ElasticSearch : FrameworkProject { public JD_ElasticSearch() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByPath.Add(Externs.ElasticSearch); conf.ReferencesByPath.Add(Externs.Nest); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); } } [Generate] public class JD_Localization_Core : FrameworkProject { public JD_Localization_Core() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); } } #endregion #region GuiLevel [Generate] public class JD_WPF : FrameworkProject { public JD_WPF() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByName.Add("System.Drawing"); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.RegisterWpf(); } } [Generate] public class JD_Controls : FrameworkProject { public JD_Controls() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.SolutionFolder = "framework/controls"; } } [Generate] public class JD_Filters : FrameworkProject { public JD_Filters() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.RegisterWindowsFormsIntegration(); conf.RegisterWpf(); conf.ReferencesByPath.Add(Externs.XceedDatagrid); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); conf.SolutionFolder = "framework/controls"; } } [Generate] public class JD_Pickers : FrameworkProject { public JD_Pickers() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.RegisterWindowsFormsIntegration(); conf.RegisterWpf(); conf.ReferencesByPath.Add(Externs.XceedDatagrid); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.SolutionFolder = "framework/controls"; } } [Generate] public class JD_PropertyEditor : FrameworkProject { public JD_PropertyEditor() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.ReferencesByName.Add("System.Drawing"); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency); conf.AddPublicDependency(target); TeaBoxProject.ConfigureResourceScheme(this); conf.SolutionFolder = "framework/controls"; } } #endregion #region AppLevel [Generate] public class JD_Application : FrameworkProject { public JD_Application() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByName.Add("System.Drawing"); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } [Generate] public class JD_Application_TeaBox : FrameworkProject { public JD_Application_TeaBox() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add("ProfessionalSpammer", "1.5.0"); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore); conf.ReferencesByNuGetPackage.Add(Externs.NUnit); conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute); conf.AddPublicDependency(target); conf.ReferencesByName.Add("System.Drawing"); conf.ReferencesByName.Add("System.Windows.Forms"); conf.ReferencesByPath.Add(Externs.NAudio); conf.ReferencesByPath.Add(Externs.SandBar); TeaBoxProject.ConfigureResourceScheme(this); AdditionalNone.Add(@"[project.SourceRootPath]\project.json"); conf.RegisterWpf(); } } [Generate] public class JD_CurveEditor : FrameworkProject { public JD_CurveEditor() { TeaBoxProject.ConfigureResourceScheme(this); } public override bool UnitTestCompliant { get { return true; } } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.RegisterWinForms(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByName.Remove("System.ComponentModel.Composition"); conf.ReferencesByPath.Add(Externs.SandBar); conf.SolutionFolder = "framework/controls"; } } [Generate] public class JD_VideoPlayer : FrameworkProject { public JD_VideoPlayer() { TeaBoxProject.ConfigureResourceScheme(this); AddTargets(Utilities.GetDefaultTargets()); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.ReferencesByName.Remove("System.ComponentModel.Composition"); conf.ReferencesByPath.Add(PleoNet.DllPath); conf.AddPublicDependency(target); conf.SolutionFolder = "framework/controls"; conf.ReferencesByNuGetPackage.Add(Externs.FFmpegNet); AdditionalContentCopyIfNewer.Add(BranchRoot + @"\extern\ffmpeg\ffmpeg.exe"); } } [Generate] public class JD_Timeline : FrameworkProject { public JD_Timeline() { AddTargets(Utilities.GetDefaultTargets()); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.RegisterWindowsFormsIntegration(); conf.RegisterWpf(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByPath.Add(Externs.CameraScoringFilesInfoProvider); conf.ReferencesByPath.Add(Externs.SandGrid); conf.ReferencesByPath.Add(Externs.SandBar); conf.ReferencesByPath.Add(PleoNet.DllPath); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce); TeaBoxProject.ConfigureResourceScheme(this); conf.AddPublicDependency(target); } } [Generate] public class JD_Timeline_Plume : FrameworkProject { public JD_Timeline_Plume() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.RegisterWpf(); conf.RegisterWindowsFormsIntegration(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } #endregion #region SpecificApps [Generate] public class DjRedo_Core : FrameworkProject { public DjRedo_Core() { Name = "DjRedo.Core"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByName.Add("System.Configuration"); conf.ReferencesByName.Add("System.Web.Extensions"); conf.ReferencesByName.Add("System.Runtime.Serialization"); conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations"); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add("System.Reactive.Core", "3.0.0.0"); conf.ReferencesByNuGetPackage.Add("System.Reactive.Interfaces", "3.0.0.0"); conf.ReferencesByNuGetPackage.Add("System.Reactive.Linq", "3.0.0.0"); conf.ReferencesByNuGetPackage.Add(Externs.WaapiNetCore); conf.ReferencesByNuGetPackage.Add("Collections.Complete", "0.0.8"); conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget); AdditionalNoneAlwaysCopy.Add("Configuration/defaultConfiguration.xml"); AdditionalNoneAlwaysCopy.Add("Configuration/DjRedoConfiguration.xsd"); conf.AddPublicDependency(target); } } [Generate] public class JD_Soundwich_Core : FrameworkProject { public JD_Soundwich_Core() { ResourcesPath = @"[project.SourceRootPath]\Resources"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWinForms(); conf.RegisterWpf(); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByName.Add("WindowsFormsIntegration"); AdditionalContentCopyIfNewer.Add("Soundwich.dll"); AdditionalContentCopyIfNewer.Add("libvorbis.dll"); AdditionalContentCopyIfNewer.Add("libogg.dll"); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency); } } #endregion #region Plume public abstract class PlumeFrameworkProject : FrameworkProject { protected PlumeFrameworkProject() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\framework\[project.Name]"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.SolutionFolder = "framework/plume/framework"; } } public abstract class PlumeConsoleModuleProject : FrameworkProject { protected PlumeConsoleModuleProject() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\modules\Console\[project.Name]"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Disabled); conf.ReferencesByNuGetPackage.Add(Externs.CommandLineParser); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.SolutionFolder = "framework/plume/modules/console"; } } public abstract class PlumeWPFModuleProject : FrameworkProject { protected PlumeWPFModuleProject() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\modules\WPF\[project.Name]"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Disabled); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.RegisterWpf(); conf.SolutionFolder = "framework/plume/modules/wpf"; } } public abstract class PlumeServiceProject : FrameworkProject { protected PlumeServiceProject() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\services\[project.Name]"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget); conf.AddPublicDependency(target); // TODO: Plume.Interface should be splitted even more conf.SolutionFolder = "framework/plume/services"; } } /// /// Library containing core classes for services and modules /// [Generate] public class Plume_Core : PlumeFrameworkProject { public Plume_Core() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); //conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget); conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12"); } } /// /// Library containing interfaces and abstract classes only /// that is shared between console applications and modules /// [Generate] public class Plume_Interfaces : PlumeFrameworkProject { public Plume_Interfaces() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); } } /// /// Library containing interfaces and abstract classes only /// that is shared between Console applications /// [Generate] public class Plume_Interfaces_Console : PlumeFrameworkProject { public Plume_Interfaces_Console() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); } } /// /// Library containing interfaces and abstract classes only /// that is shared between WPF applications and modules /// [Generate] public class Plume_Interfaces_WPF : PlumeFrameworkProject { public Plume_Interfaces_WPF() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSyntaxEditorDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency); } } /// /// Library containing icons in multiple resolutions, and themable /// [Generate] public class Plume_Icons : PlumeFrameworkProject { public Plume_Icons() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); } } /// /// Project for WPF specific code /// Converters, ViewModel helpers... /// [Generate] public class Plume_WPF : PlumeFrameworkProject { public Plume_WPF() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); } } /// /// Actipro add-on for themed data grids /// [Generate] public class DataGrid_Contrib : PlumeFrameworkProject { public DataGrid_Contrib() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\framework\Actipro\[project.Name]"; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder += @"\Actipro"; conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); } } /// /// Library defining a console application /// implementing interfaces from /// [Generate] public class Plume_Application : PlumeFrameworkProject { public Plume_Application() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.CommandLineParser); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); } } /// /// Library defining a Console application /// implementing interfaces from /// [Generate] public class Plume_Application_Console : PlumeFrameworkProject { public Plume_Application_Console() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); } } /// /// Library defining a WPF application /// implementing interfaces from /// [Generate] public class Plume_Application_WPF : PlumeFrameworkProject { public Plume_Application_WPF() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorInteropGridDependency); conf.ReferencesByNuGetPackage.Add(Externs.ToastNotifications); conf.ReferencesByNuGetPackage.Add(Externs.ToastNotificationsMessages); conf.ReferencesByNuGetPackage.Add("Ben.Demystifier", "0.1.4"); } } /// /// Library defining some WPF editors /// [Generate] public class Plume_Editors_WPF : PlumeFrameworkProject { public Plume_Editors_WPF() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.RegisterWpf(); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency); } } /// /// Service to handle MetaData /// [Generate] public class Plume_MetaData_Service : PlumeServiceProject { public Plume_MetaData_Service() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); } } /// /// For handling MetaData through ElasticSearch /// [Generate] public class Plume_MetaData_ElasticSearch : PlumeServiceProject { public Plume_MetaData_ElasticSearch() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.NestNuget); conf.ReferencesByNuGetPackage.Add(Externs.NestJsonNuget); conf.AddPublicDependency(target); } } /// /// Service to handle Perforce /// [Generate] public class Plume_Perforce_Service : PlumeServiceProject { public Plume_Perforce_Service() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce); } } /// /// Service to handle Bloomberg /// [Generate] public class Plume_Bloomberg_Service : PlumeServiceProject { public Plume_Bloomberg_Service() { ResourceFilesExtensions.Add(".ini"); } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.BloombergClient); } } /// /// Service to handle Quik /// [Generate] public class Plume_Quik_Service : PlumeServiceProject { public Plume_Quik_Service() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.QuikCore); conf.ReferencesByNuGetPackage.Add(Externs.QuikRemoting); conf.ReferencesByNuGetPackage.Add(Externs.QuikControl); } } /// /// Service to handle Tracking /// [Generate] public class Plume_Tracking_Service : PlumeServiceProject { public Plume_Tracking_Service() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByName.Add("System.DirectoryServices.AccountManagement"); } } /// /// Module to say "HelloWorld" /// [Generate] public class Plume_HelloWorld : PlumeConsoleModuleProject { public Plume_HelloWorld() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); // add services with "conf.AddPublicDependency(target);" } } /// /// Module to handle Perforce /// [Generate] public class Plume_Perforce : PlumeWPFModuleProject { public Plume_Perforce() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); } } /// /// Properties module /// [Generate] public class Plume_Properties : PlumeWPFModuleProject { public Plume_Properties() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency); } } /// /// Module to edit text documents /// [Generate] public class Plume_TextEditor : PlumeWPFModuleProject { public Plume_TextEditor() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.ActiproSyntaxEditorDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextDependency); conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextLLParserDependency); } } /// /// Module to handle Tracking /// [Generate] public class Plume_Tracking : PlumeWPFModuleProject { public Plume_Tracking() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.UbisoftStudio); } } /// /// Module to view image documents /// [Generate] public class Plume_ImageViewer : PlumeWPFModuleProject { public Plume_ImageViewer() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); } } /// /// Module to log in output /// [Generate] public class Plume_Output : PlumeWPFModuleProject { public Plume_Output() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); //conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget); conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12"); } } /// /// Module to log errors, warnings, messages /// [Generate] public class Plume_ErrorList : PlumeWPFModuleProject { public Plume_ErrorList() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); //conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget); conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12"); } } /// /// Wpf module to handle crashes /// [Generate] public class Plume_CrashReporter : PlumeWPFModuleProject { public Plume_CrashReporter() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.AddPublicDependency(target); } } /// /// Wpf module to handle markfdown documents /// [Generate] public class Plume_Markdown : PlumeWPFModuleProject { public Plume_Markdown() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.Markdig); } } /// /// Tool to export svg into multiple resolutions and themed png /// [Generate] public class IconGenerator : FrameworkProject { public IconGenerator() { SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\tools\[project.Name]"; OutputType = Configuration.OutputType.DotNetConsoleApp; } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.RegisterWpf(); conf.Options.Add(Options.Vc.Compiler.GenerateXMLDocumentation.Enable); conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Enabled); conf.ReferencesByNuGetPackage.Add(Externs.Morelinq); conf.ReferencesByNuGetPackage.Add(Externs.Svg); conf.ReferencesByName.Add("System.Drawing"); conf.SolutionFolder = "framework/plume/tools"; } } #endregion #region AdditionalFileGenerator // Class called through MEF public class SerializationFilesGenerator : IAdditionalFileGenerator { /// /// Generated c# file names are deterministic. /// /// This constant must be synchronized with CSharpCooker.cpp private const int FileCount = 10; public void Generate() { var project = new JD_Serialization(); var basePath = project.ResolveString(project.SourceRootPath); var directory = Path.Combine(basePath, "uaf"); string baseFactorFileName = Path.Combine(directory, "UAF_base.cs"); if (!File.Exists(baseFactorFileName)) { if (!Directory.Exists(directory)) Directory.CreateDirectory(directory); File.WriteAllText(baseFactorFileName, ""); } for (int i = 1; i <= FileCount; i++) { string fileName = Path.Combine(basePath, string.Format("uaf\\UAF_Factory_{0:00}.cs", i)); if (!File.Exists(fileName)) { File.WriteAllText(fileName, ""); } } } } public class ProjectIdGenerator : IAdditionalFileGenerator { public void Generate() { AutoGenerateFileAssociations(); } private void AutoGenerateFileAssociations() { var project = new JD_Core(); string fileAssociationsContent = ""; var fileAssociations = Utilities.GetInstances().SelectMany(x => x.FileAssociations).ToList(); var icons = fileAssociations.Icons().ToList(); foreach (var fileAssociation in fileAssociations) { fileAssociationsContent += string.Format("{0};{1};{2};{3}\n", fileAssociation.Extension, fileAssociation.ApplicationName, icons.IndexOf(fileAssociation.IconPath) + 1, fileAssociation.IconPath); } var resourcesPath = project.ResolveString(project.ResourcesPath); if (!Directory.Exists(resourcesPath)) { Directory.CreateDirectory(resourcesPath); } var filePath = Path.GetFullPath(project.ResolveString(string.Format(@"{0}\Resources\FileAssociations.csv", project.SourceRootPath))); if (File.Exists(filePath)) { File.SetAttributes(filePath, FileAttributes.Normal); } File.WriteAllText(filePath, fileAssociationsContent); } } #endregion #region Adobe [Generate] public class Shuttle_Api : FrameworkProject { public Shuttle_Api() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); conf.SolutionFolder = "framework/adobe"; } } [Generate] public class Shuttle : FrameworkProject { public Shuttle() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = "framework/adobe"; conf.AddPublicDependency(target); conf.ReferencesByName.Add("System.Drawing"); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); // SignalR conf.ReferencesByNuGetPackage.Add(Externs.SignalR); conf.ReferencesByNuGetPackage.Add(Externs.OwinHosting); conf.ReferencesByNuGetPackage.Add(Externs.OwinHttpListener); // TODO: move tests to appropriateOwinHttpListener folder and project conf.ReferencesByNuGetPackage.Add(Externs.NUnit); conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute); } } [Generate] public class ShuttleInstaller : FrameworkProject { public ShuttleInstaller() { } public override void ConfigureAll(Configuration conf, Target target) { base.ConfigureAll(conf, target); conf.SolutionFolder = "framework/adobe"; conf.ReferencesByName.Add("System.IO.Compression.FileSystem"); conf.AddPublicDependency(target); conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget); conf.ReferencesByNuGetPackage.Add(Externs.RestSharpNuGet); } } #endregion }