sproutcore 1.6.0.1-java → 1.7.1.beta-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +21 -0
 - data/Gemfile +5 -0
 - data/Rakefile +26 -13
 - data/VERSION.yml +2 -2
 - data/lib/Buildfile +43 -4
 - data/lib/buildtasks/build.rake +10 -0
 - data/lib/buildtasks/helpers/file_rule.rb +22 -0
 - data/lib/buildtasks/helpers/file_rule_list.rb +137 -0
 - data/lib/buildtasks/manifest.rake +133 -122
 - data/lib/frameworks/sproutcore/CHANGELOG.md +69 -2
 - data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -0
 - data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +28 -22
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +9 -5
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +18 -13
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +5 -3
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +2 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +80 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +84 -116
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +8 -5
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +157 -157
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +5 -3
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +6 -6
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -7
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +106 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +18 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +71 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/attribute_bindings_test.js +38 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +47 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +18 -18
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +42 -10
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +158 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +26 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +14 -8
 - data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +15 -2
 - data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +108 -108
 - data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +26 -0
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +7 -0
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +4 -1
 - data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +6 -0
 - data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +26 -5
 - data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +97 -96
 - data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +4 -3
 - data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +17 -4
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +7 -7
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +7 -5
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +12 -3
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +23 -14
 - data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +5 -1
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +28 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +235 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +363 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +250 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +92 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +25 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +33 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +76 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +50 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +143 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +258 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +1164 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +332 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +236 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +347 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +15 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +10 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +804 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +133 -0
 - data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +3 -3
 - data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +3 -1
 - data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +3 -3
 - data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/video.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +29 -3
 - data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +3 -3
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +1 -1
 - data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +2 -2
 - data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/segmented.css +1 -1
 - data/lib/gen/app/templates/apps/@target_name@/Buildfile +3 -5
 - data/lib/gen/app/templates/apps/@target_name@/resources/_theme.css +18 -0
 - data/lib/gen/project/templates/@filename@/Buildfile +2 -2
 - data/lib/sproutcore.rb +30 -5
 - data/lib/sproutcore/builders.rb +1 -0
 - data/lib/sproutcore/builders/chance_file.rb +9 -16
 - data/lib/sproutcore/builders/html.rb +2 -1
 - data/lib/sproutcore/builders/minify.rb +4 -35
 - data/lib/sproutcore/builders/module.rb +38 -1
 - data/lib/sproutcore/builders/split.rb +63 -0
 - data/lib/sproutcore/builders/strings.rb +7 -1
 - data/lib/sproutcore/helpers.rb +1 -1
 - data/lib/sproutcore/helpers/css_split.rb +190 -0
 - data/lib/sproutcore/helpers/entry_sorter.rb +2 -0
 - data/lib/sproutcore/helpers/minifier.rb +40 -16
 - data/lib/sproutcore/helpers/static_helper.rb +35 -17
 - data/lib/sproutcore/models/manifest.rb +26 -0
 - data/lib/sproutcore/models/target.rb +12 -1
 - data/lib/sproutcore/rack.rb +1 -0
 - data/lib/sproutcore/rack/proxy.rb +244 -225
 - data/lib/sproutcore/rack/restrict_ip.rb +67 -0
 - data/lib/sproutcore/rack/service.rb +8 -2
 - data/lib/sproutcore/tools.rb +102 -46
 - data/lib/sproutcore/tools/build.rb +91 -43
 - data/lib/sproutcore/tools/gen.rb +2 -3
 - data/lib/sproutcore/tools/manifest.rb +22 -16
 - data/lib/sproutcore/tools/server.rb +21 -0
 - data/spec/buildtasks/helpers/accept_list +22 -0
 - data/spec/buildtasks/helpers/accept_list.rb +128 -0
 - data/spec/buildtasks/helpers/list.json +11 -0
 - data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +1 -39
 - data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +0 -38
 - data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +4 -4
 - data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +2 -2
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +7 -16
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +7 -17
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +11 -6
 - data/spec/fixtures/builder_tests/Buildfile +2 -1
 - data/spec/fixtures/builder_tests/apps/module_test/modules/required_module/core.js +0 -0
 - data/spec/lib/builders/module_spec.rb +1 -1
 - data/spec/spec_helper.rb +1 -0
 - data/sproutcore.gemspec +4 -9
 - data/vendor/chance/lib/chance.rb +25 -6
 - data/vendor/chance/lib/chance/factory.rb +45 -0
 - data/vendor/chance/lib/chance/instance.rb +173 -28
 - data/vendor/chance/lib/chance/instance/data_url.rb +0 -29
 - data/vendor/chance/lib/chance/instance/slicing.rb +57 -4
 - data/vendor/chance/lib/chance/instance/spriting.rb +112 -21
 - data/vendor/chance/lib/chance/parser.rb +80 -52
 - data/vendor/sproutcore/SCCompiler.jar +0 -0
 - data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
 - data/vendor/sproutcore/lib/yuicompressor-2.4.2.jar +0 -0
 - metadata +84 -25
 
| 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # ===========================================================================
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Project:   Abbot - SproutCore Build Tools
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright: ©2009-2011 Apple Inc.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #            portions copyright @2006-2011 Strobe Inc.
         
     | 
