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

brooklyn-stable-version: 0.7.0-incubating

brooklyn-version: 0.8.0-incubating # 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
