# 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 Stateful Function 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: "2.0.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
version_title: "2.0"
# The Flink version supported by this version of Stateful Functions
flink_version: "1.10.0"
# Branch on Github for this version
github_branch: "release-2.0"

# 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-statefun"
download_url: "https://flink.apache.org/downloads.html"

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

javadocs_baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/

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

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

previous_docs:
  2.0: https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.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']

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