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