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

site_name: Apache Eagle <span class="docs-version">v0.3.0-incubating</span>
site_description: Apache Eagle Documentations for Version 0.3.0-incubating
site_author: Apache Eagle Community (dev@incubator.eagle.apache.org)
site_favicon: favicon.png
repo_url: https://github.com/apache/incubator-eagle
repo_name: Apache Github
docs_dir: eagle-docs

# Documentation Style
theme: readthedocs
extra_css: ["assets/css/docs.css"]
extra:
    version: 0.3.0-incubating

copyright: "
<div class=\"container\">
    <div style=\"font-size: 12px; text-align: center\">
        <div>
            Copyright © 2015 <a href=\"http://www.apache.org\">The Apache Software Foundation</a>, Licensed under the <a href=\"http://www.apache.org/licenses/LICENSE-2.0\">Apache License, Version 2.0</a>.
        </div>
        <div>
            Apache Eagle, Eagle, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
        </div>
        <div>
            <a class=\"footer-link-img\" href=\"http://www.apache.org\">
                <img id=\"asf-logo\" alt=\"Apache Software Foundation\" src=\"/images/asf_logo.svg\">
            </a>
            <a class=\"footer-link-img\" href=\"http://incubator.apache.org\">
                <img id=\"asf-logo\" alt=\"Apache Software Foundation\" src=\"/images/egg-logo2-noborder.png\">
            </a>
        </div>
    </div>
</div>
<!-- footer end -->"

## Add new pages as following
pages:
- Apache Eagle: index.md
- Development:
    - Apache Eagle Development Environment Setup: development/eagle_development_setup.md
- Tutorial:
   - Getting started with Eagle: tutorial/getting_started_with_eagle.md
   - Application Manager Tutorial: tutorial/application_manager_tutorial.md
   - Alert Notification Plugin tutorial: tutorial/alert_notification_plugin_tutorial.md
- User Guide:
   - Installation: userguide/installation.md
