diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt index 51af9f4a..05105dce 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt @@ -18,15 +18,22 @@ public class Kobalt { var context: KobaltContext? = null /** - * @return the repos from the build files and from the contributors. + * @return the repos calculated from the following places: + * - Either repos specified in settings.xml or from Constants.DEFAULT_REPOS + * - Repos from the build file */ val repos : Set get() { - val result = HashSet(reposFromBuildFiles) + val settingsRepos = Kobalt.context?.settings?.defaultRepos ?: emptyList() + val result = ArrayList( + (if (settingsRepos.isEmpty()) Constants.DEFAULT_REPOS + else settingsRepos) + .map { HostConfig(it) }) + Kobalt.context?.pluginInfo?.repoContributors?.forEach { result.addAll(it.reposFor(null)) } - return result + return result.toHashSet() } val reposFromBuildFiles = HashSet(Constants.DEFAULT_REPOS.map { HostConfig(it) }) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt index ce06b01b..37391a4e 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt @@ -18,6 +18,14 @@ import javax.xml.bind.annotation.XmlRootElement class KobaltSettingsXml { @XmlElement @JvmField var localRepo: String = homeDir(KFiles.KOBALT_DOT_DIR, "repository") + + @XmlElement(name = "default-repos") @JvmField + var defaultRepos: DefaultReposXml? = null +} + +class DefaultReposXml { + @XmlElement @JvmField + var repo: List = arrayListOf() } /** @@ -28,7 +36,9 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { /** * Location of the local repo. */ - var localRepo = xmlFile.localRepo + var localRepo = xmlFile.localRepo // var for testing + + val defaultRepos = xmlFile.defaultRepos?.repo companion object { val SETTINGS_FILE_PATH = homeDir(KFiles.KOBALT_DIR, "settings.xml") @@ -40,7 +50,8 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { val jaxbContext = JAXBContext.newInstance(KobaltSettingsXml::class.java) val xmlFile: KobaltSettingsXml = jaxbContext.createUnmarshaller().unmarshal(it) as KobaltSettingsXml - return KobaltSettings(xmlFile) + val result = KobaltSettings(xmlFile) + return result } } else { log(2, "Couldn't find ${KobaltSettings.SETTINGS_FILE_PATH}, using default settings")