# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# App Engine configuration, see:
# https://developers.google.com/appengine/docs/python/config/appconfig

# The version number should be something like rSVN_REVISION.
version: remember to edit app.yaml before deploying
# This version name is used to create a new host, for example,
# http://r31824.try-dart-lang.appspot.com/, which can be tested before going
# live at http://try.dartlang.org/.  This is controlled from
# https://appengine.google.com/deployment?&app_id=s~try-dart-lang

application: try-dart-lang
runtime: python27
api_version: 1
threadsafe: yes

# Set "Cache-Control" and "Expires" HTTP headers to only cache for one second.
# We do this because we frequently push new changes and rely on AppCache for
# caching.  Once files are installed in AppCache, the site launches
# immediately.
#
# Problem: PageSpeed Insights doesn't realize that we use AppCache and keeps
# nagging about caching.
# Solution: Ignore its advice about "Leverage browser caching".
default_expiration: 1s

handlers:
- url: /packages/analyzer
  static_dir: packages/analyzer
  secure: always

- url: /packages/args
  static_dir: packages/args
  secure: always

- url: /packages/collection
  static_dir: packages/collection
  secure: always

- url: /packages/crypto
  static_dir: packages/crypto
  secure: always

- url: /packages/http
  static_dir: packages/http
  secure: always

- url: /packages/http_parser
  static_dir: packages/http_parser
  secure: always

- url: /packages/intl
  static_dir: packages/intl
  secure: always

- url: /packages/logging
  static_dir: packages/logging
  secure: always

- url: /packages/math
  static_dir: packages/math
  secure: always

- url: /packages/path
  static_dir: packages/path
  secure: always

- url: /packages/serialization
  static_dir: packages/serialization
  secure: always

- url: /packages/stack_trace
  static_dir: packages/stack_trace
  secure: always

- url: /packages/string_scanner
  static_dir: packages/string_scanner
  secure: always

- url: /packages/unittest
  static_dir: packages/unittest
  secure: always

- url: /packages/yaml
  static_dir: packages/yaml
  secure: always

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
  secure: always

- url: /
  static_files: index.html
  upload: index.html
  secure: always

- url: /ssl.appcache
  static_files: ssl.appcache
  upload: ssl.appcache
  secure: always

- url: /(.*\.(html|js|png|css|dart|json))
  static_files: \1
  upload: (.*\.(html|js|png|css|dart|json))
  secure: always

- url: /css/fonts/fontawesome-webfont.woff
  static_files: fontawesome-webfont.woff
  upload: fontawesome-webfont.woff
  secure: always

libraries:
- name: webapp2
  version: "2.5.2"
