# 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.9.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
version_title: 1.9
# Branch on Github for this version
github_branch: "release-1.9"

# 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: "http://flink.apache.org"
jira_url: "https://issues.apache.org/jira/browse/FLINK"
github_url: "https://github.com/apache/flink"
download_url: "http://flink.apache.org/downloads.html"

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

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

# 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: false

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

# 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']
