Skip to content

Commit c34dda6

Browse files
authored
Merge pull request #251 from armanbilge/issue/249
Smarter SCM info detection
2 parents 366caab + 66ad926 commit c34dda6

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

github/src/main/scala/org/typelevel/sbt/TypelevelGitHubPlugin.scala

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ object TypelevelGitHubPlugin extends AutoPlugin {
4343
tlGitHubRepo := gitHubUserRepo.value.map(_._2),
4444
scmInfo := gitHubUserRepo.value.map {
4545
case (user, repo) =>
46+
sLog.value.info(s"set scmInfo to https://github.com/$user/$repo")
4647
gitHubScmInfo(user, repo)
4748
},
4849
homepage := homepage.value.orElse(scmInfo.value.map(_.browseUrl))
@@ -55,22 +56,26 @@ object TypelevelGitHubPlugin extends AutoPlugin {
5556
s"scm:git:[email protected]:$user/$repo.git"
5657
)
5758

58-
private[sbt] def gitHubUserRepo = Def.setting {
59+
private[sbt] lazy val gitHubUserRepo = Def.setting {
5960
import scala.sys.process._
6061

61-
val identifier = """([^\/]+?)"""
62-
val GitHubHttps = s"https://github.com/$identifier/$identifier(?:\\.git)?".r
63-
val GitHubGit = s"git://github.com:$identifier/$identifier(?:\\.git)?".r
64-
val GitHubSsh = s"[email protected]:$identifier/$identifier(?:\\.git)?".r
65-
Try {
66-
val remote = List("git", "ls-remote", "--get-url", "origin").!!.trim()
67-
remote match {
68-
case GitHubHttps(user, repo) => Some((user, repo))
69-
case GitHubGit(user, repo) => Some((user, repo))
70-
case GitHubSsh(user, repo) => Some((user, repo))
71-
case _ => None
72-
}
73-
}.toOption.flatten
62+
def fromRemote(remote: String) = {
63+
val identifier = """([^\/]+?)"""
64+
val GitHubHttps = s"https://github.com/$identifier/$identifier(?:\\.git)?".r
65+
val GitHubGit = s"git://github.com:$identifier/$identifier(?:\\.git)?".r
66+
val GitHubSsh = s"[email protected]:$identifier/$identifier(?:\\.git)?".r
67+
Try {
68+
List("git", "ls-remote", "--get-url", remote).!!.trim() match {
69+
case GitHubHttps(user, repo) => Some((user, repo))
70+
case GitHubGit(user, repo) => Some((user, repo))
71+
case GitHubSsh(user, repo) => Some((user, repo))
72+
case _ => None
73+
}
74+
}.toOption.flatten
75+
}
76+
77+
// upstream if this is a fork, otherwise fallback to origin
78+
fromRemote("upstream").orElse(fromRemote("origin"))
7479
}
7580

7681
}

0 commit comments

Comments
 (0)