public StartupTemplate(IOutputTarget outputTarget, object model = null) : base(TemplateId, outputTarget, model)
 {
     outputTarget.Application.EventDispatcher.Subscribe <ContainerRegistrationRequest>(HandleServiceRegistration);
     //eventDispatcher.Subscribe(ContainerRegistrationForDbContextEvent.EventId, HandleDbContextRegistration);
     //eventDispatcher.Subscribe(ServiceConfigurationRequiredEvent.EventId, HandleServiceConfiguration);
     //eventDispatcher.Subscribe(InitializationRequiredEvent.EventId, HandleInitialization);
 }
예제 #2
0
 public bool Equals(IOutputTarget other)
 {
     var ot = other as ListBoxOutputTarget;
     if (ot == null)
         return false;
     return ot._listBox == _listBox;
 }
 /// <summary>
 /// Returns a namespace string based on the full path from the <paramref name="target"/>. This will include folders and C# projects.
 /// </summary>
 /// <param name="target"></param>
 /// <returns></returns>
 public static string GetNamespace(this IOutputTarget target)
 {
     return(string.Join(".", target.GetTargetPath()
                        .Where(x => !x.Metadata.ContainsKey("Namespace Provider") ||
                               x.Metadata["Namespace Provider"] as bool? == true)
                        .Select(x => x.Name.ToCSharpNamespace())));
 }
예제 #4
0
 private IEnumerable <INugetPackageInfo> GetTemplateNugetDependencies(IOutputTarget project)
 {
     return(project.TemplateInstances
            .SelectMany(ti => ti.GetAllNugetDependencies())
            .Distinct()
            .ToList());
 }
예제 #5
0
        public bool Update(IMotionSource motionSource, IOutputTarget outputTarget)
        {
            if (_isLoading)
            {
                for (var i = 0; i < 9; i++)
                {
                    ETarget[i] = Mathf.Lerp(ETarget[i], 0f, 0.05f);
                }

                for (var i = 0; i < 3; i++)
                {
                    XTarget[i] = Mathf.Lerp(XTarget[i], 0.5f, 0.05f);
                    RTarget[i] = Mathf.Lerp(RTarget[i], 0f, 0.05f);
                }
            }
            else if (motionSource != null)
            {
                UpdateMotion(motionSource);

                DebugDraw.DrawCircle(motionSource.TargetPosition + motionSource.TargetUp * RangeMinL0Slider.val * motionSource.ReferenceLength, motionSource.TargetUp, motionSource.TargetRight, Color.white, 0.05f);
                DebugDraw.DrawCircle(motionSource.TargetPosition + motionSource.TargetUp * RangeMaxL0Slider.val * motionSource.ReferenceLength, motionSource.TargetUp, motionSource.TargetRight, Color.white, 0.05f);
            }

            UpdateValues(outputTarget);

            return(true);
        }
예제 #6
0
        public void Install(XDocument doc, IOutputTarget p)
        {
            _namespaces = new XmlNamespaceManager(new NameTable());
            var defaultNamespace = doc.Root.GetDefaultNamespace();

            _namespaces.AddNamespace("ns", defaultNamespace.NamespaceName);
            _namespaces.AddNamespace("urns", "urn:schemas-microsoft-com:asm.v1");

            var configurationElement = doc.XPathSelectElement("/ns:configuration", _namespaces);

            if (configurationElement == null)
            {
                doc.Add(configurationElement = new XElement("configuration"));
            }

            var runtimeElement = doc.XPathSelectElement("/ns:configuration/ns:runtime", _namespaces);

            if (runtimeElement == null)
            {
                configurationElement.Add(runtimeElement = new XElement("runtime"));
            }

            var assemblyBindingElement = doc.XPathSelectElement("/ns:configuration/ns:runtime/urns:assemblyBinding", _namespaces);

            if (assemblyBindingElement == null)
            {
                runtimeElement.AddFirst(assemblyBindingElement = new XElement((XNamespace)_namespaces.LookupNamespace("urns") + "assemblyBinding"));
            }

            var nugetPackages = p.Application.OutputTargets.Where(x => x.IsVSProject()).SelectMany(x => x.NugetPackages()).Distinct(); // NOTE: This is not very robust as we are "distincting" on name. Logic should be implemented to choose which version.

            AddAssemblyBindingRedirects(assemblyBindingElement, nugetPackages.SelectMany(x => x.AssemblyRedirects).ToList());
        }
 public IdentityServerConfigurationTemplate(IOutputTarget outputTarget, object model = null) : base(TemplateId, outputTarget, model)
 {
     AddNugetDependency(NugetPackages.IdentityServer4);
     base.Project.Application.EventDispatcher.Subscribe <CertificateSpecifiedEvent>(evt =>
     {
         _hasCertificateSpecified = true;
     });
 }
