index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. 'use strict';
  6. var tasks = [],
  7. _ = require('underscore');
  8. function init(grunt, options) {
  9. var _ = require('underscore'),
  10. stripJsonComments = require('strip-json-comments'),
  11. path = require('path'),
  12. config,
  13. themes,
  14. file;
  15. config = grunt.file.read(__dirname + '/settings.json');
  16. config = stripJsonComments(config);
  17. config = JSON.parse(config);
  18. themes = require(path.resolve(process.cwd(), config.themes));
  19. if (options.theme) {
  20. themes = _.pick(themes, options.theme);
  21. }
  22. tasks = Object.keys(themes);
  23. config.themes = themes;
  24. file = grunt.option('file');
  25. if (file) {
  26. config.singleTest = file;
  27. }
  28. enableTasks(grunt, config);
  29. }
  30. function enableTasks(grunt, config) {
  31. var jasmine = require('./tasks/jasmine'),
  32. connect = require('./tasks/connect');
  33. jasmine.init(config);
  34. connect.init(config);
  35. grunt.initConfig({
  36. jasmine: jasmine.getTasks(),
  37. connect: connect.getTasks()
  38. });
  39. }
  40. function getTasks() {
  41. tasks = tasks.map(function (theme) {
  42. return [
  43. 'connect:' + theme,
  44. 'jasmine:' + theme
  45. ]
  46. });
  47. return _.flatten(tasks);
  48. }
  49. module.exports = {
  50. init: init,
  51. getTasks: getTasks
  52. };