sproutit-sproutcore 1.0.0.20090407205609
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/Buildfile +115 -0
- data/History.txt +7 -0
- data/README.txt +102 -0
- data/Rakefile +54 -0
- data/Todo.txt +1 -0
- data/bin/sc-build +13 -0
- data/bin/sc-build-number +13 -0
- data/bin/sc-gen +13 -0
- data/bin/sc-init +13 -0
- data/bin/sc-manifest +13 -0
- data/bin/sc-server +13 -0
- data/bin/sproutcore +14 -0
- data/buildtasks/build.rake +73 -0
- data/buildtasks/entry.rake +59 -0
- data/buildtasks/manifest.rake +469 -0
- data/buildtasks/render.rake +21 -0
- data/buildtasks/target.rake +42 -0
- data/gen/Buildfile +16 -0
- data/gen/app/Buildfile +36 -0
- data/gen/app/README +1 -0
- data/gen/app/USAGE +13 -0
- data/gen/app/templates/apps/{target_name}/core.js +27 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/loading.rhtml +9 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/main_page.js +22 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/strings.js +15 -0
- data/gen/app/templates/apps/{target_name}/main.js +30 -0
- data/gen/controller/Buildfile +18 -0
- data/gen/controller/README +1 -0
- data/gen/controller/USAGE +13 -0
- data/gen/controller/templates/controllers/{filename}.js +18 -0
- data/gen/controller/templates/tests/controllers/{filename}.js +15 -0
- data/gen/framework/Buildfile +36 -0
- data/gen/framework/README +1 -0
- data/gen/framework/USAGE +13 -0
- data/gen/framework/templates/frameworks/{target_name}/core.js +21 -0
- data/gen/framework/templates/frameworks/{target_name}/english.lproj/strings.js +15 -0
- data/gen/language/Buildfile +26 -0
- data/gen/language/README +1 -0
- data/gen/language/USAGE +13 -0
- data/gen/language/templates/{filename}/strings.js +14 -0
- data/gen/model/Buildfile +16 -0
- data/gen/model/README +1 -0
- data/gen/model/USAGE +15 -0
- data/gen/model/templates/fixtures/{filename}.js +35 -0
- data/gen/model/templates/models/{filename}.js +19 -0
- data/gen/model/templates/tests/models/{filename}.js +15 -0
- data/gen/project/Buildfile +45 -0
- data/gen/project/INIT +3 -0
- data/gen/project/README +1 -0
- data/gen/project/USAGE +2 -0
- data/gen/project/templates/{filename}/Buildfile +7 -0
- data/gen/project/templates/{filename}/README +7 -0
- data/gen/test/Buildfile +25 -0
- data/gen/test/README +1 -0
- data/gen/test/USAGE +12 -0
- data/gen/test/templates/tests/{filename}.js +15 -0
- data/gen/theme/Buildfile +36 -0
- data/gen/theme/README +1 -0
- data/gen/theme/USAGE +13 -0
- data/gen/theme/templates/themes/{target_name}/english.lproj/strings.js +15 -0
- data/gen/view/Buildfile +18 -0
- data/gen/view/README +1 -0
- data/gen/view/USAGE +13 -0
- data/gen/view/templates/tests/views/{filename}.js +15 -0
- data/gen/view/templates/views/{filename}.js +18 -0
- data/lib/sproutcore.rb +130 -0
- data/lib/sproutcore/builders/base.rb +79 -0
- data/lib/sproutcore/builders/combine.rb +37 -0
- data/lib/sproutcore/builders/html.rb +177 -0
- data/lib/sproutcore/builders/javascript.rb +55 -0
- data/lib/sproutcore/builders/minify.rb +67 -0
- data/lib/sproutcore/builders/sass.rb +55 -0
- data/lib/sproutcore/builders/strings.rb +44 -0
- data/lib/sproutcore/builders/stylesheet.rb +40 -0
- data/lib/sproutcore/builders/test.rb +58 -0
- data/lib/sproutcore/builders/test_index.rb +26 -0
- data/lib/sproutcore/buildfile.rb +483 -0
- data/lib/sproutcore/buildfile/build_task.rb +33 -0
- data/lib/sproutcore/buildfile/buildfile_dsl.rb +162 -0
- data/lib/sproutcore/buildfile/cloneable.rb +34 -0
- data/lib/sproutcore/buildfile/early_time.rb +29 -0
- data/lib/sproutcore/buildfile/invocation_chain.rb +64 -0
- data/lib/sproutcore/buildfile/namespace.rb +33 -0
- data/lib/sproutcore/buildfile/string_ext.rb +198 -0
- data/lib/sproutcore/buildfile/task.rb +304 -0
- data/lib/sproutcore/buildfile/task_arguments.rb +86 -0
- data/lib/sproutcore/buildfile/task_manager.rb +193 -0
- data/lib/sproutcore/deprecated/view_helper.rb +662 -0
- data/lib/sproutcore/helpers/capture_helper.rb +30 -0
- data/lib/sproutcore/helpers/cssmin.rb +202 -0
- data/lib/sproutcore/helpers/dom_id_helper.rb +21 -0
- data/lib/sproutcore/helpers/entry_sorter.rb +105 -0
- data/lib/sproutcore/helpers/packed_optimizer.rb +102 -0
- data/lib/sproutcore/helpers/static_helper.rb +268 -0
- data/lib/sproutcore/helpers/tag_helper.rb +117 -0
- data/lib/sproutcore/helpers/text_helper.rb +303 -0
- data/lib/sproutcore/models/generator.rb +493 -0
- data/lib/sproutcore/models/hash_struct.rb +109 -0
- data/lib/sproutcore/models/manifest.rb +342 -0
- data/lib/sproutcore/models/manifest_entry.rb +232 -0
- data/lib/sproutcore/models/project.rb +270 -0
- data/lib/sproutcore/models/target.rb +403 -0
- data/lib/sproutcore/rack/builder.rb +269 -0
- data/lib/sproutcore/rack/dev.rb +51 -0
- data/lib/sproutcore/rack/docs.rb +24 -0
- data/lib/sproutcore/rack/proxy.rb +92 -0
- data/lib/sproutcore/rack/service.rb +141 -0
- data/lib/sproutcore/rack/test_runner.rb +24 -0
- data/lib/sproutcore/render_engines/erubis.rb +55 -0
- data/lib/sproutcore/render_engines/haml.rb +39 -0
- data/lib/sproutcore/tools.rb +311 -0
- data/lib/sproutcore/tools/build.rb +80 -0
- data/lib/sproutcore/tools/build_number.rb +23 -0
- data/lib/sproutcore/tools/gen.rb +99 -0
- data/lib/sproutcore/tools/init.rb +40 -0
- data/lib/sproutcore/tools/manifest.rb +84 -0
- data/lib/sproutcore/tools/server.rb +45 -0
- data/spec/buildtasks/build/copy_spec.rb +60 -0
- data/spec/buildtasks/build/spec_helper.rb +36 -0
- data/spec/buildtasks/manifest/catalog_spec.rb +48 -0
- data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +125 -0
- data/spec/buildtasks/manifest/localize_spec.rb +97 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +246 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +87 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +175 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +65 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +70 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +152 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +98 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +64 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +163 -0
- data/spec/buildtasks/manifest/prepare_spec.rb +43 -0
- data/spec/buildtasks/manifest/spec_helper.rb +35 -0
- data/spec/buildtasks/target_spec.rb +214 -0
- data/spec/fixtures/builder_tests/Buildfile +15 -0
- data/spec/fixtures/builder_tests/apps/combine_test/a.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/b.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/c.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +2 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +15 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +4 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +7 -0
- data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +3 -0
- data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +8 -0
- data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +9 -0
- data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +12 -0
- data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +3 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +4 -0
- data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +1 -0
- data/spec/fixtures/buildfiles/basic/Buildfile +16 -0
- data/spec/fixtures/buildfiles/basic/task_module.rake +6 -0
- data/spec/fixtures/buildfiles/installed/Buildfile +7 -0
- data/spec/fixtures/buildfiles/installed/Buildfile2 +5 -0
- data/spec/fixtures/buildfiles/project_test/Buildfile +4 -0
- data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +2 -0
- data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/Buildfile +1 -0
- data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
- data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/Buildfile +8 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +5 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/nested/Buildfile +8 -0
- data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +1 -0
- data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/1.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/B.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/c.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/core.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +1 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/a.js +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/b.js +3 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/c.js +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +1 -0
- data/spec/fixtures/real_world/Buildfile +12 -0
- data/spec/fixtures/real_world/apps/account/README +1 -0
- data/spec/fixtures/real_world/apps/calendar/README +1 -0
- data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +1 -0
- data/spec/fixtures/real_world/apps/files/README +1 -0
- data/spec/fixtures/real_world/apps/mail/README +1 -0
- data/spec/fixtures/real_world/apps/mobile_photos/README +1 -0
- data/spec/fixtures/real_world/apps/photos/README +1 -0
- data/spec/fixtures/real_world/apps/uploader/README +1 -0
- data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +26 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/README +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +6 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +3 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +6 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +1 -0
- data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
- data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +1 -0
- data/spec/fixtures/recursive_project/Buildfile +8 -0
- data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
- data/spec/lib/builders/combine_spec.rb +67 -0
- data/spec/lib/builders/html_spec.rb +577 -0
- data/spec/lib/builders/javascript_spec.rb +81 -0
- data/spec/lib/builders/sass_spec.rb +43 -0
- data/spec/lib/builders/spec_helper.rb +30 -0
- data/spec/lib/builders/strings_spec.rb +52 -0
- data/spec/lib/builders/stylesheet_spec.rb +63 -0
- data/spec/lib/builders/test_index_spec.rb +44 -0
- data/spec/lib/builders/test_spec.rb +135 -0
- data/spec/lib/buildfile/config_for_spec.rb +81 -0
- data/spec/lib/buildfile/define_spec.rb +59 -0
- data/spec/lib/buildfile/dup_spec.rb +65 -0
- data/spec/lib/buildfile/invoke_spec.rb +130 -0
- data/spec/lib/buildfile/load_spec.rb +49 -0
- data/spec/lib/buildfile/task/dup_spec.rb +55 -0
- data/spec/lib/buildfile/task_defined_spec.rb +17 -0
- data/spec/lib/buildfile_commands/build_task_spec.rb +19 -0
- data/spec/lib/buildfile_commands/config_spec.rb +97 -0
- data/spec/lib/buildfile_commands/import_spec.rb +17 -0
- data/spec/lib/buildfile_commands/namespace_spec.rb +18 -0
- data/spec/lib/buildfile_commands/proxies_spec.rb +38 -0
- data/spec/lib/buildfile_commands/replace_task_spec.rb +29 -0
- data/spec/lib/buildfile_commands/task_spec.rb +36 -0
- data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +26 -0
- data/spec/lib/models/hash_struct/deep_clone_spec.rb +27 -0
- data/spec/lib/models/hash_struct/has_options_spec.rb +32 -0
- data/spec/lib/models/hash_struct/hash_spec.rb +64 -0
- data/spec/lib/models/hash_struct/merge_spec.rb +26 -0
- data/spec/lib/models/hash_struct/method_missing.rb +41 -0
- data/spec/lib/models/manifest/add_entry_spec.rb +36 -0
- data/spec/lib/models/manifest/add_transform_spec.rb +90 -0
- data/spec/lib/models/manifest/build_spec.rb +78 -0
- data/spec/lib/models/manifest/entry_for_spec.rb +94 -0
- data/spec/lib/models/manifest/find_entry.rb +84 -0
- data/spec/lib/models/manifest/prepare_spec.rb +62 -0
- data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +31 -0
- data/spec/lib/models/manifest_entry/prepare_spec.rb +54 -0
- data/spec/lib/models/project/add_target_spec.rb +44 -0
- data/spec/lib/models/project/buildfile_spec.rb +35 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +77 -0
- data/spec/lib/models/project/load_nearest_project_spec.rb +23 -0
- data/spec/lib/models/project/target_for_spec.rb +33 -0
- data/spec/lib/models/project/targets_spec.rb +62 -0
- data/spec/lib/models/target/compute_build_number_spec.rb +125 -0
- data/spec/lib/models/target/config_spec.rb +30 -0
- data/spec/lib/models/target/expand_required_targets_spec.rb +48 -0
- data/spec/lib/models/target/installed_languages_spec.rb +47 -0
- data/spec/lib/models/target/lproj_for_spec.rb +38 -0
- data/spec/lib/models/target/manifest_for_spec.rb +42 -0
- data/spec/lib/models/target/parent_target_spec.rb +21 -0
- data/spec/lib/models/target/prepare_spec.rb +53 -0
- data/spec/lib/models/target/required_targets_spec.rb +119 -0
- data/spec/lib/models/target/target_for_spec.rb +56 -0
- data/spec/lib/tools/build_number_spec.rb +28 -0
- data/spec/lib/tools/gen_spec.rb +207 -0
- data/spec/lib/tools/tools_spec.rb +78 -0
- data/spec/spec_helper.rb +138 -0
- data/sproutcore.gemspec +47 -0
- data/vendor/github_gem_lint.rb +22 -0
- data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
- metadata +1084 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# SC::ManifestEntry Buildtasks
|
3
|
+
# copyright 2008, Sprout Systems, Inc. and Apple, Inc. all rights reserved
|
4
|
+
# ===========================================================================
|
5
|
+
|
6
|
+
# Tasks invoked while building ManifestEntry objects. You can override these
|
7
|
+
# tasks in your buildfiles.
|
8
|
+
namespace :entry do
|
9
|
+
|
10
|
+
# Invoked whenever a new entry is added. Gives you a chance to fill in any
|
11
|
+
# standard properties. The default implementation ensures that the entry
|
12
|
+
# has at least a source_path, build_path, staging_path, url and build_task
|
13
|
+
#
|
14
|
+
# With this task in place, you can build an entry by simply providing a
|
15
|
+
# filename and, optionally a source_path or source_entries.
|
16
|
+
task_options :log => :none # no logging -- too much detail
|
17
|
+
task :prepare do
|
18
|
+
filename = ENTRY.filename
|
19
|
+
raise "All entries must have a filename!" if filename.nil?
|
20
|
+
|
21
|
+
filename_parts = filename.split('/')
|
22
|
+
|
23
|
+
# If this is a composite entry, then the source_paths array should
|
24
|
+
# contain the staging_path from the source_entries. The source_path
|
25
|
+
# is simply the first source_paths.
|
26
|
+
if ENTRY.composite?
|
27
|
+
ENTRY.source_entries ||= [ENTRY.source_entry].compact
|
28
|
+
ENTRY.source_paths ||= ENTRY.source_entries.map { |e| e.staging_path }
|
29
|
+
ENTRY.source_path ||= ENTRY.source_paths.first
|
30
|
+
ENTRY.source_entry ||= ENTRY.source_entries.first
|
31
|
+
|
32
|
+
# Otherwise, the source_path is where we will pull from and source_paths
|
33
|
+
# is simply the source_path in an array.
|
34
|
+
else
|
35
|
+
ENTRY.source_path ||= File.join(MANIFEST.source_root, filename_parts)
|
36
|
+
ENTRY.source_paths ||= [ENTRY.source_path]
|
37
|
+
end
|
38
|
+
|
39
|
+
# Construct some easier paths if needed
|
40
|
+
ENTRY.build_path ||= File.join(MANIFEST.build_root, filename_parts)
|
41
|
+
ENTRY.url ||= [MANIFEST.url_root, filename_parts].join('/')
|
42
|
+
|
43
|
+
# Fill in a default build task
|
44
|
+
ENTRY.build_task ||= 'build:copy'
|
45
|
+
|
46
|
+
ENTRY.ext = File.extname(filename)[1..-1]
|
47
|
+
|
48
|
+
# If the build_task is build:copy, make the staging path equal the
|
49
|
+
# source_root. This is an optimization that will avoid unnecessary
|
50
|
+
# copying. All other build_tasks we build a staging path from the root.
|
51
|
+
if ENTRY.build_task.to_s == 'build:copy'
|
52
|
+
ENTRY.staging_path ||= ENTRY.source_path
|
53
|
+
else
|
54
|
+
ENTRY.staging_path ||= MANIFEST.unique_staging_path(File.join(MANIFEST.staging_root, filename_parts))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
@@ -0,0 +1,469 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# SC::Manifest Buildtasks
|
3
|
+
# copyright 2008, Sprout Systems, Inc. and Apple, Inc. all rights reserved
|
4
|
+
# ===========================================================================
|
5
|
+
|
6
|
+
# Tasks invoked while building Manifest objects. You can override these
|
7
|
+
# tasks in your buildfiles.
|
8
|
+
namespace :manifest do
|
9
|
+
|
10
|
+
desc "Invoked just before a manifest object is built to setup standard properties"
|
11
|
+
task :prepare do
|
12
|
+
require 'tempfile'
|
13
|
+
|
14
|
+
# make sure a language was set
|
15
|
+
MANIFEST.language ||= :en
|
16
|
+
|
17
|
+
# build_root is target.build_root + language + build_number
|
18
|
+
MANIFEST.build_root = File.join(TARGET.build_root,
|
19
|
+
MANIFEST.language.to_s, TARGET.build_number.to_s)
|
20
|
+
|
21
|
+
# staging_root is target.staging_root + language + build_number
|
22
|
+
MANIFEST.staging_root = File.join(TARGET.staging_root,
|
23
|
+
MANIFEST.language.to_s, TARGET.build_number.to_s)
|
24
|
+
|
25
|
+
# url_root
|
26
|
+
MANIFEST.url_root =
|
27
|
+
[TARGET.url_root, MANIFEST.language, TARGET.build_number].join('/')
|
28
|
+
|
29
|
+
# index_root
|
30
|
+
MANIFEST.index_root =
|
31
|
+
[TARGET.index_root, MANIFEST.language, TARGET.build_number].join('/')
|
32
|
+
|
33
|
+
# source_root
|
34
|
+
MANIFEST.source_root = TARGET.source_root
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Actually builds a manifest. This will catalog all entries and then filter them"
|
38
|
+
task :build => %w(catalog hide_buildfiles localize prepare_build_tasks:all)
|
39
|
+
|
40
|
+
desc "first step in building a manifest, this adds a simple copy file entry for every file in the source"
|
41
|
+
task :catalog do |t|
|
42
|
+
source_root = TARGET.source_root
|
43
|
+
Dir.glob(File.join(source_root, '**', '*')).each do |path|
|
44
|
+
next if !File.exist?(path) || File.directory?(path)
|
45
|
+
next if TARGET.target_directory?(path)
|
46
|
+
|
47
|
+
# cut source root out to make filename. make sure path separators are /
|
48
|
+
filename = path.sub /^#{Regexp.escape source_root}\//, ''
|
49
|
+
filename = filename.split(::File::SEPARATOR).join('/')
|
50
|
+
MANIFEST.add_entry filename, :original => true # entry:prepare will fill in the rest
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "hides structural files that do not belong in build include Buildfiles and debug or fixtures if turned off"
|
55
|
+
task :hide_buildfiles => :catalog do
|
56
|
+
# these directories are to be excluded unless CONFIG.load_"dirname" = true
|
57
|
+
dirnames = %w(debug tests fixtures protocols).reject do |k|
|
58
|
+
CONFIG["load_#{k}"]
|
59
|
+
end
|
60
|
+
|
61
|
+
# loop through entries and hide those that do not below...
|
62
|
+
MANIFEST.entries.each do |entry|
|
63
|
+
|
64
|
+
# if in /dirname or /foo.lproj/dirname -- hide it!
|
65
|
+
dirnames.each do |dirname|
|
66
|
+
if entry.filename =~ /^(([^\/]+)\.lproj\/)?#{dirname}\/.+$/
|
67
|
+
entry.hide!
|
68
|
+
next
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# otherwise, allow if inside lproj
|
73
|
+
next if entry.localized? || entry.filename =~ /^.+\.lproj\/.+$/
|
74
|
+
|
75
|
+
# allow if in tests, fixtures or debug as well...
|
76
|
+
next if entry.filename =~ /^(tests|fixtures|debug|protocols)\/.+$/
|
77
|
+
|
78
|
+
# or skip if ext not js
|
79
|
+
entry.hide! if entry.ext != 'js'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
desc "localizes files. reject any files from other languages"
|
84
|
+
task :localize => [:catalog, :hide_buildfiles] do
|
85
|
+
seen = {} # already seen entries...
|
86
|
+
preferred_language = TARGET.config.preferred_language || :en
|
87
|
+
|
88
|
+
MANIFEST.entries.each do |entry|
|
89
|
+
|
90
|
+
# Is a localized resource!
|
91
|
+
if entry.filename =~ /^([^\/]+)\.lproj\/(.+)$/
|
92
|
+
entry.language = (SC::Target::LONG_LANGUAGE_MAP[$1.to_s.downcase.to_sym]) || $1.to_sym
|
93
|
+
entry.localized = true
|
94
|
+
|
95
|
+
# remove .lproj dir from build paths as well..
|
96
|
+
lang_dir = "#{$1}.lproj/"
|
97
|
+
sub_str = (entry.ext == 'js') ? 'lproj/' : ''
|
98
|
+
entry.filename = entry.filename.sub(lang_dir, sub_str)
|
99
|
+
entry.build_path = entry.build_path.sub(lang_dir, sub_str)
|
100
|
+
entry.url = entry.url.sub(lang_dir, sub_str)
|
101
|
+
|
102
|
+
# if this is part of the current language, always include...
|
103
|
+
# hide any preferred_language entry...
|
104
|
+
if entry.language == MANIFEST.language
|
105
|
+
seen[entry.filename].hide! if seen[entry.filename]
|
106
|
+
|
107
|
+
# if this is a preferred_language, hide unless we've seen one
|
108
|
+
elsif entry.language == preferred_language
|
109
|
+
if seen[entry.filename]
|
110
|
+
entry.hide!
|
111
|
+
else
|
112
|
+
seen[entry.filename] = entry
|
113
|
+
end
|
114
|
+
|
115
|
+
# Otherwise, hide it...
|
116
|
+
else
|
117
|
+
entry.hide!
|
118
|
+
end
|
119
|
+
|
120
|
+
# Not a localized resource
|
121
|
+
else
|
122
|
+
entry.language = MANIFEST.language
|
123
|
+
entry.localized = false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
namespace :prepare_build_tasks do
|
129
|
+
|
130
|
+
desc "main entrypoint for preparing all build tasks. This should invoke all needed tasks"
|
131
|
+
task :all => %w(css javascript sass combine minify html strings tests packed)
|
132
|
+
|
133
|
+
desc "executes prerequisites needed before one of the subtasks can be invoked. All subtasks that have this as a prereq"
|
134
|
+
task :setup => %w(manifest:catalog manifest:hide_buildfiles manifest:localize)
|
135
|
+
|
136
|
+
desc "create builder tasks for all unit tests based on file extension."
|
137
|
+
task :tests => :setup do
|
138
|
+
|
139
|
+
# Generate test entries
|
140
|
+
test_entries = []
|
141
|
+
entries_by_dirname = {} # for building composites...
|
142
|
+
MANIFEST.entries.each do |entry|
|
143
|
+
next unless entry.filename =~ /^tests\//
|
144
|
+
|
145
|
+
# if this is a js file, add js transform first to handle sc_static()
|
146
|
+
# etc.
|
147
|
+
if entry.ext == 'js'
|
148
|
+
entry = MANIFEST.add_transform entry,
|
149
|
+
:build_task => 'build:javascript'
|
150
|
+
end
|
151
|
+
|
152
|
+
# Add transform to build into test.
|
153
|
+
test_entries << MANIFEST.add_transform(entry,
|
154
|
+
:build_task => "build:test",
|
155
|
+
:entry_type => :test,
|
156
|
+
:ext => :html)
|
157
|
+
|
158
|
+
# Strip off dirnames, saving each by dirname...
|
159
|
+
dirname = entry.filename
|
160
|
+
while (dirname = dirname.sub(/\/?[^\/]+$/,'')).size > 0
|
161
|
+
(entries_by_dirname[dirname] ||= []) << entry
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
# Generate composite entries for each directory...
|
166
|
+
entries_by_dirname.each do |dirname, entries|
|
167
|
+
filename = "#{dirname}.html"
|
168
|
+
MANIFEST.add_composite filename,
|
169
|
+
:build_task => "build:test",
|
170
|
+
:entry_type => :test,
|
171
|
+
:ext => :html,
|
172
|
+
:source_entries => entries,
|
173
|
+
:hide_entries => false
|
174
|
+
end
|
175
|
+
|
176
|
+
# Add summary entry
|
177
|
+
if CONFIG.load_tests
|
178
|
+
MANIFEST.add_entry 'tests/-index.json',
|
179
|
+
:composite => true,
|
180
|
+
:source_entries => test_entries,
|
181
|
+
:build_task => 'build:test_index',
|
182
|
+
:entry_type => :resource
|
183
|
+
end
|
184
|
+
end
|
185
|
+
task :javascript => :tests # IMPORTANT! to avoid JS including unit tests.
|
186
|
+
task :html => :tests # IMPORTANT! to avoid HTML including tests
|
187
|
+
|
188
|
+
desc "scans for javascript files, annotates them and prepares combined entries for each output target"
|
189
|
+
task :javascript => :setup do
|
190
|
+
# select all original entries with with ext of css
|
191
|
+
entries = MANIFEST.entries.select do |e|
|
192
|
+
e.original? && e.ext == 'js'
|
193
|
+
end
|
194
|
+
|
195
|
+
# add transform & tag with build directives.
|
196
|
+
entries.each do |entry|
|
197
|
+
entry = MANIFEST.add_transform entry,
|
198
|
+
:filename => ['source', entry.filename].join('/'),
|
199
|
+
:build_path => File.join(MANIFEST.build_root, 'source', entry.filename),
|
200
|
+
:url => [MANIFEST.url_root, 'source', entry.filename].join("/"),
|
201
|
+
:build_task => 'build:javascript',
|
202
|
+
:resource => 'javascript',
|
203
|
+
:entry_type => :javascript
|
204
|
+
entry.discover_build_directives!
|
205
|
+
end
|
206
|
+
|
207
|
+
end
|
208
|
+
|
209
|
+
desc "scans for css files, creates a transform and annotates them"
|
210
|
+
task :css => :setup do
|
211
|
+
|
212
|
+
# select all original entries with with ext of css
|
213
|
+
entries = MANIFEST.entries.select do |e|
|
214
|
+
e.original? && e.ext == 'css'
|
215
|
+
end
|
216
|
+
|
217
|
+
# add transform & tag with build directives.
|
218
|
+
entries.each do |entry|
|
219
|
+
entry = MANIFEST.add_transform entry,
|
220
|
+
:filename => ['source', entry.filename].join('/'),
|
221
|
+
:build_path => File.join(MANIFEST.build_root, 'source', entry.filename),
|
222
|
+
:url => [MANIFEST.url_root, 'source', entry.filename].join("/"),
|
223
|
+
:build_task => 'build:css',
|
224
|
+
:resource => 'stylesheet',
|
225
|
+
:entry_type => :css
|
226
|
+
entry.discover_build_directives!
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
desc "generates combined entries for javascript and css"
|
231
|
+
task :combine => %w(setup css javascript sass) do
|
232
|
+
|
233
|
+
# sort entries...
|
234
|
+
css_entries = {}
|
235
|
+
javascript_entries = {}
|
236
|
+
MANIFEST.entries.each do |entry|
|
237
|
+
# we can only combine entries with a resource property.
|
238
|
+
next if entry.resource.nil?
|
239
|
+
|
240
|
+
# look for CSS or JS type entries
|
241
|
+
case entry.entry_type
|
242
|
+
when :css
|
243
|
+
(css_entries[entry.resource] ||= []) << entry
|
244
|
+
when :javascript
|
245
|
+
(javascript_entries[entry.resource] ||= []) << entry
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
# build combined CSS entry
|
250
|
+
css_entries.each do |resource_name, entries|
|
251
|
+
MANIFEST.add_composite resource_name.ext('css'),
|
252
|
+
:build_task => 'build:combine',
|
253
|
+
:source_entries => entries,
|
254
|
+
:hide_entries => CONFIG.combine_stylesheets,
|
255
|
+
:ordered_entries => SC::Helpers::EntrySorter.sort(entries),
|
256
|
+
:entry_type => :css,
|
257
|
+
:combined => true
|
258
|
+
end
|
259
|
+
|
260
|
+
# build combined JS entry
|
261
|
+
javascript_entries.each do |resource_name, entries|
|
262
|
+
resource_name = resource_name.ext('js')
|
263
|
+
pf = (resource_name == 'javascript.js') ? %w(source/lproj/strings.js source/core.js source/utils.js) : []
|
264
|
+
MANIFEST.add_composite resource_name,
|
265
|
+
:build_task => 'build:combine',
|
266
|
+
:source_entries => entries,
|
267
|
+
:hide_entries => CONFIG.combine_javascript,
|
268
|
+
:ordered_entries => SC::Helpers::EntrySorter.sort(entries, pf),
|
269
|
+
:entry_type => :javascript,
|
270
|
+
:combined => true
|
271
|
+
end
|
272
|
+
|
273
|
+
end
|
274
|
+
|
275
|
+
desc "adds a packed entry including javascript.js from required targets"
|
276
|
+
task :packed => %w(setup combine) do
|
277
|
+
|
278
|
+
# don't add packed entries for apps.
|
279
|
+
if TARGET.target_type != :app
|
280
|
+
# Handle JavaScript version. get all required targets and find their
|
281
|
+
# javascript.js. Build packed js from that.
|
282
|
+
targets = TARGET.expand_required_targets + [TARGET]
|
283
|
+
entries = targets.map do |target|
|
284
|
+
m = target.manifest_for(MANIFEST.variation).build!
|
285
|
+
|
286
|
+
# need to find the version that is not minified
|
287
|
+
entry = m.entry_for('javascript.js')
|
288
|
+
entry = entry.source_entry while entry && entry.minified?
|
289
|
+
entry
|
290
|
+
end
|
291
|
+
|
292
|
+
entries.compact!
|
293
|
+
MANIFEST.add_composite 'javascript-packed.js',
|
294
|
+
:build_task => 'build:combine',
|
295
|
+
:source_entries => entries,
|
296
|
+
:hide_entries => false,
|
297
|
+
:entry_type => :javascript,
|
298
|
+
:combined => true,
|
299
|
+
:ordered_entries => entries, # orderd by load order
|
300
|
+
:targets => targets,
|
301
|
+
:packed => true
|
302
|
+
|
303
|
+
end
|
304
|
+
end
|
305
|
+
task :minify => :packed # IMPORTANT: don't want minified version
|
306
|
+
|
307
|
+
desc "adds a packed entry including stylesheet.css from required targets"
|
308
|
+
task :packed => %w(setup combine) do
|
309
|
+
|
310
|
+
# don't add packed entries for apps.
|
311
|
+
if TARGET.target_type != :app
|
312
|
+
# Handle CSS version. get all required targets and find their
|
313
|
+
# stylesheet.css. Build packed css from that.
|
314
|
+
targets = TARGET.expand_required_targets + [TARGET]
|
315
|
+
entries = targets.map do |target|
|
316
|
+
m = target.manifest_for(MANIFEST.variation).build!
|
317
|
+
|
318
|
+
# need to find the version that is not minified
|
319
|
+
entry = m.entry_for('stylesheet.css')
|
320
|
+
entry = entry.source_entry while entry && entry.minified?
|
321
|
+
entry
|
322
|
+
end
|
323
|
+
|
324
|
+
entries.compact!
|
325
|
+
MANIFEST.add_composite 'stylesheet-packed.css',
|
326
|
+
:build_task => 'build:combine',
|
327
|
+
:source_entries => entries,
|
328
|
+
:hide_entries => false,
|
329
|
+
:entry_type => :css,
|
330
|
+
:combined => true,
|
331
|
+
:ordered_entries => entries, # orderd by load order
|
332
|
+
:targets => targets,
|
333
|
+
:packed => true
|
334
|
+
|
335
|
+
end
|
336
|
+
end
|
337
|
+
task :minify => :packed # IMPORTANT: don't want minified version
|
338
|
+
|
339
|
+
|
340
|
+
desc "create a builder task for all sass files to create css files"
|
341
|
+
task :sass => :setup do
|
342
|
+
MANIFEST.entries.each do |entry|
|
343
|
+
next unless entry.ext == "sass"
|
344
|
+
|
345
|
+
|
346
|
+
MANIFEST.add_transform entry,
|
347
|
+
:filename => ['source', entry.filename].join('/'),
|
348
|
+
:build_path => File.join(MANIFEST.build_root, 'source', entry.filename),
|
349
|
+
:url => [MANIFEST.url_root, 'source', entry.filename].join("/"),
|
350
|
+
:build_task => 'build:sass',
|
351
|
+
:entry_type => :css,
|
352
|
+
:ext => 'css',
|
353
|
+
:resource => 'stylesheet',
|
354
|
+
:required => []
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
desc "find all html-generating files, annotate and combine them"
|
359
|
+
task :html => :setup do
|
360
|
+
|
361
|
+
# select all entries with proper extensions
|
362
|
+
known_ext = %w(rhtml erb haml)
|
363
|
+
entries = MANIFEST.entries.select do |e|
|
364
|
+
(e.entry_type == :html) || (e.entry_type.nil? && known_ext.include?(e.ext))
|
365
|
+
end
|
366
|
+
|
367
|
+
# tag entry with build directives and sort by resource
|
368
|
+
entries_by_resource = {}
|
369
|
+
entries.each do |entry|
|
370
|
+
entry.entry_type = :html
|
371
|
+
entry.resource = 'index'
|
372
|
+
|
373
|
+
entry.render_task = case entry.ext
|
374
|
+
when 'rhtml':
|
375
|
+
'render:erubis'
|
376
|
+
when 'erb':
|
377
|
+
"render:erubis"
|
378
|
+
when 'haml':
|
379
|
+
'render:haml'
|
380
|
+
end
|
381
|
+
|
382
|
+
# use a custom scan method since discover_build_directives! is too
|
383
|
+
# general...
|
384
|
+
|
385
|
+
entry.scan_source(/<%\s*sc_resource\(?\s*['"](.+)['"]\s*\)?/) do |m|
|
386
|
+
entry.resource = m[0].ext ''
|
387
|
+
end
|
388
|
+
(entries_by_resource[entry.resource] ||= []) << entry
|
389
|
+
end
|
390
|
+
|
391
|
+
# even if no resource was found for the index.html, add one anyway if
|
392
|
+
# the target is loadable
|
393
|
+
if TARGET.loadable? && entries_by_resource['index'].nil?
|
394
|
+
entries_by_resource['index'] = []
|
395
|
+
end
|
396
|
+
|
397
|
+
# Now, build combined entry for each resource
|
398
|
+
entries_by_resource.each do |resource_name, entries|
|
399
|
+
resource_name = resource_name.ext('html')
|
400
|
+
is_index = resource_name == 'index.html'
|
401
|
+
MANIFEST.add_composite resource_name,
|
402
|
+
:entry_type => :html,
|
403
|
+
:combined => true,
|
404
|
+
:build_task => 'build:html',
|
405
|
+
:source_entries => entries,
|
406
|
+
:hidden => !TARGET.loadable? && is_index,
|
407
|
+
:include_required_targets => TARGET.loadable? && is_index
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
411
|
+
desc "creates transform entries for all css and Js entries to minify them if needed"
|
412
|
+
task :minify => %w(setup javascript css combine sass) do
|
413
|
+
|
414
|
+
minify_css = CONFIG.minify_css
|
415
|
+
minify_css = CONFIG.minify if minify_css.nil?
|
416
|
+
|
417
|
+
minify_javascript = CONFIG.minify_javascript
|
418
|
+
minify_javascript = CONFIG.minify if minify_javascript.nil?
|
419
|
+
|
420
|
+
MANIFEST.entries.dup.each do |entry|
|
421
|
+
case entry.entry_type
|
422
|
+
when :css
|
423
|
+
if minify_css
|
424
|
+
MANIFEST.add_transform entry,
|
425
|
+
:build_task => 'build:minify:css',
|
426
|
+
:entry_type => :css,
|
427
|
+
:minified => true,
|
428
|
+
:packed => entry.packed? # carry forward
|
429
|
+
end
|
430
|
+
|
431
|
+
when :javascript
|
432
|
+
if minify_javascript
|
433
|
+
MANIFEST.add_transform entry,
|
434
|
+
:build_task => 'build:minify:javascript',
|
435
|
+
:entry_type => :javascript,
|
436
|
+
:minified => true,
|
437
|
+
:packed => entry.packed? # carry forward
|
438
|
+
end
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
end
|
443
|
+
|
444
|
+
desc "adds a loc strings entry that generates a yaml file server-side functions can use"
|
445
|
+
task :strings => %w(setup javascript) do
|
446
|
+
# find the lproj/strings.js file...
|
447
|
+
if entry = MANIFEST.entry_for('source/lproj/strings.js')
|
448
|
+
MANIFEST.add_transform entry,
|
449
|
+
:filename => 'strings.yaml',
|
450
|
+
:build_path => File.join(MANIFEST.build_root, 'strings.yaml'),
|
451
|
+
:staging_path => File.join(MANIFEST.staging_root, 'strings.yaml'),
|
452
|
+
:url => [MANIFEST.url_root, 'strings.yaml'].join('/'),
|
453
|
+
:build_task => 'build:strings',
|
454
|
+
:ext => 'yaml',
|
455
|
+
:entry_type => :strings,
|
456
|
+
:hide_entry => false,
|
457
|
+
:hidden => true
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
461
|
+
desc "..."
|
462
|
+
task :image => :setup do
|
463
|
+
end
|
464
|
+
|
465
|
+
|
466
|
+
end
|
467
|
+
|
468
|
+
|
469
|
+
end
|