|
@@ -1,70 +1,122 @@
|
|
|
'use strict';
|
|
|
|
|
|
-// File is generated by
|
|
|
-// amber init
|
|
|
-//
|
|
|
-// Test code was removed manually.
|
|
|
-
|
|
|
module.exports = function (grunt) {
|
|
|
- var path = require('path');
|
|
|
-
|
|
|
// These plugins provide necessary tasks.
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-clean');
|
|
|
grunt.loadNpmTasks('grunt-contrib-requirejs');
|
|
|
- grunt.loadNpmTasks('amber-dev');
|
|
|
+ grunt.loadNpmTasks('grunt-exec');
|
|
|
+ grunt.loadNpmTasks('@ambers/sdk');
|
|
|
+
|
|
|
+ var path = require('path'),
|
|
|
+ helpers = require('@ambers/sdk').helpers;
|
|
|
|
|
|
// Default task.
|
|
|
- grunt.registerTask('default', ['amberc:all']);
|
|
|
+ grunt.registerTask('default', ['amdconfig:app', 'amberc:all']);
|
|
|
+ grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'exec:test_runner', 'clean:test_runner']);
|
|
|
grunt.registerTask('devel', ['amdconfig:app', 'requirejs:devel']);
|
|
|
grunt.registerTask('deploy', ['amdconfig:app', 'requirejs:deploy']);
|
|
|
|
|
|
+ var polyfillThenPromiseApp = function () {
|
|
|
+ define(["require", "amber/es6-promise"], function (require, promiseLib) {
|
|
|
+ promiseLib.polyfill();
|
|
|
+ return new Promise(function (resolve, reject) {
|
|
|
+ require(["__app__"], resolve, reject);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
// Project configuration.
|
|
|
grunt.initConfig({
|
|
|
// Metadata.
|
|
|
// pkg: grunt.file.readJSON(''),
|
|
|
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
|
|
|
- '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
|
|
- '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
|
|
|
- '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
|
|
- ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
|
|
|
+ '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
|
|
+ '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
|
|
|
+ '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
|
|
+ ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
|
|
|
// task configuration
|
|
|
amberc: {
|
|
|
options: {
|
|
|
- amber_dir: path.join(__dirname, "bower_components", "amber"),
|
|
|
- library_dirs: ['src'],
|
|
|
- closure_jar: ''
|
|
|
+ amber_dir: path.join(__dirname, "node_modules", "@ambers", "lang"),
|
|
|
+ configFile: "config.js"
|
|
|
},
|
|
|
all: {
|
|
|
src: [
|
|
|
'src/TrySmalltalk.st', // list all sources in dependency order
|
|
|
+ // list all tests in dependency order
|
|
|
],
|
|
|
- amd_namespace: 'amber-trysmalltalk',
|
|
|
- libraries: ['Web']
|
|
|
+ amd_namespace: 'profstef',
|
|
|
+ libraries: ['amber_core/SUnit', 'amber/web/Web']
|
|
|
}
|
|
|
},
|
|
|
|
|
|
amdconfig: {app: {dest: 'config.js'}},
|
|
|
|
|
|
requirejs: {
|
|
|
- deploy: {options: {
|
|
|
- mainConfigFile: "config.js",
|
|
|
- onBuildWrite: function (moduleName, path, contents) {
|
|
|
- return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'deploy'}}});" : contents;
|
|
|
- },
|
|
|
- pragmas: {
|
|
|
- excludeIdeData: true,
|
|
|
- excludeDebugContexts: true
|
|
|
- },
|
|
|
- include: ['config', 'node_modules/requirejs/require', 'deploy'],
|
|
|
- out: "the.js"
|
|
|
- }},
|
|
|
- devel: {options: {
|
|
|
- mainConfigFile: "config.js",
|
|
|
- onBuildWrite: function (moduleName, path, contents) {
|
|
|
- return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'devel'}}});" : contents;
|
|
|
- },
|
|
|
- include: ['config', 'node_modules/requirejs/require'],
|
|
|
- out: "the.js"
|
|
|
- }}
|
|
|
+ options: {
|
|
|
+ useStrict: true
|
|
|
+ },
|
|
|
+ deploy: {
|
|
|
+ options: {
|
|
|
+ mainConfigFile: "config.js",
|
|
|
+ rawText: {
|
|
|
+ "app": '(' + polyfillThenPromiseApp + '());',
|
|
|
+ "__app__": 'define(["deploy", "amber_core/Platform-Browser"],function(x){return x});'
|
|
|
+ },
|
|
|
+ pragmas: {
|
|
|
+ excludeIdeData: true,
|
|
|
+ excludeDebugContexts: true
|
|
|
+ },
|
|
|
+ include: ['config', 'node_modules/requirejs/require', 'app', 'amber/lazypack', '__app__'],
|
|
|
+ optimize: "uglify2",
|
|
|
+ out: "the.js"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ devel: {
|
|
|
+ options: {
|
|
|
+ mainConfigFile: "config.js",
|
|
|
+ rawText: {
|
|
|
+ "app": '(' + polyfillThenPromiseApp + '());',
|
|
|
+ "__app__": 'define(["devel", "amber_core/Platform-Browser"],function(x){return x});'
|
|
|
+ },
|
|
|
+ include: ['config', 'node_modules/requirejs/require', 'app', '__app__'],
|
|
|
+ exclude: ['devel'],
|
|
|
+ out: "the.js"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ test_runner: {
|
|
|
+ options: {
|
|
|
+ mainConfigFile: "config.js",
|
|
|
+ rawText: {
|
|
|
+ "jquery": "/* do not load in node test runner */",
|
|
|
+ "__app__": "(" + function () {
|
|
|
+ define(["testing", "amber_core/Platform-Node", "amber_devkit/NodeTestRunner"], function (amber) {
|
|
|
+ amber.initialize().then(function () {
|
|
|
+ amber.globals.NodeTestRunner._main();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } + "());",
|
|
|
+ "app": "(" + polyfillThenPromiseApp + "());"
|
|
|
+ },
|
|
|
+ paths: {"amber_devkit": helpers.libPath},
|
|
|
+ pragmas: {
|
|
|
+ excludeIdeData: true
|
|
|
+ },
|
|
|
+ include: ['app', 'amber/lazypack', '__app__'],
|
|
|
+ insertRequire: ['app'],
|
|
|
+ optimize: "none",
|
|
|
+ wrap: helpers.nodeWrapperWithShebang,
|
|
|
+ out: "test_runner.js"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ exec: {
|
|
|
+ test_runner: 'node test_runner.js'
|
|
|
+ },
|
|
|
+
|
|
|
+ clean: {
|
|
|
+ test_runner: ['test_runner.js']
|
|
|
}
|
|
|
});
|
|
|
|