| 
      
 5 
     | 
    
         
            +
            #            and contributors
         
     | 
| 
      
 6 
     | 
    
         
            +
            # ===========================================================================
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # For all those working in internet cafes...
         
     | 
| 
      
 9 
     | 
    
         
            +
            # We feel for you. Go to a real cafe instead. They have internet, too.
         
     | 
| 
      
 10 
     | 
    
         
            +
            module SC
         
     | 
| 
      
 11 
     | 
    
         
            +
              module Rack
         
     | 
| 
      
 12 
     | 
    
         
            +
                class RestrictIP
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def initialize(app, allow_ips=[])
         
     | 
| 
      
 14 
     | 
    
         
            +
                    @app = app
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @allow = allow_ips
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  
         
     | 
| 
      
 18 
     | 
    
         
            +
                  # checks if an IP, such as 127.0.0.1, matches a mask, such as 127.*.*.*
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def ip_is_valid(ip, mask)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    ip_parts = ip.split('.')
         
     | 
| 
      
 21 
     | 
    
         
            +
                    mask_parts = mask.split('.')
         
     | 
| 
      
 22 
     | 
    
         
            +
                    
         
     | 
| 
      
 23 
     | 
    
         
            +
                    if mask_parts.length != 4
         
     | 
| 
      
 24 
     | 
    
         
            +
                      SC.logger.fatal "Invalid IP mask: #{mask}\n"
         
     | 
| 
      
 25 
     | 
    
         
            +
                      exit
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
                    
         
     | 
| 
      
 28 
     | 
    
         
            +
                    ip_idx = 0
         
     | 
| 
      
 29 
     | 
    
         
            +
                    mask_parts.each {|mask_part|
         
     | 
| 
      
 30 
     | 
    
         
            +
                      ip_part = ip_parts[ip_idx]
         
     | 
| 
      
 31 
     | 
    
         
            +
                      
         
     | 
| 
      
 32 
     | 
    
         
            +
                      # * means anything matches
         
     | 
| 
      
 33 
     | 
    
         
            +
                      if mask_part == '*'
         
     | 
| 
      
 34 
     | 
    
         
            +
                        next
         
     | 
| 
      
 35 
     | 
    
         
            +
                      end
         
     | 
| 
      
 36 
     | 
    
         
            +
                      
         
     | 
| 
      
 37 
     | 
    
         
            +
                      if ip_part != mask_part
         
     | 
| 
      
 38 
     | 
    
         
            +
                        return false
         
     | 
| 
      
 39 
     | 
    
         
            +
                      end
         
     | 
| 
      
 40 
     | 
    
         
            +
                      
         
     | 
| 
      
 41 
     | 
    
         
            +
                      ip_idx = ip_idx + 1
         
     | 
| 
      
 42 
     | 
    
         
            +
                    }
         
     | 
| 
      
 43 
     | 
    
         
            +
                    
         
     | 
| 
      
 44 
     | 
    
         
            +
                    return true
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
      
 47 
     | 
    
         
            +
                  def call(env)
         
     | 
| 
      
 48 
     | 
    
         
            +
                    ip = env['REMOTE_ADDR']
         
     | 
| 
      
 49 
     | 
    
         
            +
                    
         
     | 
| 
      
 50 
     | 
    
         
            +
                    is_valid = false
         
     | 
| 
      
 51 
     | 
    
         
            +
                    @allow.each {|mask|
         
     | 
| 
      
 52 
     | 
    
         
            +
                      if ip_is_valid(ip, mask)
         
     | 
| 
      
 53 
     | 
    
         
            +
                        is_valid = true
         
     | 
| 
      
 54 
     | 
    
         
            +
                        break
         
     | 
| 
      
 55 
     | 
    
         
            +
                      end
         
     | 
| 
      
 56 
     | 
    
         
            +
                    }
         
     | 
| 
      
 57 
     | 
    
         
            +
                    
         
     | 
| 
      
 58 
     | 
    
         
            +
                    if is_valid
         
     | 
| 
      
 59 
     | 
    
         
            +
                      return @app.call(env)
         
     | 
| 
      
 60 
     | 
    
         
            +
                    else
         
     | 
| 
      
 61 
     | 
    
         
            +
                      SC.logger << "Blocked connection attempt by ip: #{ip}\n"
         
     | 
| 
      
 62 
     | 
    
         
            +
                      return [403, { 'Content-Type' => 'text/plain' }, "YOU CANNOT BEEZ HERE."]
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -59,7 +59,7 @@ module SC 
     | 
|
| 
       59 
59 
     | 
    
         
             
                    self.filesystem = opts[:Filesystem]
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
                    projects = opts.delete(:projects) || [opts.delete(:project)].compact
         
     | 
| 
       62 
     | 
    
         
            -
                    app = self.new(*projects)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    app = self.new(*projects, opts)
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                    opts[:Host] ||= opts[:host] # allow either case.
         
     | 
| 
       65 
65 
     | 
    
         
             
                    opts[:Port] ||= opts[:port] || '4020'
         
     | 
