'use strict';

global.gulp = require('gulp');
global.plugins = require('gulp-load-plugins')();

global.config = {
    assetsDir: 'assets',
    bowerDir: 'vendor/bower',
    jsPattern: 'js/**/*.js',
    outputDir: 'source/assets',
    production: plugins.util.env.production || false,
    sassPattern: 'sass/**/*.sass',
}

global.app = {};

app.css = function (paths, filename) {
    gulp.src(paths)
        .pipe(plugins.plumber())
        .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
        .pipe(plugins.sassGlob())
        .pipe(plugins.sass())
        .pipe(plugins.autoprefixer({ browsers: 'last 2 versions' }))
        .pipe(plugins.concat(filename))
        .pipe(plugins.if(config.production, plugins.cleanCss()))
        .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.')))
        .pipe(plugins.if(!config.production, gulp.dest(config.outputDir + '/css')))
        .pipe(plugins.if(!config.production, plugins.refresh()))
        .pipe(gulp.dest(config.outputDir + '/css'));
};

app.js = function (paths, filename) {
    gulp.src(paths)
        .pipe(plugins.plumber())
        .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
        .pipe(plugins.concat(filename))
        .pipe(plugins.if(config.production, plugins.uglify()))
        .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.')))
        .pipe(gulp.dest(config.outputDir + '/js'));
};

app.copy = function (source, destination) {
    gulp.src(source)
        .pipe(gulp.dest(destination));
};

require('require-dir')('./gulp');