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

#------------------------------------------------------------------------------
# VARIABLES
#------------------------------------------------------------------------------
# Variables specified in this file can be used in the documentation via:
#     {{ site.CONFIG_KEY }}
#------------------------------------------------------------------------------

# 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.11.4"
# For stable releases, leave the bugfix version out (e.g. 1.2). For snapshot
# release this should be the same as the regular version
version_title: 1.11
# Branch on Github for this version
github_branch: "release-1.11"

# Plain Scala version is needed for e.g. the Gradle quickstart.
scala_version: "2.11"
# This suffix is appended to the Scala-dependent Maven artifact names
scala_version_suffix: "_2.11"

# Plain flink-shaded version is needed for e.g. the hive connector.
# Please update the shaded_version once new flink-shaded is released.
shaded_version: "8.0"

# Some commonly linked pages (this was more important to have as a variable
# during incubator; by now it should also be fine to hardcode these.)
website_url: "https://flink.apache.org"
jira_url: "https://issues.apache.org/jira/browse/FLINK"
github_url: "https://github.com/apache/flink"
download_url: "https://flink.apache.org/downloads.html"

# please use a protocol relative URL here
baseurl: //ci.apache.org/projects/flink/flink-docs-release-1.11
stable_baseurl: //ci.apache.org/projects/flink/flink-docs-stable

javadocs_baseurl: //ci.apache.org/projects/flink/flink-docs-release-1.11
pythondocs_baseurl: //ci.apache.org/projects/flink/flink-docs-release-1.11

statefundocs_baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-master
statefundocs_stable_baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-stable

# Flag whether this is a stable version or not. Used for the quickstart page.
is_stable: true

# Flag to indicate whether an outdated warning should be shown.
show_outdated_warning: true

previous_docs:
  '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

#------------------------------------------------------------------------------
# BUILD CONFIG
#------------------------------------------------------------------------------
# These variables configure the jekyll build (./build_docs.sh). You don't need
# to change anything here.
#------------------------------------------------------------------------------

exclude:
  - "build_docs.sh"
  - "check_links.sh"

# Used in some documents to initialize arrays. Don't delete.
array: []

defaults:
  -
    scope:
      path: ""
    values:
      layout: plain
      nav-pos: 99999 # Move to end if no pos specified

host: 0.0.0.0

kramdown:
  toc_levels: 1..3 # Include h1-h3 for ToC

# The all languages used
languages: ['en', 'zh']

plugins: ['jekyll-paginate', 'jekyll-multiple-languages']
