|
@@ -1,6 +1,7 @@
|
|
|
module.exports = function(grunt) {
|
|
|
|
|
|
var path = require('path');
|
|
|
+ var fs = require('fs');
|
|
|
var amberc = require('../../bin/amberc.js');
|
|
|
|
|
|
/**
|
|
@@ -11,16 +12,17 @@ module.exports = function(grunt) {
|
|
|
closure_jar: '' // optional
|
|
|
},
|
|
|
helloWorld: {
|
|
|
- src: ['HelloWorld.st'], // REQUIRED
|
|
|
- working_dir: 'projects/HelloWorld', // optional
|
|
|
- main_class: 'HelloWorld', // optional
|
|
|
- output_name: 'helloWorld', // optional
|
|
|
- libraries: 'Canvas', // optional
|
|
|
- init: 'myInit', // optional
|
|
|
- main_file: 'myMain.js', // optional
|
|
|
- deploy: true, // optional
|
|
|
- output_suffix: 'mySuffix', // optional
|
|
|
- library_suffix: '-0.9', // optional
|
|
|
+ src: ['HelloWorld.st'], // REQUIRED
|
|
|
+ working_dir: 'projects/HelloWorld/st', // optional
|
|
|
+ target_dir: 'projects/HelloWorld/js', // optional
|
|
|
+ main_class: 'HelloWorld', // optional
|
|
|
+ output_name: 'helloWorld', // optional
|
|
|
+ libraries: 'Canvas', // optional
|
|
|
+ init: 'myInit', // optional
|
|
|
+ main_file: 'myMain.js', // optional
|
|
|
+ deploy: true, // optional
|
|
|
+ output_suffix: 'mySuffix', // optional
|
|
|
+ library_suffix: '-0.9', // optional
|
|
|
},
|
|
|
},
|
|
|
|
|
@@ -48,8 +50,21 @@ module.exports = function(grunt) {
|
|
|
|
|
|
// run the compiler
|
|
|
// change back to the old working directory and call the async callback once finished
|
|
|
+ var self = this;
|
|
|
compiler.main(parameters, function(){
|
|
|
+ if (undefined !== self.data.target_dir) {
|
|
|
+ var absolute_target_dir = path.join(current_dir, self.data.target_dir);
|
|
|
+ replaceFileSuffix_moveToTargetDir(self.data.src, absolute_target_dir);
|
|
|
+ // if deploy is set also copy the deploy files
|
|
|
+ if (self.data.deploy) {
|
|
|
+ var suffix = self.data.output_suffix || 'deploy';
|
|
|
+ suffix = '.' + suffix + '.js';
|
|
|
+ replaceFileSuffix_moveToTargetDir(self.data.src, absolute_target_dir, suffix);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // reset working directory
|
|
|
grunt.file.setBase(current_dir);
|
|
|
+ // signal that task has finished
|
|
|
done();
|
|
|
});
|
|
|
});
|
|
@@ -102,4 +117,21 @@ module.exports = function(grunt) {
|
|
|
return parameters;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Replace '.st' suffix of \p files with '.js' or with \p replace_suffix if this parameter is given.
|
|
|
+ * Afterwards move the files with replaced suffix to \p target_dir if the files exist.
|
|
|
+ */
|
|
|
+ function replaceFileSuffix_moveToTargetDir(files, target_dir, replace_suffix) {
|
|
|
+ var suffix = replace_suffix || '.js';
|
|
|
+ var compiledFiles = files.map(function(item) {
|
|
|
+ return item.replace(/.st$/g, suffix);
|
|
|
+ });
|
|
|
+
|
|
|
+ compiledFiles.forEach(function(file) {
|
|
|
+ if (path.existsSync(file)) {
|
|
|
+ fs.renameSync(file, path.join(target_dir, file));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
};
|