예제 #8
0
 public DbContextInterfaceTemplate(IOutputTarget outputTarget, IList <ClassModel> model) : base(Identifier, outputTarget, model)
 {
     AddNugetDependency(NugetPackages.EntityFrameworkCore(Project));
     ExecutionContext.EventDispatcher.Subscribe <EntityTypeConfigurationCreatedEvent>(evt =>
     {
         _entityTypeConfigurations.Add(evt);
     });
 }
        public override ITemplate CreateTemplateInstance(IOutputTarget project, ElementSettingsModel model)
        {
            var associationSettings = _metadataManager.ModuleBuilder(project.Application).GetAssociationSettingsModels()
                                      .Where(x => x.TargetEnd.TargetsType(model.Id) || x.SourceEnd.TargetsType(model.Id))
                                      .ToList();

            return(new ApiElementModelTemplate(project, model, associationSettings));
        }
예제 #10
0
 public HtmlFileTemplatePartialTemplate(IOutputTarget outputTarget, HtmlFileTemplateModel model) : base(TemplateId, outputTarget, model)
 {
     AddNugetDependency(IntentNugetPackages.IntentCommonHtml);
     //if (!string.IsNullOrWhiteSpace(Model.GetModule().NuGetPackageId))
     //{
     //    AddNugetDependency(new NugetPackageInfo(Model.GetModule().NuGetPackageId, Model.GetModule().NuGetPackageVersion));
     //}
 }
예제 #11
0
 /// <summary>
 /// Returns the package name of the <paramref name="target"/>'s using the <paramref name="rootFolder"/> folder as the root.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="rootFolder"></param>
 /// <returns></returns>
 public static string GetPackageName(this IOutputTarget target, string rootFolder)
 {
     return(string.Join(".", target.GetTargetPath().Select(x => x.Name)
                        .Reverse()
                        .TakeWhile(x => !string.Equals(x, rootFolder, StringComparison.InvariantCultureIgnoreCase))
                        .Reverse())
            .ToKotlinPackage());
 }
