From d736110ae0cf2d747bf38254c50b0e19f38f170f Mon Sep 17 00:00:00 2001 From: Andreia Gaita Date: Tue, 15 Sep 2015 12:43:06 +0200 Subject: [PATCH] Consolidate extension classes into one place --- .../Extensions/RepositoryModelExtensions.cs | 23 ---------- src/GitHub.App/GitHub.App.csproj | 1 - src/GitHub.Exports/Extensions/GitHelpers.cs | 46 +++++++++++++++++++ .../PropertyNotifierExtensions.cs | 0 .../SimpleRepositoryModelExtensions.cs | 18 ++++++-- .../{Services => Extensions}/VSExtensions.cs | 0 src/GitHub.Exports/GitHub.Exports.csproj | 7 +-- src/GitHub.Exports/Services/Services.cs | 38 +-------------- src/GitHub.Exports/Services/VSServices.cs | 2 +- src/GitHub.Extensions/GitRepoExtensions.cs | 4 -- .../Base/TeamExplorerItemBase.cs | 1 + 11 files changed, 68 insertions(+), 72 deletions(-) delete mode 100644 src/GitHub.App/Extensions/RepositoryModelExtensions.cs create mode 100644 src/GitHub.Exports/Extensions/GitHelpers.cs rename src/GitHub.Exports/{Helpers => Extensions}/PropertyNotifierExtensions.cs (100%) rename src/GitHub.Exports/{Helpers => Extensions}/SimpleRepositoryModelExtensions.cs (58%) rename src/GitHub.Exports/{Services => Extensions}/VSExtensions.cs (100%) diff --git a/src/GitHub.App/Extensions/RepositoryModelExtensions.cs b/src/GitHub.App/Extensions/RepositoryModelExtensions.cs deleted file mode 100644 index 50d3a428e2..0000000000 --- a/src/GitHub.App/Extensions/RepositoryModelExtensions.cs +++ /dev/null @@ -1,23 +0,0 @@ -using GitHub.Models; -using GitHub.VisualStudio; -using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility; -using NullGuard; - -namespace GitHub.Extensions -{ - public static class RepositoryModelExtensions - { - /// - /// Create a SimpleRepositoryModel from a VS git repo object - /// - [return:AllowNull] - public static ISimpleRepositoryModel ToModel([AllowNull] this IGitRepositoryInfo repo) - { - if (repo == null) - return null; - var uri = repo.GetUriFromRepository(); - var name = uri?.NameWithOwner; - return name != null ? new SimpleRepositoryModel(name, uri, repo.RepositoryPath) : null; - } - } -} diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index ccc90ff1e6..6cdb54ae08 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -126,7 +126,6 @@ - diff --git a/src/GitHub.Exports/Extensions/GitHelpers.cs b/src/GitHub.Exports/Extensions/GitHelpers.cs new file mode 100644 index 0000000000..8925fbb75a --- /dev/null +++ b/src/GitHub.Exports/Extensions/GitHelpers.cs @@ -0,0 +1,46 @@ +using GitHub.Primitives; +using LibGit2Sharp; +using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility; +using System; +using System.Linq; + +namespace GitHub.Extensions +{ + public static class GitHelpers + { + public static Repository GetRepoFromIGit(this IGitRepositoryInfo repoInfo) + { + var repoPath = Repository.Discover(repoInfo.RepositoryPath); + if (repoPath == null) + return null; + return new Repository(repoPath); + } + + public static UriString GetUriFromRepository(this IGitRepositoryInfo repoInfo) + { + return repoInfo.GetRepoFromIGit()?.GetUri(); + } + + public static UriString GetUri(this Repository repo) + { + return UriString.ToUriString(GetUriFromRepository(repo)?.ToRepositoryUrl()); + } + + static UriString GetUriFromRepository(Repository repo) + { + return repo + ?.Network + .Remotes + .FirstOrDefault(x => x.Name.Equals("origin", StringComparison.Ordinal)) + ?.Url; + } + + public static Repository GetRepoFromPath(string path) + { + var repoPath = Repository.Discover(path); + if (repoPath == null) + return null; + return new Repository(repoPath); + } + } +} diff --git a/src/GitHub.Exports/Helpers/PropertyNotifierExtensions.cs b/src/GitHub.Exports/Extensions/PropertyNotifierExtensions.cs similarity index 100% rename from src/GitHub.Exports/Helpers/PropertyNotifierExtensions.cs rename to src/GitHub.Exports/Extensions/PropertyNotifierExtensions.cs diff --git a/src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs b/src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs similarity index 58% rename from src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs rename to src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs index d33b2e8ad4..08ce5bcf7d 100644 --- a/src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs +++ b/src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs @@ -2,18 +2,30 @@ using System; using System.Linq; using System.IO; +using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility; namespace GitHub.Extensions { - using VisualStudio; - public static class SimpleRepositoryModelExtensions { + /// + /// Create a SimpleRepositoryModel from a VS git repo object + /// + public static ISimpleRepositoryModel ToModel(this IGitRepositoryInfo repo) + { + if (repo == null) + return null; + var uri = repo.GetUriFromRepository(); + var name = uri?.NameWithOwner; + return name != null ? new SimpleRepositoryModel(name, uri, repo.RepositoryPath) : null; + } + public static bool HasCommits(this ISimpleRepositoryModel repository) { - var repo = Services.GetRepoFromPath(repository.LocalPath); + var repo = GitHelpers.GetRepoFromPath(repository.LocalPath); return repo?.Commits.Any() ?? false; } + public static bool MightContainSolution(this ISimpleRepositoryModel repository) { var dir = new DirectoryInfo(repository.LocalPath); diff --git a/src/GitHub.Exports/Services/VSExtensions.cs b/src/GitHub.Exports/Extensions/VSExtensions.cs similarity index 100% rename from src/GitHub.Exports/Services/VSExtensions.cs rename to src/GitHub.Exports/Extensions/VSExtensions.cs diff --git a/src/GitHub.Exports/GitHub.Exports.csproj b/src/GitHub.Exports/GitHub.Exports.csproj index 63a5cacc55..ac9059889f 100644 --- a/src/GitHub.Exports/GitHub.Exports.csproj +++ b/src/GitHub.Exports/GitHub.Exports.csproj @@ -99,9 +99,10 @@ Key.snk + - - + + @@ -122,7 +123,7 @@ - + diff --git a/src/GitHub.Exports/Services/Services.cs b/src/GitHub.Exports/Services/Services.cs index 2cdfc70938..0034f5f597 100644 --- a/src/GitHub.Exports/Services/Services.cs +++ b/src/GitHub.Exports/Services/Services.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using EnvDTE; using EnvDTE80; using GitHub.Services; @@ -8,9 +7,9 @@ using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility; using GitHub.Info; using GitHub.Primitives; +using GitHub.Extensions; namespace GitHub.VisualStudio { @@ -142,40 +141,5 @@ public static Repository GetRepoFromSolution(this IVsSolution solution) return null; return new Repository(repoPath); } - - public static UriString GetUri(this Repository repo) - { - return UriString.ToUriString(GetUriFromRepository(repo)?.ToRepositoryUrl()); - } - - static UriString GetUriFromRepository(Repository repo) - { - return repo - ?.Network - .Remotes - .FirstOrDefault(x => x.Name.Equals("origin", StringComparison.Ordinal)) - ?.Url; - } - - public static Repository GetRepoFromIGit(this IGitRepositoryInfo repoInfo) - { - var repoPath = Repository.Discover(repoInfo.RepositoryPath); - if (repoPath == null) - return null; - return new Repository(repoPath); - } - - public static Repository GetRepoFromPath(string path) - { - var repoPath = Repository.Discover(path); - if (repoPath == null) - return null; - return new Repository(repoPath); - } - - public static UriString GetUriFromRepository(this IGitRepositoryInfo repoInfo) - { - return repoInfo.GetRepoFromIGit()?.GetUri(); - } } } diff --git a/src/GitHub.Exports/Services/VSServices.cs b/src/GitHub.Exports/Services/VSServices.cs index e851a48d3d..c90fa6c41e 100644 --- a/src/GitHub.Exports/Services/VSServices.cs +++ b/src/GitHub.Exports/Services/VSServices.cs @@ -120,7 +120,7 @@ static IEnumerable PokeTheRegistryForRepositoryList() var path = subkey?.GetValue("Path") as string; if (path != null) { - var uri = VisualStudio.Services.GetRepoFromPath(path)?.GetUri(); + var uri = GitHelpers.GetRepoFromPath(path)?.GetUri(); var name = uri?.NameWithOwner; if (name != null) return new SimpleRepositoryModel(name, uri, path); diff --git a/src/GitHub.Extensions/GitRepoExtensions.cs b/src/GitHub.Extensions/GitRepoExtensions.cs index 252eaa9d2a..fb6508645e 100644 --- a/src/GitHub.Extensions/GitRepoExtensions.cs +++ b/src/GitHub.Extensions/GitRepoExtensions.cs @@ -1,10 +1,6 @@ using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility; using NullGuard; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace GitHub.Extensions { diff --git a/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs b/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs index 7ef7fc1887..27893aaf6a 100644 --- a/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs +++ b/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs @@ -7,6 +7,7 @@ using GitHub.VisualStudio.Helpers; using NullGuard; using Octokit; +using GitHub.Extensions; namespace GitHub.VisualStudio.Base {