@@ -25,16 +25,18 @@ object CodacyCoveragePlugin extends AutoPlugin {
25
25
val codacyProjectToken = settingKey[Option [String ]](" Your project token." )
26
26
val coberturaFile = settingKey[File ](" Path for project Cobertura file." )
27
27
val codacyApiBaseUrl = settingKey[Option [String ]](" The base URL for the Codacy API." )
28
+ val codacyCommit = settingKey[Option [String ]](" The commit uuid of the coverage." )
28
29
29
30
lazy val baseSettings : Seq [Def .Setting [_]] = Seq (
30
31
codacyCoverage := {
31
32
codacyCoverageCommand(state.value, baseDirectory.value, coberturaFile.value,
32
33
crossTarget.value / " coverage-report" / " codacy-coverage.json" ,
33
- codacyProjectToken.value, codacyApiBaseUrl.value)
34
+ codacyProjectToken.value, codacyApiBaseUrl.value, codacyCommit.value )
34
35
},
35
36
aggregate in codacyCoverage := false ,
36
37
codacyProjectToken := None ,
37
38
codacyApiBaseUrl := None ,
39
+ codacyCommit := None ,
38
40
coberturaFile := crossTarget.value / (" coverage-report" + File .separator + " cobertura.xml" )
39
41
)
40
42
}
@@ -48,20 +50,20 @@ object CodacyCoveragePlugin extends AutoPlugin {
48
50
private val publicApiBaseUrl = " https://api.codacy.com"
49
51
50
52
private def codacyCoverageCommand (state : State , rootProjectDir : File , coberturaFile : File , codacyCoverageFile : File ,
51
- codacyToken : Option [String ], codacyApiBaseUrl : Option [String ]): Unit = {
53
+ codacyToken : Option [String ], codacyApiBaseUrl : Option [String ],
54
+ sbtCodacyCommit : Option [String ]): Unit = {
52
55
implicit val logger : Logger = state.log
53
56
54
- val commitUUID =
55
- sys.env.get(" CI_COMMIT" ) orElse
56
- sys.env.get(" TRAVIS_PULL_REQUEST_SHA" ) orElse
57
- sys.env.get(" TRAVIS_COMMIT" ) orElse
58
- sys.env.get(" DRONE_COMMIT" ) orElse
59
- sys.env.get(" CIRCLE_SHA1" ) orElse
60
- sys.env.get(" CI_COMMIT_ID" ) orElse
61
- sys.env.get(" WERCKER_GIT_COMMIT" )
62
- .filter(_.trim.nonEmpty)
63
-
64
- FileHelper .withTokenAndCommit(codacyToken, commitUUID) {
57
+ val commitUUIDOpt = sbtCodacyCommit orElse
58
+ getNonEmptyEnv(" CI_COMMIT" ) orElse
59
+ getNonEmptyEnv(" TRAVIS_PULL_REQUEST_SHA" ) orElse
60
+ getNonEmptyEnv(" TRAVIS_COMMIT" ) orElse
61
+ getNonEmptyEnv(" DRONE_COMMIT" ) orElse
62
+ getNonEmptyEnv(" CIRCLE_SHA1" ) orElse
63
+ getNonEmptyEnv(" CI_COMMIT_ID" ) orElse
64
+ getNonEmptyEnv(" WERCKER_GIT_COMMIT" )
65
+
66
+ FileHelper .withTokenAndCommit(codacyToken, commitUUIDOpt) {
65
67
case (projectToken, commitUUID) =>
66
68
67
69
val reader = new CoberturaParser (Language .Scala , rootProjectDir, coberturaFile)
@@ -91,12 +93,16 @@ object CodacyCoveragePlugin extends AutoPlugin {
91
93
}
92
94
}
93
95
96
+ private def getNonEmptyEnv (key : String ): Option [String ] = {
97
+ sys.env.get(key).filter(_.trim.nonEmpty)
98
+ }
99
+
94
100
private def apiBaseUrl (codacyApiBaseUrl : Option [String ]): Option [String ] = {
95
101
// Check for an environment variable to override the API URL.
96
102
// If it doesn't exist, try the build options or default to the public API.
97
- sys.env.get( " CODACY_API_BASE_URL " )
98
- .orElse(codacyApiBaseUrl)
99
- .orElse( Some (publicApiBaseUrl) )
103
+ codacyApiBaseUrl orElse
104
+ getNonEmptyEnv( " CODACY_API_BASE_URL " ) orElse
105
+ Some (publicApiBaseUrl)
100
106
}
101
107
102
108
}
0 commit comments