<commit_before>module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    clean: ['jsc', 'css'],

    bower: {
      install: {
          options: {
              targetDir: './libs',
              install: true,
              copy: false,
              quiet: true
          }
      },
      prune: {
          options: {
              targetDir: './libs',
              copy: false,
              offline: true,
              quiet: true
          }
      }
    },

    exec: {
        buildOpenlayers: {
            command: 'python build.py -c none full ../OpenLayers.debug.js',
            stdout: false,
            cwd: 'libs/openlayers/build'
        },
        buildCytoscape: {
            command: 'make minify',
            stdout: false,
            cwd: 'libs/cytoscape.js'
        },
        buildPathFinding: {
            command: 'npm install -q && make',
            stdout: false,
            cwd: 'libs/PathFinding.js'
        }
    },

    less: {
        options: {
            paths: ['less'],
            sourceMap: true,
            sourceMapFilename: 'css/lumify.css.map',
            sourceMapURL: 'lumify.css.map',
            sourceMapRootpath: '/',
            dumpLineNumbers: 'all'
        },
        development: {
            files: {
                'css/lumify.css': 'less/lumify.less'
            }
        },
        production: {
            files: {
                'css/lumify.css': 'less/lumify.less'
            },
            options: {
                compress: true
            }
        }
    },

    requirejs: {
        options: {
            mainConfigFile: 'js/require.config.js',
            dir: 'jsc',
            baseUrl: 'js',
            preserveLicenseComments: false,
            removeCombined: false,
            /*
            modules: [
                { name: 'lumify' },
                { name: 'app' },
                { name: 'appFullscreenDetails' },
                { name: 'detail/artifact/artifact' },
                { name: 'detail/entity/entity' }
            ]
                */
        },
        development: {
            options: {
                logLevel: 2,
                optimize: 'none',
                keepBuildDir: true,
            }
        },
        production: {
            options: {
                logLevel: 0,
                optimize: 'uglify2',
                generateSourceMaps: true,
            }
        }
    },

    jshint: {
        options: {
            jshintrc: true
        },
        development: {
            src: ['js/**/*\.js']
        },
        ci: {
            src: ['js/**/*\.js'],
            options: {
                reporter: 'checkstyle',
                reporterOutput: 'build/jshint-checkstyle.xml'
            }
        }
    },

    jscs: {
        options: {
            config: '.jscs.json'
        },
        development: {
            src: [
                'js/**/*.js',
                'test/spec/**/*.js',
                '!js/**/three-plugins/*.js',
                '!js/graph/3d/3djs/3djs/graph/layout/force-directed.js',
                '!js/require.config.js'
            ],
        },
        ci: {
            src: [
                'js/**/*.js',
                'test/spec/**/*.js',
                '!js/**/three-plugins/*.js',
                '!js/graph/3d/3djs/3djs/graph/layout/force-directed.js',
                '!js/require.config.js'
            ],
            options: {
                force: true,
                reporter: 'checkstyle',
                reporterOutput: 'build/jscs-checkstyle.xml'
            }
        }
    },

    plato: {
        ci: {
            files: {
                'build/plato': ['js/**/*.js'],
            },
            options: {
                jshint: {
                    browser: true,
                    '-W033': true,
                    '-W040': true
                }
            }
        },
    },

    watch: {
        options: {
            dateFormat: function(time) {
                grunt.log.ok('The watch finished in ' + (time / 1000).toFixed(2) + 's. Waiting...');
            },
            spawn: false,
            interrupt: false
        },
        css: {
            files: ['less/**/*.less', 'libs/**/*.css', 'libs/**/*.less'],
            tasks: ['less:development', 'notify:css']
        },
        scripts: {
            files: ['js/**/*.js', 'js/**/*.ejs', 'js/**/*.hbs'],
            tasks: ['requirejs:development', 'notify:js'],
            options: {<commit_msg>Ignore new directory for temp plugin dev and refresh on gl changes<commit_after>module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    clean: ['jsc', 'css'],

    bower: {
      install: {
          options: {
              targetDir: './libs',
              install: true,
              copy: false,
              quiet: true
          }
      },
      prune: {
          options: {
              targetDir: './libs',
              copy: false,
              offline: true,
              quiet: true
          }
      }
    },

    exec: {
        buildOpenlayers: {
            command: 'python build.py -c none full ../OpenLayers.debug.js',
            stdout: false,
            cwd: 'libs/openlayers/build'
        },
        buildCytoscape: {
            command: 'make minify',
            stdout: false,
            cwd: 'libs/cytoscape.js'
        },
        buildPathFinding: {
            command: 'npm install -q && make',
            stdout: false,
            cwd: 'libs/PathFinding.js'
        }
    },

    less: {
        options: {
            paths: ['less'],
            sourceMap: true,
            sourceMapFilename: 'css/lumify.css.map',
            sourceMapURL: 'lumify.css.map',
            sourceMapRootpath: '/',
            dumpLineNumbers: 'all'
        },
        development: {
            files: {
                'css/lumify.css': 'less/lumify.less'
            }
        },
        production: {
            files: {
                'css/lumify.css': 'less/lumify.less'
            },
            options: {
                compress: true
            }
        }
    },

    requirejs: {
        options: {
            mainConfigFile: 'js/require.config.js',
            dir: 'jsc',
            baseUrl: 'js',
            preserveLicenseComments: false,
            removeCombined: false,
            /*
            modules: [
                { name: 'lumify' },
                { name: 'app' },
                { name: 'appFullscreenDetails' },
                { name: 'detail/artifact/artifact' },
                { name: 'detail/entity/entity' }
            ]
                */
        },
        development: {
            options: {
                logLevel: 2,
                optimize: 'none',
                keepBuildDir: true,
            }
        },
        production: {
            options: {
                logLevel: 0,
                optimize: 'uglify2',
                generateSourceMaps: true,
            }
        }
    },

    jshint: {
        options: {
            jshintrc: true
        },
        development: {
            src: ['js/**/*\.js']
        },
        ci: {
            src: ['js/**/*\.js'],
            options: {
                reporter: 'checkstyle',
                reporterOutput: 'build/jshint-checkstyle.xml'
            }
        }
    },

    jscs: {
        options: {
            config: '.jscs.json'
        },
        development: {
            src: [
                'js/**/*.js',
                'test/spec/**/*.js',
                '!js/**/three-plugins/*.js',
                '!js/graph/3d/3djs/3djs/graph/layout/force-directed.js',
                '!js/plugin-development/**/*.js',
                '!js/require.config.js'
            ],
        },
        ci: {
            src: [
                'js/**/*.js',
                'test/spec/**/*.js',
                '!js/**/three-plugins/*.js',
                '!js/graph/3d/3djs/3djs/graph/layout/force-directed.js',
                '!js/plugin-development/**/*.js',
                '!js/require.config.js'
            ],
            options: {
                force: true,
                reporter: 'checkstyle',
                reporterOutput: 'build/jscs-checkstyle.xml'
            }
        }
    },

    plato: {
        ci: {
            files: {
                'build/plato': ['js/**/*.js'],
            },
            options: {
                jshint: {
                    browser: true,
                    '-W033': true,
                    '-W040': true
                }
            }
        },
    },

    watch: {
        options: {
            dateFormat: function(time) {
                grunt.log.ok('The watch finished in ' + (time / 1000).toFixed(2) + 's. Waiting...');
            },
            spawn: false,
            interrupt: false
        },
        css: {
            files: ['less/**/*.less', 'libs/**/*.css', 'libs/**/*.less'],
            tasks: ['less:development', 'notify:css']
        },
        scripts: {
            files: [
                'js/**/*.js',
                'js/**/*.ejs',
                'js/**/*.hbs',
                'js/**/*.vsh',
                'js/**/*.fsh'
            ],
            tasks: ['requirejs:development', 'notify:js'],
            options: {
{'fraction_non_alphanumeric': 0.14580438268305718, 'fraction_numerical': 0.00427578834847675, 'mean_word_length': 0.9573221757322176, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3936405', 'n_tokens_mistral': 2777, 'n_tokens_neox': 2609, 'n_words': 433}