예제 #12
0
        public void CreateUI()
        {
            pluginLabelJSON.val = PluginName;

            _builder = new UIBuilder();
            _group   = new UIGroup(_builder);
            _group.BlacklistStorable("Device Report");

            PluginTitle = _group.CreateDisabledButton("Plugin", new Color(0.3f, 0.3f, 0.3f), Color.white);

            PresetButtonGroup = _group.CreateHorizontalGroup(510, 50, new Vector2(10, 0), 3, idx => _group.CreateButtonEx());
            var saveButton = PresetButtonGroup.items[0].GetComponent <UIDynamicButton>();

            saveButton.buttonText.fontSize = 25;
            saveButton.label       = "Save Config";
            saveButton.buttonColor = new Color(0.309f, 1f, 0.039f) * 0.8f;
            saveButton.textColor   = Color.white;
            saveButton.button.onClick.AddListener(SaveConfigCallback);

            var loadButton = PresetButtonGroup.items[1].GetComponent <UIDynamicButton>();

            loadButton.buttonText.fontSize = 25;
            loadButton.label       = "Load Config";
            loadButton.buttonColor = new Color(1f, 0.168f, 0.039f) * 0.8f;
            loadButton.textColor   = Color.white;
            loadButton.button.onClick.AddListener(LoadConfigCallback);

            var defaultButton = PresetButtonGroup.items[2].GetComponent <UIDynamicButton>();

            defaultButton.buttonText.fontSize = 25;
            defaultButton.label       = "As Default";
            defaultButton.buttonColor = new Color(1f, 0.870f, 0.039f) * 0.8f;
            defaultButton.textColor   = Color.white;
            defaultButton.button.onClick.AddListener(SaveDefaultConfigCallback);

            OutputTargetSettings = new OutputTargetSettings(t => _outputTarget = t);
            OutputTargetSettings.CreateUI(_group);

            var debugGroup = new UIGroup(_group);
            var visible    = false;

            DebugTitle = _group.CreateButton("Debug", () => debugGroup.SetVisible(visible = !visible), new Color(0.3f, 0.3f, 0.3f), Color.white);

            DebugDrawEnableToggle          = debugGroup.CreateToggle("Plugin:DebugDrawEnable", "Enable Debug", false);
            DeviceReportText               = debugGroup.CreateTextField("Device Report", "", 320);
            DeviceReportText.text.font     = Font.CreateDynamicFontFromOSFont("Consolas", 24);
            DeviceReportText.text.fontSize = 24;

            debugGroup.SetVisible(false);

            MotionSourceTitle   = _group.CreateDisabledButton("Motion Source", new Color(0.3f, 0.3f, 0.3f), Color.white);
            MotionSourceChooser = _group.CreatePopup("Plugin:MotionSourceChooser", "Select motion source", new List <string> {
                "Male + Female", "Asset + Female", "D***o + Female", "Animation Pattern", "Range Test"
            }, "Male + Female", MotionSourceChooserCallback);

            DeviceChooserCallback("T-code");
            MotionSourceChooserCallback("Male + Female");
        }
        public AngularModuleTemplate(IOutputTarget outputTarget, Intent.Modelers.WebClient.Angular.Api.ModuleModel model) : base(TemplateId, outputTarget, model)
        {
            if (Model.IsRootModule())
            {
                _angularImports.Add(this.UseType("BrowserModule", "@angular/platform-browser"));
                _angularImports.Add(this.UseType("BrowserAnimationsModule", "@angular/platform-browser/animations"));
                _components.Add(this.UseType("AppComponent", "./app.component"));
            }
            else
            {
                _angularImports.Add(this.UseType("CommonModule", "@angular/common"));
            }

            ExecutionContext.EventDispatcher.Subscribe <AngularComponentCreatedEvent>(@event =>
            {
                if (@event.ModuleId == ClassName)
                {
                    _components.Add(GetTypeName(@event.ModelId));
                }
                else if (@event.ModuleId == Model.Id)
                {
                    _components.Add(GetTypeName(AngularComponentTsTemplate.TemplateId, @event.ModelId));
                }
            });

            ExecutionContext.EventDispatcher.Subscribe <AngularServiceProxyCreatedEvent>(@event =>
            {
                if (@event.ModuleId != Model.Id)
                {
                    return;
                }

                var templateClassName = GetTypeName(@event.TemplateId, @event.ModelId);
                _providers.Add(templateClassName);
            });

            ExecutionContext.EventDispatcher.Subscribe <AngularImportDependencyRequiredEvent>(@event =>
            {
                if (@event.ModuleId != Model.Id && @event.ModuleId != ClassName)
                {
                    return;
                }

                _angularImports.Add(@event.Dependency);
                _imports.Add(@event.Import);
            });

            ExecutionContext.EventDispatcher.Subscribe <AngularCustomProviderRequiredEvent>(@event =>
            {
                if (@event.ModuleId != Model.Id && @event.ModuleId != ClassName)
                {
                    return;
                }

                _providers.Add($"{{ provide: {@event.Provide}, useClass: {@event.UseClass}, multi: {@event.Multi.ToString().ToLower()} }}");
                _imports.Add(@event.Import);
            });
        }
        public static void AddReference(this IOutputTarget outputTarget, IAssemblyReference assemblyDependency)
        {
            var collection = outputTarget.References();

            if (!collection.Contains(assemblyDependency))
            {
                collection.Add(assemblyDependency);
            }
        }
 public DataTransferModelTemplate(IOutputTarget outputTarget, Intent.Modelers.Services.Api.DTOModel model) : base(TemplateId, outputTarget, model)
 {
     AddDependency(new JavaDependency("org.projectlombok", "lombok", "1.18.12"));
     if (model.Fields.Any(x => x.TypeReference.IsCollection))
     {
         SetDefaultTypeCollectionFormat($"{ImportType("java.util.List")}<{{0}}>");
     }
     AddTypeSource(TemplateId, type => $"{ImportType("java.util.List")}<{type}>");
 }
 public override ITemplate CreateTemplateInstance(IOutputTarget project, FileTemplateModel model)
 {
     return(new TemplatePreProcessedFileTemplate(
                templateId: TemplateId,
                project: project,
                model: model,
                t4TemplateId: FileTemplateTemplate.TemplateId,
                partialTemplateId: FileTemplatePartialTemplate.TemplateId));
 }
 public FormGroupTemplate(IOutputTarget outputTarget, Intent.Modelers.WebClient.Angular.Api.FormGroupDefinitionModel model) : base(TemplateId, outputTarget, model)
 {
     AddTypeSource(FormGroupTemplate.TemplateId);
     // GCB - an interesting dependency predicament. Perhaps there should be a mechanism where a template can declare itself
     //       the representative of a model type, and this would not be necessary. Using the hierarchy of the OutputTargets could
     //       make the discovery of the type predictable. Food for thought.
     //AddTypeSource(AngularDTOTemplate.TemplateId);
     AddTypeSource("Intent.Angular.ServiceProxies.Proxies.AngularDTOTemplate");
 }