| 
         @@ -93,7 +93,7 @@ module SC 
     | 
|
| 
       93 
93 
     | 
    
         
             
                    server.run app, opts
         
     | 
| 
       94 
94 
     | 
    
         
             
                  end
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
                  def initialize(*projects)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  def initialize(*projects, opts)
         
     | 
| 
       97 
97 
     | 
    
         
             
                    @projects = projects.flatten
         
     | 
| 
       98 
98 
     | 
    
         | 
| 
       99 
99 
     | 
    
         
             
                    # Get apps for each project & cascade if needed
         
     | 
| 
         @@ -105,6 +105,12 @@ module SC 
     | 
|
| 
       105 
105 
     | 
    
         
             
                    @app = ::Rack::ConditionalGet.new(@app)
         
     | 
| 
       106 
106 
     | 
    
         
             
                    #@app = ::Rack::Deflater.new(@app)
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
      
 108 
     | 
    
         
            +
                    # preprocess IPs so we can restrict properly
         
     | 
| 
      
 109 
     | 
    
         
            +
                    ips = opts[:allow_from_ips] || '127.0.0.1'
         
     | 
| 
      
 110 
     | 
    
         
            +
                    SC.logger << "Allowing access only from IPs: #{ips}. Use --allow-from-ips='*.*.*.*' to allow all\n"
         
     | 
| 
      
 111 
     | 
    
         
            +
                    ips = ips.split(',')
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                    @app = SC::Rack::RestrictIP.new(@app, ips)
         
     | 
| 
       108 
114 
     | 
    
         
             
                  end
         
     | 
| 
       109 
115 
     | 
    
         | 
| 
       110 
116 
     | 
    
         
             
                  def call(env); @app.call(env); end
         
     | 
    
        data/lib/sproutcore/tools.rb
    CHANGED
    
    | 
         @@ -32,17 +32,27 @@ module SC 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                # All sproutcore tools can take some standard options.  These are
         
     | 
| 
       34 
34 
     | 
    
         
             
                # processed automatically when the tool is loaded
         
     | 
| 
       35 
     | 
    
         
            -
                class_option "project", 
     | 
| 
       36 
     | 
    
         
            -
                class_option "mode", 
     | 
| 
       37 
     | 
    
         
            -
                class_option "logfile", 
     | 
| 
       38 
     | 
    
         
            -
                class_option "build", 
     | 
| 
       39 
     | 
    
         
            -
                class_option "build-targets" 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                 
     | 
| 
       42 
     | 
    
         
            -
                class_option " 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                 
     | 
| 
       45 
     | 
    
         
            -
                class_option " 
     | 
| 
      
 35 
     | 
    
         
            +
                class_option "project",      :type => :string
         
     | 
| 
      
 36 
     | 
    
         
            +
                class_option "mode",         :type => :string
         
     | 
| 
      
 37 
     | 
    
         
            +
                class_option "logfile",      :type => :string
         
     | 
| 
      
 38 
     | 
    
         
            +
                class_option "build",        :type => :string, :aliases => "-b"
         
     | 
| 
      
 39 
     | 
    
         
            +
                class_option "build-targets",:type => :string,
         
     | 
| 
      
 40 
     | 
    
         
            +
                  :desc => "Targets to build (excluding their dependencies)"
         
     | 
| 
      
 41 
     | 
    
         
            +
                
         
     | 
| 
      
 42 
     | 
    
         
            +
                class_option "yui-minification",     :type => :boolean,
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :desc => "Deprecated. Does nothing."
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
                class_option "dont-minify",     :type => :boolean,
         
     | 
| 
      
 46 
     | 
    
         
            +
                  :desc => "Disables minification for the build."
         
     | 
| 
      
 47 
     | 
    
         
            +
                
         
     | 
| 
      
 48 
     | 
    
         
            +
                class_option "verbose",      :type => :boolean, :aliases => "-v"
         
     | 
| 
      
 49 
     | 
    
         
            +
                class_option "very-verbose", :type => :boolean, :aliases => "-V"
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
                class_option "library",      :type => :string, #deprecated
         
     | 
| 
      
 52 
     | 
    
         
            +
                  :desc => "Deprecated."
         
     | 
| 
      
 53 
     | 
    
         
            +
                class_option "environment",  :type => :string, #deprecated
         
     | 
| 
      
 54 
     | 
    
         
            +
                  :desc => "Deprecated."
         
     | 
| 
      
 55 
     | 
    
         
            +
                class_option "help",         :type => :boolean
         
     | 
| 
       46 
56 
     | 
    
         | 
| 
       47 
57 
     | 
    
         
             
                default_task :banner
         
     | 
| 
       48 
58 
     | 
    
         | 
| 
         @@ -199,6 +209,20 @@ module SC 
     | 
|
| 
       199 
209 
     | 
    
         
             
                      end
         
     | 
| 
       200 
210 
     | 
    
         
             
                    end
         
     | 
| 
       201 
211 
     | 
    
         | 
| 
      
 212 
     | 
    
         
            +
                    # This is the root project, so we must also load the "include targets" used to
         
     | 
