# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

baseURL = '//ci.apache.org/projects/flink/flink-docs-release-1.13'
languageCode = "en-us"
title = "Apache Flink"
enableGitInfo = false
theme = "book"
pygmentsUseClasses = true

[params]
  # Flag whether this is a stable version or not.
  # Used for the quickstart page.
  IsStable = true
  
  # Flag to indicate whether an outdated warning should be shown.
  ShowOutDatedWarning = false

  # This are the version referenced in the docs. Please only use these variables
  # to reference a specific Flink version, because this is the only place where
  # we change the version for the complete docs when forking of a release branch
  # etc.
  # The full version string as referenced in Maven (e.g. 1.2.1)
  Version = "1.13.1"

  # For stable releases, leave the bugfix version out (e.g. 1.2). For snapshot
  # release this should be the same as the regular version
  VersionTitle = "1.13"

  # The branch for this version of Apache Flink
  Branch = "release-1.13"

  # The github repository for Apache Flink
  Repo = "//github.com/apache/flink"

  GithubRepo = "https://github.com/apache/flink.git"

  # Flink training exercises 
  TrainingExercises = "//github.com/apache/flink-training"

  # This suffix is appended to the Scala-dependent Maven artifact names
  ScalaVersion = "_2.11"

  ProjectHomepage = "//flink.apache.org"

  JavaDocs = "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/java/"

  ScalaDocs = "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/scala/index.html#org.apache.flink.api.scala.package"

  PyDocs = "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/python/"

  # External links at the bottom
  # of the menu
  MenuLinks = [
    ["Project Homepage", "//flink.apache.org"],
    ["JavaDocs", "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/java/"],
    ["ScalaDocs", "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/scala/index.html#org.apache.flink.api.scala.package/"],
    ["PyDocs", "//ci.apache.org/projects/flink/flink-docs-release-1.13/api/python/"]
  ]

  PreviousDocs = [
    ["1.13", "http://ci.apache.org/projects/flink/flink-docs-release-1.13"],
    ["1.12", "http://ci.apache.org/projects/flink/flink-docs-release-1.12"],
    ["1.11", "http://ci.apache.org/projects/flink/flink-docs-release-1.11"],
    ["1.10", "http://ci.apache.org/projects/flink/flink-docs-release-1.10"],
    ["1.9", "http://ci.apache.org/projects/flink/flink-docs-release-1.9"],
    ["1.8", "http://ci.apache.org/projects/flink/flink-docs-release-1.8"],
    ["1.7", "http://ci.apache.org/projects/flink/flink-docs-release-1.7"],
    ["1.6", "http://ci.apache.org/projects/flink/flink-docs-release-1.6"],
    ["1.5", "http://ci.apache.org/projects/flink/flink-docs-release-1.5"],
    ["1.4", "http://ci.apache.org/projects/flink/flink-docs-release-1.4"],
    ["1.3", "http://ci.apache.org/projects/flink/flink-docs-release-1.3"],
    ["1.2", "http://ci.apache.org/projects/flink/flink-docs-release-1.2"],
    ["1.1", "http://ci.apache.org/projects/flink/flink-docs-release-1.1"],
    ["1.0", "http://ci.apache.org/projects/flink/flink-docs-release-1.0"]
  ]

[markup]
[markup.goldmark.renderer]
  unsafe = true

[languages]
[languages.en]
  languageName = 'English'
  contentDir = 'content'
  weight = 1

[languages.zh]
  languageName = '中文版'
  contentDir = 'content.zh'
  weight = 2