예제 #18
0
        public CustomTemplateRegistrationTemplate(IOutputTarget project, TemplateRegistrationModel model) : base(TemplateId, project, model)
        {
            AddNugetDependency(IntentNugetPackages.IntentModulesCommon);

            if (!string.IsNullOrWhiteSpace(Model.GetModelType()?.ParentModule.NuGetPackageId))
            {
                AddNugetDependency(new NugetPackageInfo(Model.GetModelType()?.ParentModule.NuGetPackageId, Model.GetModelType()?.ParentModule.NuGetPackageVersion));
            }
        }
예제 #19
0
        public ApiElementExtensionModelTemplate(IOutputTarget outputTarget, ElementExtensionModel model) : base(TemplateId, outputTarget, model)
        {
            AddNugetDependency(IntentNugetPackages.IntentModulesCommon);

            if (Model.TypeReference.Element.Id == FolderModel.SpecializationTypeId)
            {
                AddNugetDependency(IntentNugetPackages.IntentModulesCommonTypes);
            }
        }
 public WebApiServiceCSProjectFileTemplate(IOutputTarget project, IVisualStudioProject model)
     : base(Identifier, project, model)
 {
     //_port = project.ProjectType.Properties.FirstOrDefault(x => x.Name == "Port")?.Value;
     //bool.TryParse(project.ProjectType.Properties.FirstOrDefault(x => x.Name == "UseSsl")?.Value, out var useSsl);
     //if (useSsl)
     //{
     //    _sslPort = project.ProjectType.Properties.First(x => x.Name == "SslPort").Value;
     //}
 }
 public AngularComponentTsTemplate(IOutputTarget outputTarget, Intent.Modelers.WebClient.Angular.Api.ComponentModel model) : base(TemplateId, outputTarget, model)
 {
     AddTypeSource(ModelTemplate.TemplateId);
     AddTypeSource(FormGroupTemplate.TemplateId);
     AddTypeSource("Intent.Angular.ServiceProxies.Proxies.AngularDTOTemplate");
     AddTypeSource("Intent.Angular.ServiceProxies.Proxies.AngularServiceProxyTemplate");
     _injectedServices = Model.GetAngularComponentSettings().InjectServices()?.Where(x => x.SpecializationTypeId == AngularServiceModel.SpecializationTypeId)
                         .Select(x => (x.Name.ToCamelCase(), this.UseType(x.Name, new AngularServiceModel(x).GetAngularServiceSettings().Location())))
                         .ToList() ?? new List <(string, string)>();
 }
