graspi 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +3 -0
- data/Rakefile +31 -0
- data/lib/graspi.rb +64 -0
- data/lib/graspi/engine.rb +14 -0
- data/lib/graspi/helpers/assets_include_helper.rb +45 -0
- data/lib/graspi/version.rb +3 -0
- data/lib/grunt/graspi.coffee +87 -0
- data/lib/grunt/task_helpers/abstract.coffee +47 -0
- data/lib/grunt/task_helpers/bower/abstract.coffee +8 -0
- data/lib/grunt/task_helpers/bower/clean.coffee +6 -0
- data/lib/grunt/task_helpers/bower/clean_full.coffee +19 -0
- data/lib/grunt/task_helpers/bower/concat.coffee +37 -0
- data/lib/grunt/task_helpers/bower/concat_check.coffee +40 -0
- data/lib/grunt/task_helpers/browsersync/abstract.coffee +10 -0
- data/lib/grunt/task_helpers/browsersync/browsersync.coffee +25 -0
- data/lib/grunt/task_helpers/css/abstract.coffee +13 -0
- data/lib/grunt/task_helpers/css/clean.coffee +13 -0
- data/lib/grunt/task_helpers/css/clean_full.coffee +22 -0
- data/lib/grunt/task_helpers/css/concat.coffee +32 -0
- data/lib/grunt/task_helpers/css/copy.coffee +33 -0
- data/lib/grunt/task_helpers/css/minify.coffee +41 -0
- data/lib/grunt/task_helpers/css/replace_urls.coffee +58 -0
- data/lib/grunt/task_helpers/css/sass_compile.coffee +54 -0
- data/lib/grunt/task_helpers/filerev/abstract.coffee +13 -0
- data/lib/grunt/task_helpers/filerev/clean.coffee +9 -0
- data/lib/grunt/task_helpers/filerev/clean_full.coffee +14 -0
- data/lib/grunt/task_helpers/filerev/filerev.coffee +165 -0
- data/lib/grunt/task_helpers/image_min/abstract.coffee +8 -0
- data/lib/grunt/task_helpers/image_min/clean.coffee +6 -0
- data/lib/grunt/task_helpers/image_min/clean_full.coffee +14 -0
- data/lib/grunt/task_helpers/image_min/copy.coffee +35 -0
- data/lib/grunt/task_helpers/image_min/imagemin.coffee +67 -0
- data/lib/grunt/task_helpers/image_min/svgmin.coffee +30 -0
- data/lib/grunt/task_helpers/image_min/timestamps.coffee +5 -0
- data/lib/grunt/task_helpers/js/abstract.coffee +13 -0
- data/lib/grunt/task_helpers/js/clean.coffee +13 -0
- data/lib/grunt/task_helpers/js/clean_full.coffee +22 -0
- data/lib/grunt/task_helpers/js/coffee_compile.coffee +39 -0
- data/lib/grunt/task_helpers/js/concat.coffee +32 -0
- data/lib/grunt/task_helpers/js/copy.coffee +33 -0
- data/lib/grunt/task_helpers/js/uglify.coffee +44 -0
- data/lib/grunt/task_helpers/manifest/abstract.coffee +16 -0
- data/lib/grunt/task_helpers/manifest/clean.coffee +9 -0
- data/lib/grunt/task_helpers/manifest/clean_full.coffee +15 -0
- data/lib/grunt/task_helpers/manifest/manifest.coffee +125 -0
- data/lib/grunt/task_helpers/watch/abstract.coffee +10 -0
- data/lib/grunt/task_helpers/watch/watch.coffee +40 -0
- data/lib/grunt/tasks/bower.coffee +21 -0
- data/lib/grunt/tasks/browsersync.coffee +8 -0
- data/lib/grunt/tasks/css.coffee +31 -0
- data/lib/grunt/tasks/filerev.coffee +13 -0
- data/lib/grunt/tasks/image_min.coffee +28 -0
- data/lib/grunt/tasks/js.coffee +28 -0
- data/lib/grunt/tasks/manifest.coffee +13 -0
- data/lib/grunt/tasks/watch.coffee +8 -0
- data/lib/grunt/util/config.coffee +280 -0
- data/lib/grunt/util/config_app.coffee +31 -0
- data/lib/grunt/util/env_app_iterator.coffee +35 -0
- data/lib/grunt/util/file_change_tracker.coffee +79 -0
- data/lib/grunt/util/lodash_extensions.coffee +18 -0
- data/lib/grunt/util/task_runner.coffee +87 -0
- data/lib/tasks/graspi_tasks.rake +4 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/base/kitten_1.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_2.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_3.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_4.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_5.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_6.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_7.jpg +0 -0
- data/spec/dummy/app/assets/images/base/kitten_8.jpg +0 -0
- data/spec/dummy/app/assets/images/base/logo.png +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_1.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_2.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_3.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_4.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_5.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_6.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_7.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/kitten_8.jpg +0 -0
- data/spec/dummy/app/assets/images/mixed/logo.png +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_1.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_2.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_3.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_4.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_5.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_6.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_7.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/kitten_8.jpg +0 -0
- data/spec/dummy/app/assets/images/plain/logo.png +0 -0
- data/spec/dummy/app/assets/javascripts/base/application.coffee +0 -0
- data/spec/dummy/app/assets/javascripts/mixed/application.coffee +0 -0
- data/spec/dummy/app/assets/javascripts/mixed/second.js +0 -0
- data/spec/dummy/app/assets/javascripts/plain/application.js +0 -0
- data/spec/dummy/app/assets/javascripts/plain/second.js +0 -0
- data/spec/dummy/app/assets/stylesheets/base/application.sass +6 -0
- data/spec/dummy/app/assets/stylesheets/base/layout/_footer.sass +9 -0
- data/spec/dummy/app/assets/stylesheets/base/layout/_grid.sass +3 -0
- data/spec/dummy/app/assets/stylesheets/base/layout/_layout.sass +22 -0
- data/spec/dummy/app/assets/stylesheets/base/layout/_typography.sass +7 -0
- data/spec/dummy/app/assets/stylesheets/mixed/application.sass +5 -0
- data/spec/dummy/app/assets/stylesheets/mixed/layout/_grid.sass +3 -0
- data/spec/dummy/app/assets/stylesheets/mixed/layout/_layout.sass +22 -0
- data/spec/dummy/app/assets/stylesheets/mixed/layout/_typography.sass +7 -0
- data/spec/dummy/app/assets/stylesheets/mixed/second.css +0 -0
- data/spec/dummy/app/assets/stylesheets/plain/application.css +0 -0
- data/spec/dummy/app/assets/stylesheets/plain/second.css +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/pages_controller.rb +24 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.haml +13 -0
- data/spec/dummy/app/views/layouts/base.html.haml +10 -0
- data/spec/dummy/app/views/layouts/mixed.html.haml +10 -0
- data/spec/dummy/app/views/layouts/plain.html.haml +10 -0
- data/spec/dummy/app/views/pages/_view.html.haml +19 -0
- data/spec/dummy/app/views/pages/base.html.haml +1 -0
- data/spec/dummy/app/views/pages/mixed.html.haml +1 -0
- data/spec/dummy/app/views/pages/plain.html.haml +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +32 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.example.yml +25 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/graspi.rb +1 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +9 -0
- data/spec/dummy/config/secrets.example.yml +22 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +16 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +10490 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/assets/g-assets.json +43 -0
- data/spec/dummy/public/assets/g-development/base/application.css +589 -0
- data/spec/dummy/public/assets/g-development/base/application.css.map +11 -0
- data/spec/dummy/public/assets/g-development/base/application.js +18691 -0
- data/spec/dummy/public/assets/g-development/base/application.js.map +10 -0
- data/spec/dummy/public/assets/g-development/base/kitten_1.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_2.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_3.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_4.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_5.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_6.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_7.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/kitten_8.jpg +0 -0
- data/spec/dummy/public/assets/g-development/base/logo.png +0 -0
- data/spec/dummy/public/assets/g-development/mixed/application.32d9e45930c83e3769a9ff2f92adfe0cb5bb013c6c146f0eafb35ea3c1cb79a5.js +33 -0
- data/spec/dummy/public/assets/g-development/mixed/application.550e9eaa5b567604fd414ab0d5e9b7c1899ebae67d95f8191c5c273b8dcd34b7.js.map +1 -0
- data/spec/dummy/public/assets/g-development/mixed/application.7ef4ffe5ac778acc4c8195a6ce8a3b0ea47d3cd5bbf8479cec5b143b97dde82e.css +2 -0
- data/spec/dummy/public/assets/g-development/mixed/application.css +2 -0
- data/spec/dummy/public/assets/g-development/mixed/application.css.map +1 -0
- data/spec/dummy/public/assets/g-development/mixed/application.efc51097dff5d27e7434d8055f125e7ea85513534b986e00fc35a8aa2dd93f22.css.map +1 -0
- data/spec/dummy/public/assets/g-development/mixed/application.js +33 -0
- data/spec/dummy/public/assets/g-development/mixed/application.js.map +1 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_1.05e62b1fae8ff9ba745af7e9cf3a8f772a84e4e69689eebd88470fc236e17128.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_1.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_2.0e492e6a90094a6b0bb5f66037e9a612a1401e02ff1095d33e252fd4e110c825.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_2.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_3.e5e57ee0440b05005315aa1ce2beda938be16e00bc74ba093af5e475afa1a47f.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_3.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_4.1c0143065e348b79fe5c471b99cda7b99d6e7bda4663b5d82d21b5aeaed420e4.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_4.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_5.9f4b41712362b832ce672907f0221471aa0ca148c17350107b96f0d54ea2deda.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_5.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_6.d5d7ef1f783685e23ea39c07910073b832ec22872175d7061a9084ab7e4a074d.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_6.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_7.59681fdcfdba95f16db760e490fa04d0cb302b80a91c0f7f5d8e36211811f8d2.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_7.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_8.7225e60000a76c9273ead2e6d8d8c280223e1a5b58e99693f486b5d3cd02d755.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/kitten_8.jpg +0 -0
- data/spec/dummy/public/assets/g-development/mixed/logo.58a56028cf0d44791e113b8cdfd4d3ad704212ba765e7cb600899c19e0cb782c.png +0 -0
- data/spec/dummy/public/assets/g-development/mixed/logo.png +0 -0
- data/spec/dummy/public/assets/g-development/plain/application.css +430 -0
- data/spec/dummy/public/assets/g-development/plain/application.css.map +11 -0
- data/spec/dummy/public/assets/g-development/plain/application.js +11580 -0
- data/spec/dummy/public/assets/g-development/plain/application.js.map +11 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_1.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_2.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_3.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_4.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_5.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_6.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_7.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/kitten_8.jpg +0 -0
- data/spec/dummy/public/assets/g-development/plain/logo.png +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/grunt/asset_timestamps.json +216 -0
- data/spec/dummy/tmp/grunt/css/base/application.css/1_bower.css +584 -0
- data/spec/dummy/tmp/grunt/css/base/application.css/base/application.css +2 -0
- data/spec/dummy/tmp/grunt/css/base/application.css/base/application.css.map +7 -0
- data/spec/dummy/tmp/grunt/css/mixed/application.css/1_bower.css +932 -0
- data/spec/dummy/tmp/grunt/css/mixed/application.css/mixed/application.css +2 -0
- data/spec/dummy/tmp/grunt/css/mixed/application.css/mixed/application.css.map +7 -0
- data/spec/dummy/tmp/grunt/css/mixed/application.css/mixed/second.css +2 -0
- data/spec/dummy/tmp/grunt/css/mixed/application.css/mixed/second.css.map +7 -0
- data/spec/dummy/tmp/grunt/css/plain/application.css/1_bower.css +424 -0
- data/spec/dummy/tmp/grunt/css/plain/application.css/plain/application.css +2 -0
- data/spec/dummy/tmp/grunt/css/plain/application.css/plain/application.css.map +7 -0
- data/spec/dummy/tmp/grunt/css/plain/application.css/plain/second.css +2 -0
- data/spec/dummy/tmp/grunt/css/plain/application.css/plain/second.css.map +7 -0
- data/spec/dummy/tmp/grunt/filerevision/development-base.json +15 -0
- data/spec/dummy/tmp/grunt/filerevision/development-mixed.json +15 -0
- data/spec/dummy/tmp/grunt/filerevision/development-plain.json +15 -0
- data/spec/dummy/tmp/grunt/js/base/application.js/1_bower.js +18682 -0
- data/spec/dummy/tmp/grunt/js/base/application.js/base/application.js +6 -0
- data/spec/dummy/tmp/grunt/js/base/application.js/base/application.js.map +10 -0
- data/spec/dummy/tmp/grunt/js/mixed/application.js/1_bower.js +13153 -0
- data/spec/dummy/tmp/grunt/js/mixed/application.js/mixed/application.js +6 -0
- data/spec/dummy/tmp/grunt/js/mixed/application.js/mixed/application.js.map +10 -0
- data/spec/dummy/tmp/grunt/js/mixed/application.js/mixed/second.js +2 -0
- data/spec/dummy/tmp/grunt/js/mixed/application.js/mixed/second.js.map +7 -0
- data/spec/dummy/tmp/grunt/js/plain/application.js/1_bower.js +11574 -0
- data/spec/dummy/tmp/grunt/js/plain/application.js/plain/application.js +2 -0
- data/spec/dummy/tmp/grunt/js/plain/application.js/plain/application.js.map +7 -0
- data/spec/dummy/tmp/grunt/js/plain/application.js/plain/second.js +2 -0
- data/spec/dummy/tmp/grunt/js/plain/application.js/plain/second.js.map +7 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_convert-units.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_directional-values.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_font-source-declaration.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_gradient-positions-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_linear-angle-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_linear-gradient-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_linear-positions-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_linear-side-corner-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_radial-arg-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_radial-gradient-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_radial-positions-parser.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_render-gradients.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_shape-size-stripper.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/08ad877409792dddd715faefc2a5ebd471969650/_str-to-num.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/16d30df860db416a2481ad22d3ff1a747d6219db/application.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/1e3c1dcafa0d8e91f21a327b193bb9bbc5522a0f/_grid.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/1e3c1dcafa0d8e91f21a327b193bb9bbc5522a0f/_layout.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/1e3c1dcafa0d8e91f21a327b193bb9bbc5522a0f/_typography.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_border-color.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_border-radius.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_border-style.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_border-width.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_buttons.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_clearfix.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_ellipsis.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_font-stacks.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_hide-text.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_margin.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_padding.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_position.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_prefixer.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_retina-image.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_size.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_text-inputs.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_timing-functions.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_triangle.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/27de6c9bd1cc1e521ad09b2575de2ae77a566697/_word-wrap.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/326439c8e594c1dca703b9ee873e90079d5f5cb5/_bourbon-deprecated-upcoming.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/326439c8e594c1dca703b9ee873e90079d5f5cb5/_bourbon.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_box-sizing.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_direction-context.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_display-context.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_fill-parent.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_media.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_omega.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_outer-container.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_pad.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_private.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_row.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_shift.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_span-columns.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_to-deprecate.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/3ec69ce433221720b130ca9e42300ea140e6d275/_visual-grid.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_animation.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_appearance.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_backface-visibility.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_background-image.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_background.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_border-image.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_calc.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_columns.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_filter.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_flex-box.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_font-face.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_font-feature-settings.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_hidpi-media-query.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_hyphens.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_image-rendering.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_keyframes.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_linear-gradient.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_perspective.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_placeholder.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_radial-gradient.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_selection.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_text-decoration.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_transform.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_transition.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/4f625854e2c059b207d0b2f78574d69e284dd241/_user-select.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/547e7d669634d2662355e40eb168a731b071c473/application.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_assign-inputs.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_contains-falsy.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_contains.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_is-length.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_is-light.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_is-number.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_is-size.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_modular-scale.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_px-to-em.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_px-to-rem.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_shade.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_strip-units.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_tint.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_transition-property-name.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/5abd7e0c6f1f03692d8b3702912743f79fedc2f3/_unpack.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/9734cd2400af9be4fa8b47bed719f07707107597/_neat-helpers.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/9734cd2400af9be4fa8b47bed719f07707107597/_neat.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/a53529989ccbf12725d42e2e8519a39a49a2ca52/_disable-warnings.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/a53529989ccbf12725d42e2e8519a39a49a2ca52/_grid.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/a53529989ccbf12725d42e2e8519a39a49a2ca52/_visual-grid.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/ac58adafccab62210cad1ab751e37e487323cace/_new-breakpoint.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/ac58adafccab62210cad1ab751e37e487323cace/_private.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/c1fd3f393f01d5e51395ed159f6ce9ebd70b922c/_asset-pipeline.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/c1fd3f393f01d5e51395ed159f6ce9ebd70b922c/_prefixer.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/c1fd3f393f01d5e51395ed159f6ce9ebd70b922c/_px-to-em.scssc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/f99d6590ab65c8c8aa1da236ac0fecd5fcafa344/_footer.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/f99d6590ab65c8c8aa1da236ac0fecd5fcafa344/_grid.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/f99d6590ab65c8c8aa1da236ac0fecd5fcafa344/_layout.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/f99d6590ab65c8c8aa1da236ac0fecd5fcafa344/_test1.sassc +0 -0
- data/spec/dummy/tmp/grunt/sass_cache/f99d6590ab65c8c8aa1da236ac0fecd5fcafa344/_typography.sassc +0 -0
- data/spec/dummy/tmp/pids/server.pid +1 -0
- data/spec/rails_helper.rb +1 -0
- data/spec/spec_helper.rb +58 -0
- metadata +679 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
module.exports = class AbstractTaskHelper extends require('../abstract')
|
2
|
+
|
3
|
+
getCacheKey: ->
|
4
|
+
"browsersync-#{@eac.env_name}-#{@eac.app_name}"
|
5
|
+
|
6
|
+
isEnabled: ->
|
7
|
+
return false unless super() == true
|
8
|
+
return false unless @_.isObject(@getConfig().browserSync)
|
9
|
+
|
10
|
+
@getConfig().browserSync.enabled == true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
isEnabled: ->
|
4
|
+
return false unless super() == true
|
5
|
+
return false unless @_.isObject(@getConfig().browserSync.bsFiles)
|
6
|
+
|
7
|
+
@_.size(@getConfig().browserSync.bsFiles.src) > 0
|
8
|
+
|
9
|
+
run: ->
|
10
|
+
return unless @isEnabled()
|
11
|
+
|
12
|
+
cfg = @g.config.get('browserSync') || {}
|
13
|
+
cfg.options or= {}
|
14
|
+
cfg.bsFiles or= []
|
15
|
+
|
16
|
+
cfg.options = @_.merge {}, cfg.options, @buildBaseOptions()
|
17
|
+
cfg.bsFiles = @_.uniq(cfg.bsFiles.concat(@buildSrcArray()))
|
18
|
+
|
19
|
+
@g.config.merge({ browserSync: cfg })
|
20
|
+
|
21
|
+
buildBaseOptions: ->
|
22
|
+
@getConfig().browserSync.options || {}
|
23
|
+
|
24
|
+
buildSrcArray: ->
|
25
|
+
@getConfig().browserSync.bsFiles.src || []
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module.exports = class AbstractTaskHelper extends require('../abstract')
|
2
|
+
|
3
|
+
getCacheKey: ->
|
4
|
+
"css-#{@eac.env_name}-#{@eac.app_name}"
|
5
|
+
|
6
|
+
isEnabled: ->
|
7
|
+
return false unless super() == true
|
8
|
+
return false unless @_.isObject(@getAppConfig().css)
|
9
|
+
|
10
|
+
true
|
11
|
+
|
12
|
+
getDestFilePath: ->
|
13
|
+
"#{@getAppConfig().css.destPath}/#{@getAppConfig().css.destFile}"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getCacheKey: ->
|
4
|
+
@_cacheKey
|
5
|
+
|
6
|
+
run: ->
|
7
|
+
@_cacheKey = "css-#{@eac.env_name}-#{@eac.app_name}"
|
8
|
+
@fileCacheClean()
|
9
|
+
@_cacheKey = "css-minify-#{@eac.env_name}-#{@eac.app_name}"
|
10
|
+
@fileCacheClean()
|
11
|
+
|
12
|
+
isEnabled: ->
|
13
|
+
true
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getGruntTask: ->
|
4
|
+
'clean'
|
5
|
+
|
6
|
+
getGruntTaskTarget: ->
|
7
|
+
"graspi-css-clean-#{super()}"
|
8
|
+
|
9
|
+
getTmpFilesUrl: ->
|
10
|
+
"#{@getConfig().tmp.css}/#{@getAppConfig().css.destFile}/{,*/}*.css"
|
11
|
+
|
12
|
+
buildConfig: ->
|
13
|
+
cfg = {}
|
14
|
+
|
15
|
+
cfg.src = [
|
16
|
+
@getTmpFilesUrl(),
|
17
|
+
"#{@getTmpFilesUrl()}.map",
|
18
|
+
@getDestFilePath(),
|
19
|
+
"#{@getDestFilePath()}.map"
|
20
|
+
]
|
21
|
+
|
22
|
+
cfg
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getGruntTask: ->
|
4
|
+
'concat_sourcemap'
|
5
|
+
|
6
|
+
getGruntTaskTarget: ->
|
7
|
+
"graspi-css-concat-#{super()}"
|
8
|
+
|
9
|
+
getFilesUrl: ->
|
10
|
+
"#{@getConfig().tmp.css}/#{@getAppConfig().css.destFile}/{,*/}*.css"
|
11
|
+
|
12
|
+
buildConfig: ->
|
13
|
+
updateNecessary = false
|
14
|
+
|
15
|
+
files = @g.file.expand(@getFilesUrl())
|
16
|
+
|
17
|
+
@_.each files, (file) =>
|
18
|
+
return unless updateNecessary == false
|
19
|
+
return unless @fileCacheHasChanged(file)
|
20
|
+
updateNecessary = true
|
21
|
+
|
22
|
+
cfg = {}
|
23
|
+
cfg.options = {}
|
24
|
+
cfg.options.sourcesContent = false
|
25
|
+
cfg.files = {}
|
26
|
+
|
27
|
+
if updateNecessary == true
|
28
|
+
@_.each files, (file) => @fileCacheUpdate(file)
|
29
|
+
|
30
|
+
cfg.files[@getDestFilePath()] = [@getFilesUrl()]
|
31
|
+
|
32
|
+
cfg
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getGruntTask: ->
|
4
|
+
'concat_sourcemap'
|
5
|
+
|
6
|
+
getGruntTaskTarget: ->
|
7
|
+
"graspi-css-copy-#{super()}"
|
8
|
+
|
9
|
+
isEnabled: ->
|
10
|
+
return false unless super() == true
|
11
|
+
return false unless @_.isObject(@getAppConfig().css.files)
|
12
|
+
|
13
|
+
@_.isObject(@getAppConfig().css.files.cssFiles)
|
14
|
+
|
15
|
+
buildConfig: ->
|
16
|
+
cfg = {}
|
17
|
+
cfg.options = {}
|
18
|
+
cfg.options.sourcesContent = false
|
19
|
+
cfg.files = [{
|
20
|
+
expand: true
|
21
|
+
ext: '.css'
|
22
|
+
src: @getAppConfig().css.files.cssFiles || []
|
23
|
+
cwd: "#{@getAppConfig().css.basePath}"
|
24
|
+
dest: "#{@getConfig().tmp.css}/#{@getAppConfig().css.destFile}"
|
25
|
+
filter: (path) =>
|
26
|
+
changed = @fileCacheHasChanged(path)
|
27
|
+
|
28
|
+
@fileCacheUpdate(path) if changed == true
|
29
|
+
|
30
|
+
changed
|
31
|
+
}]
|
32
|
+
|
33
|
+
cfg
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getGruntTask: ->
|
4
|
+
'cssmin'
|
5
|
+
|
6
|
+
getGruntTaskTarget: ->
|
7
|
+
"graspi-css-minify-#{super()}"
|
8
|
+
|
9
|
+
getCacheKey: ->
|
10
|
+
"css-minify-#{@eac.env_name}-#{@eac.app_name}"
|
11
|
+
|
12
|
+
isEnabled: ->
|
13
|
+
return false unless super() == true
|
14
|
+
return false unless @getConfig().cssMinify.enabled == true
|
15
|
+
|
16
|
+
@fileCacheHasChanged(@getDestFilePath())
|
17
|
+
|
18
|
+
buildConfig: ->
|
19
|
+
cfg = {}
|
20
|
+
cfg.options = {}
|
21
|
+
cfg.options.report = @getConfig().cssMinify.report
|
22
|
+
cfg.options.sourceMap = @getConfig().cssMinify.sourceMap
|
23
|
+
cfg.options.advanced = @getConfig().cssMinify.cleanCss.advanced
|
24
|
+
cfg.options.aggressiveMerging = @getConfig().cssMinify.cleanCss.aggressiveMerging
|
25
|
+
cfg.options.compatibility = @getConfig().cssMinify.cleanCss.compatibility
|
26
|
+
cfg.options.keepBreaks = @getConfig().cssMinify.cleanCss.keepBreaks
|
27
|
+
cfg.options.keepSpecialComments = @getConfig().cssMinify.cleanCss.keepSpecialComments
|
28
|
+
cfg.options.mediaMerging = @getConfig().cssMinify.cleanCss.mediaMerging
|
29
|
+
cfg.options.rebase = @getConfig().cssMinify.cleanCss.rebase
|
30
|
+
cfg.options.restructuring = @getConfig().cssMinify.cleanCss.restructuring
|
31
|
+
cfg.options.roundingPrecision = @getConfig().cssMinify.cleanCss.roundingPrecision
|
32
|
+
cfg.options.semanticMerging = @getConfig().cssMinify.cleanCss.semanticMerging
|
33
|
+
cfg.options.shorthandCompacting = @getConfig().cssMinify.cleanCss.shorthandCompacting
|
34
|
+
cfg.options.sourceMapInlineSources = @getConfig().cssMinify.cleanCss.sourceMapInlineSources
|
35
|
+
|
36
|
+
cfg.files = {}
|
37
|
+
cfg.files[@getDestFilePath()] = [@getDestFilePath()]
|
38
|
+
|
39
|
+
@fileCacheUpdate(@getDestFilePath())
|
40
|
+
|
41
|
+
cfg
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getCacheKey: ->
|
4
|
+
"css-replace_urls-#{@eac.env_name}-#{@eac.app_name}"
|
5
|
+
|
6
|
+
getGruntTask: ->
|
7
|
+
'replace'
|
8
|
+
|
9
|
+
getGruntTaskTarget: ->
|
10
|
+
"graspi-css-replace_urls-#{super()}"
|
11
|
+
|
12
|
+
isEnabled: ->
|
13
|
+
return false unless super() == true
|
14
|
+
return false unless @getConfig().manifest.enabled == true
|
15
|
+
return false unless @fileCacheHasChanged(@getDestFilePath())
|
16
|
+
|
17
|
+
true
|
18
|
+
|
19
|
+
getManifestMapping: ->
|
20
|
+
try
|
21
|
+
mapping = @g.file.readJSON(@getConfig().manifest.path)
|
22
|
+
mapping or= {}
|
23
|
+
|
24
|
+
mapping[@eac.env_name] || {}
|
25
|
+
|
26
|
+
getAssetHost: ->
|
27
|
+
@getConfig().assetHost
|
28
|
+
|
29
|
+
buildConfig: ->
|
30
|
+
mapping = @getManifestMapping()
|
31
|
+
|
32
|
+
cfg = {}
|
33
|
+
cfg.options = {}
|
34
|
+
cfg.options.patterns = []
|
35
|
+
cfg.options.patterns.push {
|
36
|
+
match: /image\-url\((\'|\")(.*)(\'|\")\)/g
|
37
|
+
replacement: (match) =>
|
38
|
+
result = match.replace(/image\-url\((\'|\")/g, '')
|
39
|
+
result = result.replace(/(\'|\")\)/g, '')
|
40
|
+
|
41
|
+
return match if @_.isEmpty(mapping[result])
|
42
|
+
|
43
|
+
result = mapping[result]
|
44
|
+
|
45
|
+
unless @_.isEmpty(@getAssetHost())
|
46
|
+
host = @getAssetHost().replace(/\/$/, '')
|
47
|
+
result = "#{host}/#{result}"
|
48
|
+
|
49
|
+
"url('#{result}')"
|
50
|
+
}
|
51
|
+
|
52
|
+
cfg.files = []
|
53
|
+
cfg.files.push {
|
54
|
+
expand: true
|
55
|
+
src: [@getDestFilePath()]
|
56
|
+
}
|
57
|
+
|
58
|
+
cfg
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module.exports = class TaskHelper extends require('./abstract')
|
2
|
+
|
3
|
+
getGruntTask: ->
|
4
|
+
'sass'
|
5
|
+
|
6
|
+
getGruntTaskTarget: ->
|
7
|
+
"graspi-css-sass_compile-#{super()}"
|
8
|
+
|
9
|
+
isEnabled: ->
|
10
|
+
return false unless super() == true
|
11
|
+
return false unless @_.isObject(@getAppConfig().css.files)
|
12
|
+
return false unless @getConfig().cssSass.enabled == true
|
13
|
+
|
14
|
+
@_.isObject(@getAppConfig().css.files.sassFiles)
|
15
|
+
|
16
|
+
buildConfig: ->
|
17
|
+
sassConfig = @getConfig().cssSass
|
18
|
+
|
19
|
+
changed = false
|
20
|
+
|
21
|
+
@_.each @g.file.expand("#{@getAppConfig().css.basePath}/**/*.{sass,scss}"), (file) =>
|
22
|
+
return if changed == true
|
23
|
+
return if @fileCacheHasChanged(file) == false
|
24
|
+
changed = true
|
25
|
+
|
26
|
+
return {} unless changed == true
|
27
|
+
|
28
|
+
cfg = {}
|
29
|
+
cfg.options = {}
|
30
|
+
cfg.options.trace = sassConfig.trace
|
31
|
+
cfg.options.cacheLocation = sassConfig.cacheLocation
|
32
|
+
cfg.options.compass = sassConfig.compass
|
33
|
+
cfg.options.debugInfo = sassConfig.debugInfo
|
34
|
+
cfg.options.lineNumbers = sassConfig.lineNumbers
|
35
|
+
cfg.options.precision = sassConfig.precision
|
36
|
+
cfg.options.quiet = sassConfig.quiet
|
37
|
+
cfg.options.sourcemap = sassConfig.sourcemap
|
38
|
+
cfg.options.style = sassConfig.style
|
39
|
+
cfg.options.update = sassConfig.update
|
40
|
+
cfg.options.loadPath = @_.clone(sassConfig.loadPath)
|
41
|
+
cfg.files = [{
|
42
|
+
expand: true
|
43
|
+
ext: '.css'
|
44
|
+
src: @getAppConfig().css.files.sassFiles || []
|
45
|
+
cwd: "#{@getAppConfig().css.basePath}"
|
46
|
+
dest: "#{@getConfig().tmp.css}/#{@getAppConfig().css.destFile}"
|
47
|
+
}]
|
48
|
+
|
49
|
+
cfg.options.loadPath.push @getAppConfig().css.basePath
|
50
|
+
|
51
|
+
@_.each @g.file.expand("#{@getAppConfig().css.basePath}/**/*.{sass,scss}"), (file) =>
|
52
|
+
@fileCacheUpdate(file)
|
53
|
+
|
54
|
+
cfg
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module.exports = class AbstractTaskHelper extends require('../abstract')
|
2
|
+
|
3
|
+
getCacheKey: ->
|
4
|
+
"filerev-#{@eac.env_name}-#{@eac.app_name}"
|
5
|
+
|
6
|
+
isEnabled: ->
|
7
|
+
return false unless super() == true
|
8
|
+
return false unless @_.isObject(@getConfig().filerevision)
|
9
|
+
|
10
|
+
true
|
11
|
+
|
12
|
+
getMappingFilePath: ->
|
13
|
+
"#{@getConfig().tmp.filerevision}/#{@eac.env_name}-#{@eac.app_name}.json"
|
@@ -0,0 +1,165 @@
|
|
1
|
+
Crypto = require('crypto')
|
2
|
+
Fs = require('fs')
|
3
|
+
File = require('path')
|
4
|
+
Convert = require('convert-source-map')
|
5
|
+
|
6
|
+
module.exports = class TaskHelper extends require('./abstract')
|
7
|
+
|
8
|
+
isEnabled: ->
|
9
|
+
return false unless super() == true
|
10
|
+
|
11
|
+
@getConfig().filerevision.enabled == true
|
12
|
+
|
13
|
+
run: ->
|
14
|
+
@mappingUpdatable = false
|
15
|
+
|
16
|
+
@_readMappingFile()
|
17
|
+
|
18
|
+
files = @collectFilesInBasePaths()
|
19
|
+
files = @filterRevisionedFiles(files)
|
20
|
+
files = @filterChangedFiles(files)
|
21
|
+
|
22
|
+
@dropOldRevisionFiles(files)
|
23
|
+
@createRevisionFiles(files)
|
24
|
+
@updateSourceMapLink(files)
|
25
|
+
@updateFileChangeTimestamps(files)
|
26
|
+
|
27
|
+
@_writeMappingFile()
|
28
|
+
|
29
|
+
# -----
|
30
|
+
|
31
|
+
getHashLength: ->
|
32
|
+
@_hashLength or= 64
|
33
|
+
|
34
|
+
getRevisionedFileRegex: ->
|
35
|
+
@_revisionedFileRegex or= new RegExp("\.[a-zA-Z0-9]{#{@getHashLength()}}\.")
|
36
|
+
|
37
|
+
getMapping: ->
|
38
|
+
@_mapping or= @_readMappingFile()
|
39
|
+
|
40
|
+
getMappingFilePrettyPrint: ->
|
41
|
+
@getConfig().filerevision.manifest.prettyPrint
|
42
|
+
|
43
|
+
getCssBasePaths: ->
|
44
|
+
return [] unless @_.isObject(@getAppConfig().css)
|
45
|
+
|
46
|
+
p = "#{@getAppConfig().css.destPath}/#{@getAppConfig().css.destFile}"
|
47
|
+
if @g.file.exists(p) then [File.dirname(p)] else []
|
48
|
+
|
49
|
+
getJsBasePaths: ->
|
50
|
+
return [] unless @_.isObject(@getAppConfig().js)
|
51
|
+
|
52
|
+
p = "#{@getAppConfig().js.destPath}/#{@getAppConfig().js.destFile}"
|
53
|
+
if @g.file.exists(p) then [File.dirname(p)] else []
|
54
|
+
|
55
|
+
getImagesBasePaths: ->
|
56
|
+
return [] unless @_.isObject(@getAppConfig().images)
|
57
|
+
|
58
|
+
[File.join(@getAppConfig().images.destPath, @getAppConfig().images.destFolder)]
|
59
|
+
|
60
|
+
getBasePaths: ->
|
61
|
+
return @_basePaths unless @_.isEmpty(@_basePaths)
|
62
|
+
|
63
|
+
@_basePaths = [
|
64
|
+
@getCssBasePaths(),
|
65
|
+
@getCssBasePaths(),
|
66
|
+
@getImagesBasePaths()
|
67
|
+
]
|
68
|
+
|
69
|
+
@_basePaths = @_.uniq(@_.flatten(@_basePaths))
|
70
|
+
@_basePaths
|
71
|
+
|
72
|
+
# -----
|
73
|
+
|
74
|
+
collectFilesInBasePaths: ->
|
75
|
+
@_.inject @getBasePaths(), [], (memo, path) =>
|
76
|
+
memo = memo.concat(@g.file.expand(File.join(path, '{,*/}*')))
|
77
|
+
memo
|
78
|
+
|
79
|
+
filterRevisionedFiles: (files) ->
|
80
|
+
@_.filter files, (path) =>
|
81
|
+
@getRevisionedFileRegex().test(path) == false
|
82
|
+
|
83
|
+
filterChangedFiles: (files) ->
|
84
|
+
@_.filter files, (path) => @fileCacheHasChanged(path)
|
85
|
+
|
86
|
+
dropOldRevisionFiles: (files) ->
|
87
|
+
return unless @isEnabled() == true
|
88
|
+
|
89
|
+
@_.each files, (path) =>
|
90
|
+
f = @getMapping()[path]
|
91
|
+
@g.file.delete(f) if f && f != path && @g.file.exists(f)
|
92
|
+
|
93
|
+
createRevisionFiles: (files) ->
|
94
|
+
@_.each files, (path) =>
|
95
|
+
if @isEnabled() == true
|
96
|
+
newPath = @_digestPath(path)
|
97
|
+
@g.file.copy(path, newPath)
|
98
|
+
else
|
99
|
+
newPath = path
|
100
|
+
|
101
|
+
@getMapping()[path] = newPath
|
102
|
+
|
103
|
+
updateSourceMapLink: (files) ->
|
104
|
+
@_.each files, (path) =>
|
105
|
+
sourceMapPath = "#{path}.map"
|
106
|
+
resultFilePath = @getMapping()[path]
|
107
|
+
|
108
|
+
return unless @g.file.exists(resultFilePath)
|
109
|
+
return unless @g.file.exists(sourceMapPath)
|
110
|
+
|
111
|
+
fileContents = @g.file.read(resultFilePath, {encoding: 'utf8'})
|
112
|
+
matches = Convert.mapFileCommentRegex.exec(fileContents)
|
113
|
+
|
114
|
+
return unless matches
|
115
|
+
|
116
|
+
sourceMapFile = matches[1] || matches[2]
|
117
|
+
newSrcMap = fileContents.replace sourceMapFile, File.basename(sourceMapPath)
|
118
|
+
|
119
|
+
@g.file.write resultFilePath, newSrcMap, {encoding: 'utf8'}
|
120
|
+
|
121
|
+
|
122
|
+
updateFileChangeTimestamps: (files) ->
|
123
|
+
@_.each files, (path) => @fileCacheUpdate(path)
|
124
|
+
|
125
|
+
|
126
|
+
# ----------------------------------------------------------
|
127
|
+
# private
|
128
|
+
|
129
|
+
# @nodoc
|
130
|
+
_readMappingFile: ->
|
131
|
+
return {} unless @g.file.exists(@getMappingFilePath())
|
132
|
+
|
133
|
+
try
|
134
|
+
@_mapping = @g.file.readJSON(@getMappingFilePath())
|
135
|
+
catch e
|
136
|
+
@_mapping = {}
|
137
|
+
|
138
|
+
@_mapping or= {}
|
139
|
+
@_mapping
|
140
|
+
|
141
|
+
# @nodoc
|
142
|
+
_writeMappingFile: ->
|
143
|
+
spaces = if @getMappingFilePrettyPrint() == true then 4 else 0
|
144
|
+
mapping = JSON.stringify(@_mapping, null, spaces)
|
145
|
+
|
146
|
+
@g.file.write @getMappingFilePath(), mapping, { encoding: 'utf-8' }
|
147
|
+
|
148
|
+
# @nodoc
|
149
|
+
_digestPath: (path) ->
|
150
|
+
hash = Crypto.createHash('sha256').update(Fs.readFileSync(path)).digest('hex')
|
151
|
+
hash = hash.slice(0, 64)
|
152
|
+
|
153
|
+
fileData = File.parse(path)
|
154
|
+
|
155
|
+
if /(css\.map)$/.test(path)
|
156
|
+
newFileName = path.replace(/css\.map$/, '')
|
157
|
+
newFileName += "#{hash}.css.map"
|
158
|
+
return newFileName
|
159
|
+
else if /(js\.map)$/.test(path)
|
160
|
+
newFileName = path.replace(/js\.map$/, '')
|
161
|
+
newFileName += "#{hash}.js.map"
|
162
|
+
return newFileName
|
163
|
+
else
|
164
|
+
newFileName = "#{fileData.name}.#{hash}#{fileData.ext}"
|
165
|
+
return File.join(fileData.dir, newFileName)
|