| 
      
 213 
     | 
    
         
            +
                    # make additional frameworks available to SC apps.
         
     | 
| 
      
 214 
     | 
    
         
            +
                    SC.include_targets.each {|target|
         
     | 
| 
      
 215 
     | 
    
         
            +
                      target_path = File.expand_path target[:path]
         
     | 
| 
      
 216 
     | 
    
         
            +
                      target_name = File.join "/", target[:name]
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
                      # Note: target names must begin with / to be valid.
         
     | 
| 
      
 219 
     | 
    
         
            +
                      t = ret.add_target target_name, :framework, { :source_root => target_path }
         
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
                      if t.config[:allow_nested_targets]
         
     | 
| 
      
 222 
     | 
    
         
            +
                        ret.find_targets_for(target_path, target_name, t.config)
         
     | 
| 
      
 223 
     | 
    
         
            +
                      end
         
     | 
| 
      
 224 
     | 
    
         
            +
                    }
         
     | 
| 
      
 225 
     | 
    
         
            +
             
     | 
| 
       202 
226 
     | 
    
         
             
                    info "Loaded project at: #{ret.project_root}" unless ret.nil?
         
     | 
| 
       203 
227 
     | 
    
         
             
                    @project = ret
         
     | 
| 
       204 
228 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -269,26 +293,6 @@ module SC 
     | 
|
| 
       269 
293 
     | 
    
         
             
                      targets = tar
         
     | 
| 
       270 
294 
     | 
    
         
             
                    end
         
     | 
| 
       271 
295 
     | 
    
         | 
| 
       272 
     | 
    
         
            -
                    # If include required was specified, merge in all required bundles as
         
     | 
| 
       273 
     | 
    
         
            -
                    # well. Note that we do this whether --build-targets is specified or not.
         
     | 
| 
       274 
     | 
    
         
            -
                    if options[:'include-required']
         
     | 
| 
       275 
     | 
    
         
            -
                      tar = targets.clone
         
     | 
| 
       276 
     | 
    
         
            -
                      targets.each do |target|
         
     | 
| 
       277 
     | 
    
         
            -
                        required = target.expand_required_targets :theme => true,
         
     | 
| 
       278 
     | 
    
         
            -
                         :debug => target.config.load_debug,
         
     | 
| 
       279 
     | 
    
         
            -
                         :tests => target.config.load_tests
         
     | 
| 
       280 
     | 
    
         
            -
             
     | 
| 
       281 
     | 
    
         
            -
                        required.each {|t| 
         
     | 
| 
       282 
     | 
    
         
            -
                          t.config[:minify_javascript] = false if not targets.include? t
         
     | 
| 
       283 
     | 
    
         
            -
                        }
         
     | 
| 
       284 
     | 
    
         
            -
             
     | 
| 
       285 
     | 
    
         
            -
                        tar += required
         
     | 
| 
       286 
     | 
    
         
            -
                      end
         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
       288 
     | 
    
         
            -
                      targets = tar.flatten.uniq.compact
         
     | 
| 
       289 
     | 
    
         
            -
                    end
         
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
             
     | 
| 
       292 
296 
     | 
    
         
             
                    targets
         
     | 
| 
       293 
297 
     | 
    
         | 
| 
       294 
298 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -342,35 +346,87 @@ module SC 
     | 
|
| 
       342 
346 
     | 
    
         
             
                      SC.logger.info "Using build numbers: #{numbers.map { |k,v| "#{k}: #{v}" }.join(',')}"
         
     | 
| 
       343 
347 
     | 
    
         
             
                    end
         
     | 
| 
       344 
348 
     | 
    
         
             
                  end
         
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
                   
     | 
| 
       347 
     | 
    
         
            -
                  # Shared by sc-manifest, sc-build and sc-docs commands.
         
     | 
| 
       348 
     | 
    
         
            -
                  def build_manifests(*targets)
         
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
      
 349 
     | 
    
         
            +
                  
         
     | 
| 
      
 350 
     | 
    
         
            +
                  def each_manifest_for_targets(*targets)
         
     | 
| 
       350 
351 
     | 
    
         
             
                    # setup build numbers
         
     | 
| 
       351 
352 
     | 
    
         
             
                    find_build_numbers(*targets)
         
     | 
| 
       352 
353 
     | 
    
         | 
| 
       353 
354 
     | 
    
         
             
                    requires_project! # get project
         
     | 
| 
      
 355 
     | 
    
         
            +
                    
         
     | 
| 
       354 
356 
     | 
    
         
             
                    targets = find_targets(*targets) # get targets
         
     | 
| 
       355 
     | 
    
         
            -
                    languages = find_languages(*targets) # get languages
         
     | 
| 
       356 
357 
     | 
    
         | 
| 
       357 
358 
     | 
    
         
             
                    # log output
         
     | 
| 
       358 
359 
     | 
    
         
             
                    SC.logger.info "Building targets: #{targets.map { |t| t.target_name } * ","}"
         
     | 
| 
      
 360 
     | 
    
         
            +
                    
         
     | 
| 
      
 361 
     | 
    
         
            +
                    languages = find_languages(*targets) # get languages
         
     | 
| 
       359 