예제 #22
0
 public TemplatePreProcessedFileTemplate(
     string templateId,
     IOutputTarget project,
     TemplateRegistrationModel model,
     string t4TemplateId,
     string partialTemplateId)
     : base(templateId, project, model)
 {
     _t4TemplateId      = t4TemplateId;
     _partialTemplateId = partialTemplateId;
 }
예제 #23
0
 public DbContextTemplate(IOutputTarget outputTarget, IList <ClassModel> model) : base(TemplateId, outputTarget, model)
 {
     ExecutionContext.EventDispatcher.Subscribe <OverrideDbContextOptionsEvent>(evt =>
     {
         _useDbContextAsOptionsParameter |= evt.UseDbContextAsOptionsParameter;
     });
     ExecutionContext.EventDispatcher.Subscribe <EntityTypeConfigurationCreatedEvent>(evt =>
     {
         _entityTypeConfigurations.Add(evt);
         AddTemplateDependency(TemplateDependency.OnTemplate(evt.Template));
     });
 }
 public static bool IsVSProject(this IOutputTarget outputTarget)
 {
     return(new[] {
         VisualStudioProjectTypeIds.CSharpLibrary,
         VisualStudioProjectTypeIds.WebApiApplication,
         VisualStudioProjectTypeIds.WcfApplication,
         VisualStudioProjectTypeIds.ConsoleAppNetFramework,
         VisualStudioProjectTypeIds.NodeJsConsoleApplication,
         VisualStudioProjectTypeIds.CoreWebApp,
         VisualStudioProjectTypeIds.CoreCSharpLibrary,
         VisualStudioProjectTypeIds.SQLServerDatabaseProject
     }.Contains(outputTarget.Type));
 }
        public static void AddDependency(this IOutputTarget outputTarget, IOutputTarget dependency)
        {
            if (outputTarget.Equals(dependency))
            {
                throw new Exception($"OutputTarget [{outputTarget}] cannot add a dependency to itself");
            }
            var collection = outputTarget.Dependencies();

            if (!collection.Contains(dependency))
            {
                collection.Add(dependency);
            }
        }
        public ApiElementModelTemplate(IOutputTarget outputTarget, ElementSettingsModel model, List <AssociationSettingsModel> associationSettings) : base(TemplateId, outputTarget, model)
        {
            AddNugetDependency(IntentNugetPackages.IntentModulesCommon);

            AssociationSettings = associationSettings;
            AddTypeSource(CSharpTypeSource.Create(ExecutionContext, TemplateId, collectionFormat: "IEnumerable<{0}>"));
            ExecutionContext.EventDispatcher.Subscribe <NotifyModelHasParentFolderEvent>(@event =>
            {
                if (@event.ModelId == model.Id)
                {
                    HasParentFolder = true;
                }
            });
        }
예제 #27
0
        public ApiElementModelExtensionsTemplate(IOutputTarget outputTarget, ExtensionModel model = null) : base(TemplateId, outputTarget, model)
        {
            AddNugetDependency(IntentNugetPackages.IntentModulesCommon);

            foreach (var module in Model.StereotypeDefinitions
                     .SelectMany(x => x.TargetElements)
                     .Distinct()
                     .Select(x => new IntentModuleModel(x.Package))
                     .Distinct()
                     .Where(x => !string.IsNullOrWhiteSpace(x.NuGetPackageId) && !string.IsNullOrWhiteSpace(x.NuGetPackageVersion)))
            {
                AddNugetDependency(module.NuGetPackageId, module.NuGetPackageVersion);
            }
        }
