|  | @@ -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.');
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +};
 |