362 
     | 
    
         
             
                    SC.logger.info "Building languages: #{ languages * "," }"
         
     | 
| 
      
 363 
     | 
    
         
            +
                    
         
     | 
| 
      
 364 
     | 
    
         
            +
                    index = 1
         
     | 
| 
      
 365 
     | 
    
         
            +
                    count = targets.length * languages.length
         
     | 
| 
      
 366 
     | 
    
         
            +
                    SC.logger.info "Total target/language combinations to build: #{count}"
         
     | 
| 
      
 367 
     | 
    
         
            +
                    
         
     | 
| 
      
 368 
     | 
    
         
            +
                    targets.each {|target|
         
     | 
| 
      
 369 
     | 
    
         
            +
                      languages.each {|l|
         
     | 
| 
      
 370 
     | 
    
         
            +
                        manifest = target.manifest_for :language => l
         
     | 
| 
      
 371 
     | 
    
         
            +
                        SC.logger.info "Creating manifest #{index} of #{count} for: #{manifest.target.target_name}:#{manifest.language}"
         
     | 
| 
      
 372 
     | 
    
         
            +
                        
         
     | 
| 
      
 373 
     | 
    
         
            +
                        yield manifest
         
     | 
| 
      
 374 
     | 
    
         
            +
                        
         
     | 
| 
      
 375 
     | 
    
         
            +
                        index += 1
         
     | 
| 
      
 376 
     | 
    
         
            +
                      }
         
     | 
| 
      
 377 
     | 
    
         
            +
                    }
         
     | 
| 
      
 378 
     | 
    
         
            +
                    
         
     | 
| 
      
 379 
     | 
    
         
            +
                  end
         
     | 
| 
       360 
380 
     | 
    
         | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
       363 
     | 
    
         
            -
             
     | 
| 
       364 
     | 
    
         
            -
                    end
         
     | 
| 
       365 
     | 
    
         
            -
                    manifests.flatten!
         
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
      
 381 
     | 
    
         
            +
                  # Core method to process command line options and then build a manifest.
         
     | 
| 
      
 382 
     | 
    
         
            +
                  # Shared by sc-manifest, sc-build and sc-docs commands.
         
     | 
| 
      
 383 
     | 
    
         
            +
                  def build_manifests(*targets)
         
     | 
| 
       367 
384 
     | 
    
         
             
                    # Build'em
         
     | 
| 
       368 
     | 
    
         
            -
                     
     | 
| 
       369 
     | 
    
         
            -
                      SC.logger.info "Building manifest for: #{manifest.target.target_name}:#{manifest.language}"
         
     | 
| 
      
 385 
     | 
    
         
            +
                    each_manifest_for_targets(*targets) do |manifest|
         
     | 
| 
       370 
386 
     | 
    
         
             
                      manifest.build!
         
     | 
| 
      
 387 
     | 
    
         
            +
                      
         
     | 
| 
      
 388 
     | 
    
         
            +
                      yield manifest
         
     | 
| 
       371 
389 
     | 
    
         
             
                    end
         
     | 
| 
      
 390 
     | 
    
         
            +
                  end
         
     | 
| 
      
 391 
     | 
    
         
            +
                  
         
     | 
| 
      
 392 
     | 
    
         
            +
                  # Loops over all of the manifest's entries and builds all essential entries.
         
     | 
| 
      
 393 
     | 
    
         
            +
                  # Entries such as javascript.js are considered non-essential because they will
         
     | 
| 
      
 394 
     | 
    
         
            +
                  # not actually be used in a fully built app (except for modules).
         
     | 
| 
      
 395 
     | 
    
         
            +
                  #
         
     | 
| 
      
 396 
     | 
    
         
            +
                  # It also does a check to ensure that all JS being written is minified.
         
     | 
| 
      
 397 
     | 
    
         
            +
                  def build_entries_for_manifest(manifest, allow_comments)
         
     | 
| 
      
 398 
     | 
    
         
            +
                    if manifest.entries.size > 0
         
     | 
| 
      
 399 
     | 
    
         
            +
                      target = manifest.target
         
     | 
| 
      
 400 
     | 
    
         
            +
                      info "Building entries for #{target.target_name}:#{manifest.language}..."
         
     | 
| 
      
 401 
     | 
    
         
            +
             
     | 
| 
      
 402 
     | 
    
         
            +
                      # we ONLY generate non-packed javascript.js files for modules, which may need
         
     | 
| 
      
 403 
     | 
    
         
            +
                      # to lazily load them. Otherwise: NOPE!
         
     | 
| 
      
 404 
     | 
    
         
            +
                      generate_javascript = false
         
     | 
| 
      
 405 
     | 
    
         
            +
                      if target[:target_type] === :module
         
     | 
| 
      
 406 
     | 
    
         
            +
                        generate_javascript = true
         
     | 
| 
      
 407 
     | 
    
         
            +
                      end
         
     | 
| 
       372 
408 
     | 
    
         | 
| 
       373 
     | 
    
         
            -
             
     | 
| 
      
 409 
     | 
    
         
            +
                      target_build_root = Pathname.new(manifest.target.project.project_root)
         
     | 
