private async Task <IBuildServerAdapter> GetBuildServerAdapterAsync()
        {
            await TaskScheduler.Default;

            var buildServerSettings = _module().EffectiveSettings.BuildServer;

            if (!buildServerSettings.EnableIntegration.Value)
            {
                return(null);
            }

            var buildServerType = buildServerSettings.Type.Value;

            if (string.IsNullOrEmpty(buildServerType))
            {
                return(null);
            }

            var exports = ManagedExtensibility.GetExports <IBuildServerAdapter, IBuildServerTypeMetadata>();
            var export  = exports.SingleOrDefault(x => x.Metadata.BuildServerType == buildServerType);

            if (export is not null)
            {
                try
                {
                    var canBeLoaded = export.Metadata.CanBeLoaded;
                    if (!string.IsNullOrEmpty(canBeLoaded))
                    {
                        Debug.Write(export.Metadata.BuildServerType + " adapter could not be loaded: " + canBeLoaded);
                        return(null);
                    }

                    var buildServerAdapter = export.Value;

                    buildServerAdapter.Initialize(this, buildServerSettings.TypeSettings,
                                                  () =>
                    {
                        // To run the `StartSettingsDialog()` in the UI Thread
                        _revisionGrid.Invoke((Action)(() =>
                        {
                            _revisionGrid.UICommands.StartSettingsDialog(typeof(BuildServerIntegrationSettingsPage));
                        }));
                    }, objectId => _revisionGrid.GetRevision(objectId) is not null);
                    return(buildServerAdapter);
                }
                catch (InvalidOperationException ex)
                {
                    Debug.Write(ex);

                    // Invalid arguments, do not return a build server adapter
                }
            }

            return(null);
        }
Example #2
0
        private bool TryGetSelectedRevision(out GitRevision selectedRevision)
        {
            var blameCommit = GetBlameCommit();

            if (blameCommit is null)
            {
                selectedRevision = null;
                return(false);
            }

            selectedRevision = _revGrid?.GetRevision(blameCommit.ObjectId);
            return(selectedRevision is not null);
        }
        private string DescribeRevision([CanBeNull] ObjectId objectId, int maxLength = 0)
        {
            if (objectId == null)
            {
                // No parent at all, present as working directory
                return(ResourceManager.Strings.Workspace);
            }

            var revision = _revisionGrid.GetRevision(objectId);

            if (revision == null)
            {
                return(objectId.ToShortString());
            }

            return(_revisionGrid.DescribeRevision(revision, maxLength));
        }
Example #4
0
        private async Task <IBuildServerAdapter> GetBuildServerAdapterAsync()
        {
            await TaskScheduler.Default;

            var buildServerSettings = _module().EffectiveSettings.BuildServer;

            if (!buildServerSettings.EnableIntegration.ValueOrDefault)
            {
                return(null);
            }

            var buildServerType = buildServerSettings.Type.ValueOrDefault;

            if (string.IsNullOrEmpty(buildServerType))
            {
                return(null);
            }

            var exports = ManagedExtensibility.GetExports <IBuildServerAdapter, IBuildServerTypeMetadata>();
            var export  = exports.SingleOrDefault(x => x.Metadata.BuildServerType == buildServerType);

            if (export != null)
            {
                try
                {
                    var canBeLoaded = export.Metadata.CanBeLoaded;
                    if (!canBeLoaded.IsNullOrEmpty())
                    {
                        Debug.Write(export.Metadata.BuildServerType + " adapter could not be loaded: " + canBeLoaded);
                        return(null);
                    }

                    var buildServerAdapter = export.Value;

                    buildServerAdapter.Initialize(this, buildServerSettings.TypeSettings, objectId => _revisionGrid.GetRevision(objectId) != null);
                    return(buildServerAdapter);
                }
                catch (InvalidOperationException ex)
                {
                    Debug.Write(ex);

                    // Invalid arguments, do not return a build server adapter
                }
            }

            return(null);
        }