# 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.
#
markdown: kramdown
permalink: /news/:year/:month/:day/:title/
excerpt_separator: ""

repository: https://github.com/apache/calcite-avatica
destination: target/avatica
exclude: [README.md,Gemfile*,add-avatica-go-docs.sh,docker-compose.yml,target]
keep_files: [".git", ".svn", "javadocAggregate"]
# This ensures 2016-03-03-separate-project.md is rendered 2016-03-03
# no matter what the client time zone is
timezone: Etc/GMT+5

collections:
  docs:
    output: true

# The URL where the code can be found
sourceRoot: https://github.com/apache/calcite-avatica/tree/master

# The URL where Avatica Javadocs are located
apiRoot: /avatica/javadocAggregate
# apiRoot: http://calcite.apache.org/avatica/javadocAggregate

# The URL where the JDK's Javadocs are located
jdkApiRoot: https://docs.oracle.com/javase/8/docs/api/

# The base path where the website is deployed
baseurl: /avatica

# End _config.yml
