@@ -19,15 +19,17 @@ object CodacyCoveragePlugin extends AutoPlugin {
19
19
val codacyProjectToken = settingKey[Option [String ]](" Your project token." )
20
20
val codacyProjectTokenFile = settingKey[Option [String ]](" Path for file containing your project token." )
21
21
val coberturaFile = settingKey[File ](" Path for project Cobertura file." )
22
+ val codacyApiBaseUrl = settingKey[Option [String ]](" The base URL for the Codacy API." )
22
23
23
24
lazy val baseSettings : Seq [Def .Setting [_]] = Seq (
24
25
codacyCoverage := {
25
26
codacyCoverageCommand(state.value, baseDirectory.value, coberturaFile.value,
26
27
crossTarget.value / " coverage-report" / " codacy-coverage.json" ,
27
- codacyProjectToken.value, codacyProjectTokenFile.value)
28
+ codacyProjectToken.value, codacyProjectTokenFile.value, codacyApiBaseUrl.value )
28
29
},
29
30
codacyProjectToken := None ,
30
31
codacyProjectTokenFile := None ,
32
+ codacyApiBaseUrl := None ,
31
33
coberturaFile := crossTarget.value / (" coverage-report" + File .separator + " cobertura.xml" )
32
34
)
33
35
}
@@ -40,16 +42,17 @@ object CodacyCoveragePlugin extends AutoPlugin {
40
42
41
43
override val projectSettings = baseSettings
42
44
45
+ private val publicApiBaseUrl = " https://www.codacy.com"
46
+
43
47
private def codacyCoverageCommand (state : State , rootProjectDir : File , coberturaFile : File , codacyCoverageFile : File ,
44
- codacyToken : Option [String ], codacyTokenFile : Option [String ]): Unit = {
48
+ codacyToken : Option [String ], codacyTokenFile : Option [String ], codacyApiBaseUrl : Option [ String ] ): Unit = {
45
49
implicit val logger : Logger = state.log
46
50
47
51
getProjectToken(codacyToken, codacyTokenFile).fold[State ] {
48
52
logger.error(" Project token not defined." )
49
53
state.exit(ok = false )
50
54
} {
51
55
projectToken =>
52
-
53
56
Try {
54
57
new GitClient (rootProjectDir).latestCommitUuid()
55
58
}.toOption.fold[State ] {
@@ -71,7 +74,10 @@ object CodacyCoveragePlugin extends AutoPlugin {
71
74
72
75
logger.info(s " Uploading coverage data... " )
73
76
74
- new CodacyAPIClient ().postCoverageFile(projectToken, commitUuid, codacyCoverageFile).fold[State ](
77
+ new CodacyAPIClient ().postCoverageFile(projectToken,
78
+ commitUuid,
79
+ codacyCoverageFile,
80
+ getApiBaseUrl(codacyApiBaseUrl)).fold[State ](
75
81
error => {
76
82
logger.error(s " Failed to upload data. Reason: $error" )
77
83
state.exit(ok = false )
@@ -85,6 +91,14 @@ object CodacyCoveragePlugin extends AutoPlugin {
85
91
}
86
92
}
87
93
94
+ private def getApiBaseUrl (codacyApiBaseUrl : Option [String ]): String = {
95
+ // Check for an environment variable to override the API URL.
96
+ // 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
+ .getOrElse(publicApiBaseUrl)
100
+ }
101
+
88
102
private def getProjectToken (codacyProjectToken : Option [String ], codacyProjectTokenFile : Option [String ]) = {
89
103
sys.env.get(" CODACY_PROJECT_TOKEN" )
90
104
.orElse(codacyProjectToken)
0 commit comments