| 
      
 410 
     | 
    
         
            +
                      manifest.entries.each do |entry|
         
     | 
| 
      
 411 
     | 
    
         
            +
                        # Skip combined JS when it is a target that doesn't need it.
         
     | 
| 
      
 412 
     | 
    
         
            +
                        # We can't just skip all non-packed JS, because you can use sc_resource to split
         
     | 
| 
      
 413 
     | 
    
         
            +
                        # the JS out, and that won't work properly. :combine, likewise, is used for sc_resource.
         
     | 
| 
      
 414 
     | 
    
         
            +
                        # So, we skip the entry IF it is javascript.js--because that is how the pack task itself
         
     | 
| 
      
 415 
     | 
    
         
            +
                        # knows the difference.
         
     | 
| 
      
 416 
     | 
    
         
            +
                        next if not generate_javascript and entry[:filename] == 'javascript.js'
         
     | 
| 
      
 417 
     | 
    
         
            +
             
     | 
| 
      
 418 
     | 
    
         
            +
                        # For security, skip AND WARN about files which are not minified
         
     | 
| 
      
 419 
     | 
    
         
            +
                        if not SC.env[:dont_minify] and not allow_comments and entry[:entry_type] == :javascript and not entry[:minified]
         
     | 
| 
      
 420 
     | 
    
         
            +
                          SC.logger.fatal "SECURITY: Entry not minified: #{entry[:filename]}; target: #{target[:target_name]}"
         
     | 
| 
      
 421 
     | 
    
         
            +
                          SC.logger.fatal "All entries must be minified in a final build UNLESS --allow-commented-js argument is supplied."
         
     | 
| 
      
 422 
     | 
    
         
            +
                          exit(1)
         
     | 
| 
      
 423 
     | 
    
         
            +
                        end
         
     | 
| 
      
 424 
     | 
    
         
            +
             
     | 
| 
      
 425 
     | 
    
         
            +
                        dst = Pathname.new(entry.build_path).relative_path_from(target_build_root)
         
     | 
| 
      
 426 
     | 
    
         
            +
                        info "  #{entry.filename} -> #{dst}"
         
     | 
| 
      
 427 
     | 
    
         
            +
                        entry.build!
         
     | 
| 
      
 428 
     | 
    
         
            +
                      end
         
     | 
| 
      
 429 
     | 
    
         
            +
                    end
         
     | 
| 
       374 
430 
     | 
    
         
             
                  end
         
     | 
| 
       375 
431 
     | 
    
         | 
| 
       376 
432 
     | 
    
         
             
                  # Logs the contents of the passed file path to the logger
         
     | 
| 
         @@ -13,49 +13,70 @@ $to_html5_manifest_networks = [] 
     | 
|
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            module SC
         
     | 
| 
       15 
15 
     | 
    
         
             
              class Tools
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
       17 
17 
     | 
    
         
             
                desc "build [TARGET..]", "Builds one or more targets"
         
     | 
| 
       18 
     | 
    
         
            -
                 
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
                # Standard manifest options.  Used by build tool as well.
         
     | 
| 
      
 20 
     | 
    
         
            +
                method_option :languages, :type => :string,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  :desc => "The languages to build."
         
     | 
| 
      
 22 
     | 
    
         
            +
                  
         
     | 
| 
      
 23 
     | 
    
         
            +
                method_option :symlink, :default => false
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
      
 25 
     | 
    
         
            +
                method_option :buildroot, :type => :string,
         
     | 
| 
      
 26 
     | 
    
         
            +
                  :desc => "The path to build to."
         
     | 
| 
      
 27 
     | 
    
         
            +
                method_option :stageroot, :type => :string,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  :aliases => %w(--target -t),
         
     | 
| 
      
 29 
     | 
    
         
            +
                  :desc => "The path to stage to."
         
     | 
| 
      
 30 
     | 
    
         
            +
                method_option :format, :type => :string
         
     | 
| 
      
 31 
     | 
    
         
            +
                method_option :output, :type => :string
         
     | 
| 
      
 32 
     | 
    
         
            +
                method_option :all, :type => false
         
     | 
| 
      
 33 
     | 
    
         
            +
                method_option :build_numbers, :type => :string, :aliases => ['-B'],
         
     | 
| 
      
 34 
     | 
    
         
            +
                  :desc => "The identifier(s) for the build."
         
     | 
| 
      
 35 
     | 
    
         
            +
                method_option :include_required, :default => false, :aliases => '-r',
         
     | 
| 
      
 36 
     | 
    
         
            +
                  :desc => "Deprecated. All builds build dependencies."
         
     | 
| 
      
 37 
     | 
    
         
            +
                  
         
     | 
| 
      
 38 
     | 
    
         
            +
                
         
     | 
| 
       19 
39 
     | 
    
         
             
                method_option :entries, :type => :string
         
     | 
| 
       20 
     | 
    
         
            -
                method_option : 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                method_option : 
     | 
| 
      
 40 
     | 
    
         
            +
                method_option :whitelist, :type => :string,
         
     | 
| 
      
 41 
     | 
    
         
            +
                  :desc => "The whitelist to use when building. By default, Whitelist (if present)"
         
     | 
