// Requires
var gulp = require('gulp');

// Include plugins
var postcss = require('gulp-postcss');
var sass = require('gulp-sass');
var rename = require('gulp-rename');

var cssnano = require('cssnano'); // minifies CSS
var autoprefixer = require('autoprefixer');

var unprefix = require("postcss-unprefix"); // deletes old prefixes
var flexbugs = require('postcss-flexbugs-fixes'); // flexbox fixes for IE
var gaps = require('postcss-gap-properties'); // gaps polyfill

var browsersList = [
  '> 1%',
  'last 2 versions',
  'IE >= 10', 'Edge >= 16',
  'Chrome >= 60',
  'Firefox >= 50', 'Firefox ESR',
  'Safari >= 10',
  'ios_saf >= 10',
  'Android >= 5'
];

var plugins = [
  unprefix(),
    autoprefixer({
      grid: true,
      browsers: browsersList
    }),
    flexbugs(),
    gaps()
];

var pluginsProd = [
  unprefix(),
    autoprefixer({
      grid: true,
      browsers: browsersList
    }),
    flexbugs(),
    gaps(),
    cssnano()
];

// tâche cssDev = compile vers knacss-unminified.css
gulp.task('cssDev', function () {
  return gulp.src('./sass/knacss.scss')
    .pipe(sass({
      outputStyle: 'expanded' // CSS non minifiée plus lisible ('}' à la ligne)
    }))
    .pipe(postcss(plugins))
    .pipe(rename('knacss-unminified.css'))
    .pipe(gulp.dest('./css/'));
});

// tâche cssProd = compile vers knacss.css minifié
gulp.task('cssProd', function () {
  return gulp.src('./sass/knacss.scss')
    .pipe(sass())
    .pipe(postcss(pluginsProd))
    .pipe(gulp.dest('./css/'));
});

gulp.task('grillade', function() {
  return gulp.src('./sass/_library/grillade-grid.scss')
    .pipe(sass())
    .pipe(postcss(pluginsProd))
    .pipe(gulp.dest('./css/'));
});

gulp.task('grillade-flex', function() {
  return gulp.src('./sass/_library/grillade-flex.scss')
    .pipe(sass())
    .pipe(postcss(pluginsProd))
    .pipe(gulp.dest('./css/'));
});

// Watcher
gulp.task('watch', function() {
  gulp.watch(['./sass/*.scss'], ['cssDev']);
});


gulp.task('default', ['cssDev', 'cssProd', 'grillade', 'grillade-flex']);
