# 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.0"

  # 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.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