| 
      
 42 
     | 
    
         
            +
                method_option :blacklist, :type => :string,
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :desc => "The blacklist to use when building. By default, Blacklist (if present)"
         
     | 
| 
      
 44 
     | 
    
         
            +
                method_option :accept, :type => :string,
         
     | 
| 
      
 45 
     | 
    
         
            +
                  :desc => "The SproutCore Accept file to determine which files to include. By default, Accept (if present)"
         
     | 
| 
      
 46 
     | 
    
         
            +
                method_option :allow_commented_js, :type => :boolean,
         
     | 
| 
      
 47 
     | 
    
         
            +
                  :desc => "If supplied, commented JS will be allowed into the build."
         
     | 
| 
       23 
48 
     | 
    
         
             
                def build(*targets)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  if options.help
         
     | 
| 
      
 50 
     | 
    
         
            +
                    help('build')
         
     | 
| 
      
 51 
     | 
    
         
            +
                    return
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       24 
54 
     | 
    
         
             
                  t1 = Time.now
         
     | 
| 
       25 
55 
     | 
    
         
             
                  SC.logger.info  'Starting build process...'
         
     | 
| 
       26 
56 
     | 
    
         
             
                  # Copy some key props to the env
         
     | 
| 
      
 57 
     | 
    
         
            +
                  SC.env.whitelist_name = options.whitelist
         
     | 
| 
      
 58 
     | 
    
         
            +
                  SC.env.blacklist_name = options.blacklist
         
     | 
| 
      
 59 
     | 
    
         
            +
                  SC.env.accept_name    = options.accept
         
     | 
| 
       27 
60 
     | 
    
         
             
                  SC.env.build_prefix   = options.buildroot if options.buildroot
         
     | 
| 
       28 
61 
     | 
    
         
             
                  SC.env.staging_prefix = options.stageroot if options.stageroot
         
     | 
| 
       29 
62 
     | 
    
         
             
                  SC.env.use_symlink    = options.symlink
         
     | 
| 
       30 
     | 
    
         
            -
                  SC.env.clean          = options.clean
         
     | 
| 
       31 
63 
     | 
    
         | 
| 
       32 
64 
     | 
    
         
             
                  # Get entries option
         
     | 
| 
       33 
65 
     | 
    
         
             
                  entry_filters = nil
         
     | 
| 
       34 
66 
     | 
    
         
             
                  if options[:entries]
         
     | 
| 
       35 
67 
     | 
    
         
             
                    entry_filters = options[:entries].split(',')
         
     | 
| 
       36 
68 
     | 
    
         
             
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
                  
         
     | 
| 
      
 70 
     | 
    
         
            +
                  # We want Chance to clear files like sprites immediately after they're asked for, 
         
     | 
| 
      
 71 
     | 
    
         
            +
                  # because we'll only need them once during a build.
         
     | 
| 
      
 72 
     | 
    
         
            +
                  Chance.clear_files_immediately
         
     | 
| 
      
 73 
     | 
    
         
            +
                  
         
     | 
| 
       38 
74 
     | 
    
         
             
                  # Get the manifests to build
         
     | 
| 
       39 
     | 
    
         
            -
                  manifests = build_manifests(*targets)
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  if SC.env.clean
         
     | 
| 
       45 
     | 
    
         
            -
                    manifests.each do |manifest|
         
     | 
| 
       46 
     | 
    
         
            -
                      build_root = manifest.target.build_root
         
     | 
| 
       47 
     | 
    
         
            -
                      info "Cleaning #{build_root}"
         
     | 
| 
       48 
     | 
    
         
            -
                      FileUtils.rm_r(build_root) if File.directory?(build_root)
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                      staging_root = manifest.target.staging_root
         
     | 
| 
       51 
     | 
    
         
            -
                      info "Cleaning #{staging_root}"
         
     | 
| 
       52 
     | 
    
         
            -
                      FileUtils.rm_r(staging_root) if File.directory?(staging_root)
         
     | 
| 
       53 
     | 
    
         
            -
                    end
         
     | 
| 
       54 
     | 
    
         
            -
                  end
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                  # Now build entries for each manifest...
         
     | 
| 
       57 
     | 
    
         
            -
                  manifests.each do |manifest|
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
      
 75 
     | 
    
         
            +
                  manifests = build_manifests(*targets) do |manifest|
         
     | 
| 
      
 76 
     | 
    
         
            +
                    # This is our own logic to prevent processing a manifest twice
         
     | 
| 
      
 77 
     | 
    
         
            +
                    next if manifest[:built_by_builder]
         
     | 
| 
      
 78 
     | 
    
         
            +
                    manifest[:built_by_builder] = true
         
     | 
| 
      
 79 
     | 
    
         
            +
                    
         
     | 
| 
       59 
80 
     | 
    
         
             
                    # get entries.  If "entries" option was specified, use to filter
         
     | 
| 
       60 
81 
     | 
    
         
             
                    # filename.  Must match end of filename.
         
     | 
| 
       61 
82 
     | 
    
         
             
                    entries = manifest.entries
         
     | 
