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

# absolute base directories where things will land on the server
path:
  style: /style
  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']

sass:
    sass_dir: style/css

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

pdf-rewrite-prefixes: 
    '/guide' : '/v/0.11.0'
    '/website' : ''
    
brooklyn-version: 0.12.0 # BROOKLYN_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
