const gulp = require('gulp');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const sass = require('gulp-sass');
const child = require('child_process');
const gutil = require('gulp-util');
const browserSync = require('browser-sync');
const sourcemaps = require('gulp-sourcemaps');

// PATHS
const config = {
  dist: './_site',
  paths: {
    cssFiles: './_src/_sass/**/*.?(s)css',
    jsFiles: [
      '_src/_scripts/jquery-2.1.1.min.js',
      '_src/_scripts/jquery.fitvids.js',
      '_src/_scripts/ap-components.min.js',
      '_src/_scripts/main.js'
    ],
    markupFiles: [
      '_src/**/*.md',
      '_src/**/*.html'
    ]
  },
  messages: {
    jekyllBuild: '<span style="color: grey">Running:</span> $ jekyll build'
  }
};

//Sass to CSS Task
gulp.task('css', () => {
  gulp.src(config.paths.cssFiles)
      .pipe(sourcemaps.init())
      .pipe(sass({
        includePaths: ['node_modules/susy/sass']
      }).on('error', sass.logError))
      .pipe(concat('main.css'))
      .pipe(sourcemaps.write())
      .pipe(gulp.dest('./_src/assets/css'));
});

gulp.task('js', () => {
  gulp.src(config.paths.jsFiles)
      .pipe(concat('bundle.min.js'))
      .pipe(uglify())
      .pipe(gulp.dest('./_src/assets/js'));
});

gulp.task('jekyll:build', (done) => {
  browserSync.notify(config.messages.jekyllBuild);
  const jekyll = child.spawn('jekyll', ['build', '--incremental', '--drafts'], {stdio: 'inherit'})
    .on('close', done);
});

gulp.task('jekyll:rebuild', ['css', 'jekyll:build'], () => {
    browserSync.reload();
});

gulp.task('browser-sync', ['css', 'jekyll:build'], () => {
  browserSync({
    server: {
      baseDir: config.dist,
      serveStaticOptions: {
        extensions: ['html']
      }
    }
  })
});

gulp.task('watch', () => {
  gulp.watch(config.paths.cssFiles, ['css', 'jekyll:build']);
  gulp.watch(config.paths.jsFiles, ['js', 'jekyll:build']);
  gulp.watch(config.paths.markupFiles, ['jekyll:build']);
});

gulp.task('default', ['browser-sync', 'watch'])
