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

encoding: utf-8
markdown: kramdown

# where this will publish
url_root: http://0.0.0.0:4000

# This can be set eg "/brooklyn-docs" to specify a context path / prefix for all links
baseurl: ""

path:
  #
  style: /style

  # these are only used in a few places, either where
  # - html needs to know the final path
  # - the file doesn't exist in this build (but does when deployed)
  # should almost always be used as {{ site.path.guide | relative_url }}
  guide: /guide
  website: /website
  v: /v
  
# Use local copies of dependencies in dev build (switched to remote using URLs for prod build)
dependency_mode: local
dependency_urls:
  bootstrap.css: https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css
  bootstrap.js: https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js
  jquery.js: https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js

root_menu_page: /website/index.md

# These files should not be included in the final build (in addition to _* contents)
exclude: ['/Gemfile*','/README.md']

theme: minima

sass:
    sass_dir: style/css
    style: compressed

# TODO the 0.12.0 paths must be changed!
brooklyn-stable-version: 0.12.0
pdf-default-base-url: http://brooklyn.apache.org
pdf-default-versioned-url-subpath: /v/0.12.0

pdf-rewrite-prefixes: 
    '/guide' : '/v/0.12.0'
    '/website' : ''
    
brooklyn-version: 1.1.0-SNAPSHOT # BROOKLYN_VERSION brooklyn-docs-version
brooklyn-snapshot-git-branch: master   # if line above is SNAPSHOT this should point to corresponding git branch (e.g. master, 0.4)

# This is auto-detected, but you can override it if needed.
# git-branch: master
