/*
 * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

def buildDocsDir = "$buildDir/docs"

task copyDocs(type: Copy, dependsOn: rootProject.getTasksByName("dokka", true)) {
    from (rootProject.getTasksByName("dokka", true).collect { "$it.project.buildDir/dokka" }) {
        include "**/*.md"
        include "**/package-list"
    }
    from "docs"
    into buildDocsDir
}

task copyExampleFrontendJs(type: Copy, dependsOn: ':example-frontend-js:bundle') {
    def srcBuildDir = project(':example-frontend-js').buildDir
    from "$srcBuildDir/dist"
    into "$buildDocsDir/example-frontend-js"
}

task site(type: Exec, description: 'Generate github pages', dependsOn: [copyDocs, copyExampleFrontendJs]) {
    inputs.files(fileTree(buildDocsDir))
    outputs.dir("$buildDir/dist")
    workingDir file(buildDocsDir)
    commandLine 'bundle', 'exec', 'jekyll', 'build'
}

task clean(type: Delete) {
    delete buildDir
}

