Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / Gruntfile.js
diff --git a/skyquake/plugins/composer/Gruntfile.js b/skyquake/plugins/composer/Gruntfile.js
new file mode 100644 (file)
index 0000000..a5a1736
--- /dev/null
@@ -0,0 +1,169 @@
+
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+'use strict';
+
+var mountFolder = function (connect, dir) {
+    return connect.static(require('path').resolve(dir));
+};
+
+var webpackDistConfig = require('./webpack.dist.config.js'),
+    webpackDevConfig = require('./webpack.config.js');
+
+module.exports = function (grunt) {
+    // Let *load-grunt-tasks* require everything
+    require('load-grunt-tasks')(grunt);
+
+    // Read configuration from package.json
+    var pkgConfig = grunt.file.readJSON('package.json');
+
+    grunt.initConfig({
+        pkg: pkgConfig,
+
+               version: {
+                       project: {
+                               src: ['package.json']
+                       },
+                       src: {
+                               options: {
+                                       prefix: 'semver '
+                               },
+                               src: ['src/**/*.js']
+                       }
+               },
+
+        webpack: {
+            options: webpackDistConfig,
+            dist: {
+                cache: false
+            }
+        },
+
+        'webpack-dev-server': {
+            options: {
+                hot: true,
+                port: 9000,
+                webpack: webpackDevConfig,
+                publicPath: '/assets/',
+                contentBase: './<%= pkg.src %>/'
+            },
+
+            start: {
+                keepAlive: true
+            }
+        },
+
+        connect: {
+            options: {
+                port: 9000
+            },
+
+            dist: {
+                options: {
+                    keepalive: true,
+                    middleware: function (connect) {
+                        return [
+                            mountFolder(connect, pkgConfig.dist)
+                        ];
+                    }
+                }
+            }
+        },
+
+        open: {
+            options: {
+                delay: 500
+            },
+            dev: {
+                path: 'http://localhost:<%= connect.options.port %>/webpack-dev-server/'
+            },
+            dist: {
+                path: 'http://localhost:<%= connect.options.port %>/'
+            }
+        },
+
+        karma: {
+            unit: {
+                configFile: 'karma.conf.js'
+            }
+        },
+
+        copy: {
+            dist: {
+                files: [
+                    // includes files within path
+                    {
+                        flatten: true,
+                        expand: true,
+                        src: ['<%= pkg.src %>/*'],
+                        dest: '<%= pkg.dist %>/',
+                        filter: 'isFile'
+                                       },
+                                       {
+                                               flatten: true,
+                                               expand: true,
+                                               src: ['<%= pkg.src %>/images/*'],
+                                               dest: '<%= pkg.dist %>/images/'
+                                       },
+                                       {
+                                               flatten: true,
+                                               expand: true,
+                                               src: ['<%= pkg.src %>/images/logos/*'],
+                                               dest: '<%= pkg.dist %>/images/logos/'
+                                       },
+                                       {
+                                               flatten: true,
+                                               expand: true,
+                                               src: ['<%= pkg.src %>/assets/*'],
+                                               dest: '<%= pkg.dist %>/assets/'
+                    }
+                ]
+            }
+        },
+
+        clean: {
+            dist: {
+                files: [{
+                    dot: true,
+                    src: [
+                        '<%= pkg.dist %>'
+                    ]
+                }]
+            }
+        }
+    });
+
+    grunt.registerTask('serve', function (target) {
+        if (target === 'dist') {
+            return grunt.task.run(['build', 'open:dist', 'connect:dist']);
+        }
+
+        grunt.task.run([
+            'open:dev',
+            'webpack-dev-server'
+        ]);
+    });
+
+       grunt.registerTask('patch', ['version:project:patch', 'version:src', 'build:dist']);
+
+    grunt.registerTask('test', ['karma']);
+
+    grunt.registerTask('build', ['clean', 'copy', 'webpack']);
+
+    grunt.registerTask('default', []);
+};