public static IChangelogLinkBuilder CreateFor(Repository repository) { var origin = repository.Network.Remotes.FirstOrDefault(remote => remote.Name == "origin") ?? repository.Network.Remotes.FirstOrDefault(); if (origin == null) { return(new PlainLinkBuilder()); } if (GithubLinkBuilder.IsPushUrl(origin.PushUrl)) { return(new GithubLinkBuilder(origin.PushUrl)); } else if (AzureLinkBuilder.IsPushUrl(origin.PushUrl)) { return(new AzureLinkBuilder(origin.PushUrl)); } else if (GitlabLinkBuilder.IsPushUrl(origin.PushUrl)) { return(new GitlabLinkBuilder(origin.PushUrl)); } else if (BitbucketLinkBuilder.IsPushUrl(origin.PushUrl)) { return(new BitbucketLinkBuilder(origin.PushUrl)); } return(new PlainLinkBuilder()); }