예제 #28
0
 public FrameworkProjectSyncProcessor(
     string projectPath,
     ISoftwareFactoryEventDispatcher sfEventDispatcher,
     IXmlFileCache xmlFileCache,
     IChanges changeManager,
     IOutputTarget project)
 {
     _projectPath       = projectPath;
     _sfEventDispatcher = sfEventDispatcher;
     _xmlFileCache      = xmlFileCache;
     _changeManager     = changeManager;
     _project           = project;
     _syncProjectFile   = UpdateFileOnHdd;
 }
예제 #29
0
        public void UpdateValues(IOutputTarget outputTarget)
        {
            if (_lastNoCollisionSmoothingEnabled)
            {
                _lastCollisionSmoothingT = Mathf.Pow(2, 10 * ((Time.time - _lastNoCollisionSmoothingStartTime) / _lastNoCollisionSmoothingDuration - 1));
                if (_lastCollisionSmoothingT > 1.0f)
                {
                    _lastNoCollisionSmoothingEnabled = false;
                    _lastCollisionSmoothingT         = 0;
                }
            }

            UpdateL0(); UpdateL1(); UpdateL2();
            UpdateR0(); UpdateR1(); UpdateR2();
            UpdateV0();
            UpdateA0(); UpdateA1(); UpdateA2();

            _stringBuilder.Length = 0;
            var l0 = AppendIfChanged(_stringBuilder, "L0", XCmd[0], ref LastXCmd[0]);
            var l1 = AppendIfChanged(_stringBuilder, "L1", XCmd[1], ref LastXCmd[1]);
            var l2 = AppendIfChanged(_stringBuilder, "L2", XCmd[2], ref LastXCmd[2]);
            var r0 = AppendIfChanged(_stringBuilder, "R0", RCmd[0], ref LastRCmd[0]);
            var r1 = AppendIfChanged(_stringBuilder, "R1", RCmd[1], ref LastRCmd[1]);
            var r2 = AppendIfChanged(_stringBuilder, "R2", RCmd[2], ref LastRCmd[2]);
            var v0 = AppendIfChanged(_stringBuilder, "V0", ECmd[0], ref LastECmd[0]);
            var a0 = AppendIfChanged(_stringBuilder, "A0", ECmd[1], ref LastECmd[1]);
            var a1 = AppendIfChanged(_stringBuilder, "A1", ECmd[2], ref LastECmd[2]);
            var a2 = AppendIfChanged(_stringBuilder, "A2", ECmd[3], ref LastECmd[3]);

            var data = $"{_stringBuilder}\n";

            if (!string.IsNullOrEmpty(data.Trim()))
            {
                outputTarget?.Write(data);
            }

            _stringBuilder.Length = 0;
            _stringBuilder.Append("    Target    Cmd    Output\n");
            _stringBuilder.Append("L0\t").AppendFormat("{0,5:0.00}", XTarget[0]).Append(",\t").AppendFormat("{0,5:0.00}", XCmd[0]).Append(",\t").AppendLine(l0);
            _stringBuilder.Append("L1\t").AppendFormat("{0,5:0.00}", XTarget[1]).Append(",\t").AppendFormat("{0,5:0.00}", XCmd[1]).Append(",\t").AppendLine(l1);
            _stringBuilder.Append("L2\t").AppendFormat("{0,5:0.00}", XTarget[2]).Append(",\t").AppendFormat("{0,5:0.00}", XCmd[2]).Append(",\t").AppendLine(l2);
            _stringBuilder.Append("R0\t").AppendFormat("{0,5:0.00}", RTarget[0]).Append(",\t").AppendFormat("{0,5:0.00}", RCmd[0]).Append(",\t").AppendLine(r0);
            _stringBuilder.Append("R1\t").AppendFormat("{0,5:0.00}", RTarget[1]).Append(",\t").AppendFormat("{0,5:0.00}", RCmd[1]).Append(",\t").AppendLine(r1);
            _stringBuilder.Append("R2\t").AppendFormat("{0,5:0.00}", RTarget[2]).Append(",\t").AppendFormat("{0,5:0.00}", RCmd[2]).Append(",\t").AppendLine(r2);
            _stringBuilder.Append("V0\t").AppendFormat("{0,5:0.00}", ETarget[0]).Append(",\t").AppendFormat("{0,5:0.00}", ECmd[0]).Append(",\t").AppendLine(v0);
            _stringBuilder.Append("A0\t").AppendFormat("{0,5:0.00}", ETarget[1]).Append(",\t").AppendFormat("{0,5:0.00}", ECmd[1]).Append(",\t").AppendLine(a0);
            _stringBuilder.Append("A1\t").AppendFormat("{0,5:0.00}", ETarget[2]).Append(",\t").AppendFormat("{0,5:0.00}", ECmd[2]).Append(",\t").AppendLine(a1);
            _stringBuilder.Append("A2\t").AppendFormat("{0,5:0.00}", ETarget[3]).Append(",\t").AppendFormat("{0,5:0.00}", ECmd[3]).Append(",\t").Append(a2);
            DeviceReport = _stringBuilder.ToString();
        }
 public CSharpProject(IOutputTarget outputTarget)
 {
     _outputTarget = outputTarget;
     if (_outputTarget.Metadata.TryGetValue("Language Version", out var languageVersion))
     {
         LanguageVersion = languageVersion as string;
     }
     if (_outputTarget.Metadata.TryGetValue("Nullable Enabled", out var nullableEnabled))
     {
         NullableEnabled = nullableEnabled as bool? ?? false;
     }
     if (_outputTarget.Metadata.TryGetValue("Target Frameworks", out var targetFrameworks))
     {
         TargetFrameworks = targetFrameworks as IEnumerable <string>;
     }
 }
        public static void SyncFrameworkReferences(this IOutputTarget project, XDocument doc)
        {
            var frameworkDependencies = project.FrameworkDependencies().ToArray();

            if (frameworkDependencies.Length == 0)
            {
                return;
            }

            var itemGroupElement = doc.XPathSelectElement("Project/ItemGroup[FrameworkReference]");

            if (itemGroupElement == null)
            {
                itemGroupElement = new XElement("ItemGroup");
                itemGroupElement.Add(Environment.NewLine);
                itemGroupElement.Add("  ");

                var projectElement = doc.XPathSelectElement("Project");

                projectElement.Add("  ");
                projectElement.Add(itemGroupElement);
                projectElement.Add(Environment.NewLine);
                projectElement.Add("  ");
            }

            foreach (var dependency in frameworkDependencies)
            {
                var existingItem = doc.XPathSelectElement($"/Project/ItemGroup/FrameworkReference[@Include='{dependency}']");
                if (existingItem != null)
                {
                    continue;
                }

                /*
                 * <FrameworkReference Include="Microsoft.AspNetCore.App" />
                 */

                var item = new XElement(XName.Get("FrameworkReference"));
                item.Add(new XAttribute("Include", dependency));

                itemGroupElement.Add("  ");
                itemGroupElement.Add(item);
                itemGroupElement.Add(Environment.NewLine);
                itemGroupElement.Add("  ");
            }
        }
예제 #32
0
 public ComposedLogger(IOutputTarget outputTarget)
 {
     _outputTarget = outputTarget;
 }
예제 #33
0
 /// <summary>
 /// Indicates whether the current object is equal to another object of the same type.
 /// </summary>
 /// <returns>
 /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
 /// </returns>
 /// <param name="other">An object to compare with this object.</param>
 public bool Equals(IOutputTarget other)
 {
     return (other != null) && (other is ConsoleOutputTarget);
 }
예제 #34
0
 /// <summary>
 /// Tries to add the target to the manager,
 /// so it gets notifications.
 /// </summary>
 public bool RegisterTarget(IOutputTarget target)
 {
     return _targets.Add(target);
 }
예제 #35
0
 /// <summary>
 /// Tries to remove the target from the manager,
 /// so it will no longer receive notifications.
 /// </summary>
 public bool UnregisterTarget(IOutputTarget target)
 {
     return _targets.Remove(target);
 }