/// <summary> /// Sets up or migrates the initial state of the project /// * Includes required modules /// * Perfrorms any migration /// </summary> /// <param name="registry"></param> /// <param name="project"></param> private static void SetupProject(IRegistry registry, UTinyProject project) { var module = project.Module.Dereference(registry); // Make sure there's a dependency on the core modules module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.Core")); module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.Math")); module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.Core2D")); if (project.Configuration.Equals(UTinyEntity.Reference.None)) { var configurationEntity = registry.CreateEntity(UTinyId.New(), "Configuration"); project.Configuration = (UTinyEntity.Reference)configurationEntity; } }
private void TryProcessFileDependenciesAs <TRegistryObject>(IRegistry registry, string path, string expectedExtension, Action <string, IRegistry> loadMethod) where TRegistryObject : class, IRegistryObject { if (Path.GetExtension(path) != expectedExtension) { return; } var filename = Path.GetFileNameWithoutExtension(path); var registryObject = registry?.FindByName <TRegistryObject>(filename); if (null != registryObject) { AddRegistryObjectDependency(registryObject); } else { path = RelativeToProjectFolder(path); // Load var projectRegistry = new UTinyRegistry(); loadMethod(path, projectRegistry); AddRegistryObjectDependency(projectRegistry.FindByName <TRegistryObject>(filename)); } }
/// <summary> /// Sets up or migrates the initial state of a standalone module /// * Includes required modules /// * Perfrorms any migration /// </summary> /// <param name="registry"></param> /// <param name="module"></param> private static void SetupModule(IRegistry registry, UTinyModule module) { // Always include a dependency on core module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.Core")); }