buildscript {
    repositories {
        mavenCentral()
        maven {
            url('https://dl.bintray.com/jetbrains/plugin-repository-rest-client/')
        }
    }
    dependencies {
        classpath 'org.jetbrains.intellij:plugin-repository-rest-client:0.1.15'
    }
}

task uploadPlugins() << {
    def env = System.getenv()
    def username = env['PLUGIN_REPOSITORY_USER']
    def password = env['PLUGIN_REPOSITORY_PASSWORD']
    def channel = env['PLUGIN_REPOSITORY_CHANNEL']
    if (channel == "_default_") {
        channel = null
    }
    def path = env['PLUGIN_UPLOAD_PATH']
    if (path == null) {
        path = "."
    }
    def repo = new org.jetbrains.intellij.pluginRepository.PluginRepositoryInstance(
            "https://plugins.jetbrains.com/",
            username, password)

    File[] files = new File(path).listFiles({ File f, String filename ->
        filename.startsWith("kotlin-plugin") && filename.endsWith(".zip")
                                            } as FilenameFilter)

    files = files.sort { f1, f2 ->
        f1.name.contains("1.1.2-5") ? 1 : (f2.name.contains("1.1.2-5") ? -1 : (f1.name <=> f2.name))
    }

    files.each { file ->
        println("Uploading ${file.name}")
        repo.uploadPlugin(6954, file, channel)
    }
}

defaultTasks 'uploadPlugins'
