|
@@ -0,0 +1,108 @@
|
|
|
+module.exports = function(grunt) {
|
|
|
+
|
|
|
+ grunt.loadNpmTasks('grunt-shell');
|
|
|
+ grunt.loadNpmTasks('grunt-image-embed');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-mincss');
|
|
|
+
|
|
|
+ grunt.registerTask('build:deploy', 'shell:compileDeploy concat:deploy min');
|
|
|
+ grunt.registerTask('build:dev', 'shell:compileDev concat:css imageEmbed mincss css2js concat:dev');
|
|
|
+ grunt.registerTask('default', 'build:deploy build:dev');
|
|
|
+
|
|
|
+ grunt.initConfig({
|
|
|
+ pkg: '<json:package.json>',
|
|
|
+
|
|
|
+ meta: {
|
|
|
+ banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> */\n'
|
|
|
+ },
|
|
|
+
|
|
|
+ shell: {
|
|
|
+ compileDeploy: {
|
|
|
+ stdout: true,
|
|
|
+ command: 'bin/amberc -l Kernel-Announcements ' +
|
|
|
+ 'tmp/amber-compiled.deploy'
|
|
|
+ },
|
|
|
+ compileDev: {
|
|
|
+ stdout: true,
|
|
|
+ command: 'bin/amberc -l ' +
|
|
|
+ 'Compiler-Exceptions,Compiler-Core,Compiler-AST,Compiler-Semantic,Compiler-IR,Compiler-Inlining,' +
|
|
|
+ 'parser,Importer-Exporter,Kernel-Announcements,' +
|
|
|
+ 'SUnit,Compiler-Tests,Kernel-Tests,' +
|
|
|
+ 'Canvas,IDE,compat ' +
|
|
|
+ 'tmp/amber-compiled'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ concat: {
|
|
|
+ deploy: {
|
|
|
+ src: ['tmp/amber-compiled.deploy.js'],
|
|
|
+ dest: 'dist/amber-<%= pkg.version %>.deploy.js'
|
|
|
+ },
|
|
|
+
|
|
|
+ css: {
|
|
|
+ src: [
|
|
|
+ 'css/amber.css',
|
|
|
+ 'js/lib/CodeMirror/codemirror.css',
|
|
|
+ 'js/lib/CodeMirror/amber.css'
|
|
|
+ ],
|
|
|
+ dest: 'tmp/amber.css'
|
|
|
+ },
|
|
|
+
|
|
|
+ dev: {
|
|
|
+ src: [
|
|
|
+ 'js/lib/jQuery/jquery-ui-1.8.16.custom.min.js',
|
|
|
+ 'js/lib/jQuery/jquery.textarea.js',
|
|
|
+ 'js/lib/CodeMirror/codemirror.js',
|
|
|
+ 'js/lib/CodeMirror/smalltalk.js',
|
|
|
+ 'tmp/amber-compiled.js',
|
|
|
+ 'tmp/css.js'
|
|
|
+ ],
|
|
|
+ dest: 'dist/amber-<%= pkg.version %>.js'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ imageEmbed: {
|
|
|
+ dev: {
|
|
|
+ src: ['tmp/amber.css'],
|
|
|
+ dest: 'tmp/amber-images.css',
|
|
|
+ options: {baseDir: 'public'}
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ mincss: {
|
|
|
+ dev: {
|
|
|
+ src: ['tmp/amber-images.css'],
|
|
|
+ dest: 'tmp/amber.min.css'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ css2js: {
|
|
|
+ dev: {
|
|
|
+ src: 'tmp/amber.min.css',
|
|
|
+ dest: 'tmp/css.js'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ min: {
|
|
|
+ deploy: {
|
|
|
+ src: 'dist/amber-<%= pkg.version %>.deploy.js',
|
|
|
+ dest: 'dist/amber-<%= pkg.version %>.deploy.min.js'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
|
|
|
+ var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read)
|
|
|
+ var content =
|
|
|
+ "var css='"+cssContent+"';" +
|
|
|
+ "var cssTag = document.createElement('link');" +
|
|
|
+ "document.head = document.head || document.getElementsByTagName('head')[0];" +
|
|
|
+ "cssTag.href = 'data:text/css,'+css;" +
|
|
|
+ "cssTag.rel = 'stylesheet';" +
|
|
|
+ "document.head.appendChild(cssTag);";
|
|
|
+
|
|
|
+ grunt.file.write(this.data.dest, content);
|
|
|
+
|
|
|
+ grunt.log.writeln('File "' + this.data.dest + '" created.');
|
|
|
+ });
|
|
|
+
|
|
|
+};
|