| 
         @@ -71,24 +92,49 @@ module SC 
     | 
|
| 
       71 
92 
     | 
    
         
             
                    end
         
     | 
| 
       72 
93 
     | 
    
         | 
| 
       73 
94 
     | 
    
         
             
                    # if there are entries to build, log and build
         
     | 
| 
       74 
     | 
    
         
            -
                     
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                       
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
      
 95 
     | 
    
         
            +
                    build_entries_for_manifest manifest, options.allow_commented_js
         
     | 
| 
      
 96 
     | 
    
         
            +
                    
         
     | 
| 
      
 97 
     | 
    
         
            +
                    # Build dependencies
         
     | 
| 
      
 98 
     | 
    
         
            +
                    target = manifest.target
         
     | 
| 
      
 99 
     | 
    
         
            +
                    required = target.expand_required_targets :theme => true,
         
     | 
| 
      
 100 
     | 
    
         
            +
                      :debug => target.config.load_debug,
         
     | 
| 
      
 101 
     | 
    
         
            +
                      :tests => target.config.load_tests,
         
     | 
| 
      
 102 
     | 
    
         
            +
             
         
     | 
| 
      
 103 
     | 
    
         
            +
                      # Modules are not 'required' technically, as they may be loaded
         
     | 
| 
      
 104 
     | 
    
         
            +
                      # lazily. However, we want to know all targets that should be built,
         
     | 
| 
      
 105 
     | 
    
         
            +
                      # so we'll include modules as well.
         
     | 
| 
      
 106 
     | 
    
         
            +
                      :modules => true
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                    
         
     | 
| 
      
 109 
     | 
    
         
            +
                    required.each {|t| 
         
     | 
| 
      
 110 
     | 
    
         
            +
                      m = t.manifest_for (manifest.variation)
         
     | 
| 
      
 111 
     | 
    
         
            +
                      
         
     | 
| 
      
 112 
     | 
    
         
            +
                      
         
     | 
| 
      
 113 
     | 
    
         
            +
                      # And, yes, the same as above. We're just building entries for all required targets.
         
     | 
| 
      
 114 
     | 
    
         
            +
                      # We're also going to mark them as fully-built so they don't get built again.
         
     | 
| 
      
 115 
     | 
    
         
            +
                      next if m[:built_by_builder]
         
     | 
| 
      
 116 
     | 
    
         
            +
                      m[:built_by_builder] = true
         
     | 
| 
      
 117 
     | 
    
         
            +
                      m.build!
         
     | 
| 
      
 118 
     | 
    
         
            +
                      
         
     | 
| 
      
 119 
     | 
    
         
            +
                      build_entries_for_manifest m, options.allow_commented_js
         
     | 
| 
      
 120 
     | 
    
         
            +
                      
         
     | 
| 
      
 121 
     | 
    
         
            +
                      
         
     | 
| 
      
 122 
     | 
    
         
            +
                    }
         
     | 
| 
      
 123 
     | 
    
         
            +
                    
         
     | 
| 
      
 124 
     | 
    
         
            +
                    # Clean up
         
     | 
| 
      
 125 
     | 
    
         
            +
                    manifest.reset!
         
     | 
| 
      
 126 
     | 
    
         
            +
                    Chance::ChanceFactory.clear_instances
         
     | 
| 
       85 
127 
     | 
    
         
             
                  end
         
     | 
| 
       86 
128 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                   
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
                   
     | 
| 
      
 129 
     | 
    
         
            +
                  # The HTML5 manifest generator does not work properly; it is unstable (can cause crashes)
         
     | 
| 
      
 130 
     | 
    
         
            +
                  # and won't pick up modules. We need an alternative implemenation, preferably one that uses
         
     | 
| 
      
 131 
     | 
    
         
            +
                  # Abbot's own manifests to figure out what files are required. This is non-trivial, however.
         
     | 
| 
      
 132 
     | 
    
         
            +
                  #
         
     | 
| 
      
 133 
     | 
    
         
            +
                  # if $to_html5_manifest.length > 0
         
     | 
| 
      
 134 
     | 
    
         
            +
                  #   $to_html5_manifest.each do |entry|
         
     | 
| 
      
 135 
     | 
    
         
            +
                  #     SC::Helpers::HTML5Manifest.new.build(entry)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 137 
     | 
    
         
            +
                  # end
         
     | 
| 
       92 
138 
     | 
    
         | 
| 
       93 
139 
     | 
    
         
             
                  SC::Helpers::Minifier.wait
         
     | 
| 
       94 
140 
     | 
    
         | 
| 
         @@ -98,5 +144,7 @@ module SC 
     | 
|
| 
       98 
144 
     | 
    
         
             
                  seconds = seconds%60
         
     | 
| 
       99 
145 
     | 
    
         
             
                  puts 'Build time '+minutes.floor.to_s+ ' minutes '+seconds.floor.to_s+' secs'
         
     | 
| 
       100 
146 
     | 
    
         
             
                end
         
     | 
| 
      
 147 
     | 
    
         
            +
                
         
     | 
| 
       101 
148 
     | 
    
         
             
              end
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
       102 
150 
     | 
    
         
             
            end
         
     |