skyverge/wc-plugin-framework

View on GitHub
Gruntfile.js

Summary

Maintainability
A
1 hr
Test Coverage
/* jshint node:true */
module.exports = function( grunt ) {
    'use strict';

    // load all grunt tasks matching the `grunt-*` pattern
    require( 'load-grunt-tasks' )( grunt );

    // Show elapsed time
    require( 'time-grunt' )( grunt );

    var _    = require( 'underscore' );
    var path = require( 'path' );

    var gruntConfig = {};

    // options
    gruntConfig.options = {};

    gruntConfig.pkg = grunt.file.readJSON( 'package.json' ),

    // Set folder templates
    gruntConfig.dirs = {
        lang: 'woocommerce/i18n/languages',
        general: {
            css: 'woocommerce/assets/css',
            js: 'woocommerce/assets/js'
        },
        gateway : {
            css: 'woocommerce/payment-gateway/assets/css',
            js: 'woocommerce/payment-gateway/assets/js'
        }
    };

    function loadConfig( filepath ) {
        var object = {};
        var key;

        filepath = path.normalize( path.resolve( process.cwd(), filepath ) + '/' )

        var files = grunt.file.glob.sync( '*', { cwd: filepath } );

        files.forEach( function( option ) {
            key = option.replace(/\.js$/,'');
            object = _.extend( object, require( filepath + option )( grunt ) );
        });

        return object;
    };

    // load task configs
    gruntConfig = _.extend( gruntConfig, loadConfig( './grunt/configs/' ) );

    // Init Grunt
    grunt.initConfig( gruntConfig );

    // Load custom tasks
    grunt.loadTasks( 'grunt/tasks/' );

    // Register update_translations task
    grunt.registerTask( 'update_translations', [
        'shell:makepot',
        'potomo',
    ] );

    // Register build task
    grunt.registerTask( 'build', [
        'coffee',
        'sass',
        'update_translations',
    ] );

    // Register default task
    grunt.registerTask( 'default', [
        'coffee',
        'sass',
        'shell:makepot',
    ] );

};