# ===========================================================================
# Project:   Abbot - SproutCore Build Tools
# Copyright: ©2009 Apple Inc.
#            portions copyright @2006-2011 Strobe Inc.
#            and contributors
# ===========================================================================

# Default buildfile loaded by all projects.  Any options you put into your
# project buildfile will override these defaults.

# Import all build tasks
import *Dir.glob(File.join(File.dirname(current_path), 'buildtasks', '**', '*.rake'))

mode :all do
  config :all,

    # REQUIRED CONFIGS
    # You will not usually need to override these configs, but the code
    # assumes they will be present, so you must support them.
    :build_prefix   => 'tmp/build',
    :staging_prefix => 'tmp/staging',
    :cache_prefix   => 'tmp/cache',
    :url_prefix     => 'static',

    # Defines the directories that may contain targets, and maps them to a
    # target type.  When a project tries to find all of the targets in a
    # project, it will use this map to find them.
    :target_types => {
      :apps       => :app,
      :clients    => :app,
      :pages      => :app, # used for static pages with your site
      :frameworks => :framework,
      :themes     => :theme,
      :modules    => :module
    },

    # Allows the target to have other targets nested inside of it.  Override
    # this in your target Buildfile to disable nesting.
    :allow_nested_targets => true,

    # The default preferred language.  Assets will be pulled from this
    # language unless otherwise specified.
    :preferred_language => :en,

    # Do not include fixtures in built project.
    :load_fixtures => false,

    # Do not include debug directory in built project
    :load_debug => false,

    # Do not load protocols in production mode
    :load_protocols => false,

    # Do not build tests.
    :load_tests => false,

    # Generate a combined javascript and stylesheet
    :combine_javascript => true,
    :combine_stylesheets => true,

    # by default all targets autobuild
    :autobuild => true,

    # by default minify javacript and stylesheets
    :minify => true,
    :minify_css => true,

    # use the default layout defined in SproutCore
    :layout => 'sproutcore:lib/index.rhtml',
    :test_layout => 'sproutcore:lib/index.rhtml',

    # name a framework to use as the theme.  will be included in required
    # frameworks automatically if found.
    :theme  => 'sproutcore/ace',

    # use default bootstrap framework
    :bootstrap_inline => 'sproutcore/bootstrap:javascript',

    # In design mode, load the designer
    :design_required => ['sproutcore/designer'],

    # packs all JavaScript and CSS into one file for reduced HTTP requests
    :use_packed => true,

		# If set to true, the specified framework, if loaded via the SC.loadBundle
		# API, will be set up to be lazily instantiated when loaded.
		:lazy_instantiation => false,

    # if set to true then the index.html will build into the global language
    # and target directory.  This can interfere with deploying multiple builds
    # at one but it is more convenient.
    :overwrite_current => false,

    # causes the default index.html file to add an overflow:hidden statement
    # to the body tag.  This is usually preferred since it makes drag and drop
    # look nicer
    :hide_body_overflow => true,

    # A hash of additional MIME types, i.e. { '.m4a' => 'audio/mp4a-latm' }
    :mime_types => {},
    
    # Whether to generate an app.manifest file for HTML5 application caching
    :html5_manifest => false,
    # Which networks/URLs to allow if HTML5 application caching is turned on
    :html5_manifest_networks => []
    
end


mode :debug do
  config :all,

    # in debug mode, load fixtures, debug, tests, and protocols
    :load_fixtures  => true,
    :load_debug     => true,
    :load_tests     => true,
    :load_protocols => true,

    # Do not combine javascript and stylesheet
    :combine_javascript => false,
    :combine_stylesheets => true,

    :minify_javascript => false,
		:minify_css => false,

    :build_prefix => 'tmp/debug/build',
    :staging_prefix => 'tmp/debug/staging',

    # debug settings for sc-server
    :serve_exceptions => true,
    :reload_project   => true,

    # In debug mode, we want to simply compute the build number each time
    # to ensure the latest version is always loaded.
    :build_number     => :current,

    # Instructs the URL builders to include a timestamp token at the end of
    # urls.  This option is only useful in development mode since browsers
    # will respect the timestamp token as a way to unique the url.  This
    # should not be used in production as some proxies on the internet do
    # not respect tokens.
    :timestamp_urls  =>  true,

    # Do not pack javascripts in development mode, we want each file to
    # load independently.
    :use_packed => false,
    
    # Turn off HTML5 application caching by default in debug mode
    :html5_manifest => false
end