const gulp = require('gulp'),
      concat = require("gulp-concat"),
      rename = require("gulp-rename"),
      cleanCSS = require('gulp-clean-css'),
      order = require('gulp-order'),
      uglify = require('gulp-uglify'),
      streamqueue = require('streamqueue'),
      pipeline = require('readable-stream').pipeline;

gulp.task('copy', async function() {
  gulp.src('./node_modules/bootstrap/dist/js/bootstrap.js')
    .pipe(rename('v3-bootstrap.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/bootstrap/dist/css/bootstrap.css')
    .pipe(rename('v3-bootstrap.css'))
    .pipe(gulp.dest('./css/'));
  gulp.src('./node_modules/popper.js/dist/umd/popper.js')
    .pipe(rename('v3-popper.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/jquery/dist/jquery.min.js')
    .pipe(rename('v3-jquery.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/jasny-bootstrap/dist/js/jasny-bootstrap.min.js')
    .pipe(rename('v3-jasny-bootstrap.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/jasny-bootstrap/dist/css/jasny-bootstrap.css')
    .pipe(rename('v3-jasny-bootstrap.css'))
    .pipe(gulp.dest('./css/'));
  gulp.src('./node_modules/animate.css/animate.css')
    .pipe(rename('v3-animate.css'))
    .pipe(gulp.dest('./css/'));
  gulp.src('./node_modules/svg-morpheus/compile/minified/svg-morpheus.js')
    .pipe(rename('v3-svg-morpheus.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/moment/min/moment.min.js')
    .pipe(rename('v3-moment.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/@fullcalendar/core/main.js')
    .pipe(rename('v3-fullcalendar.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/@fullcalendar/core/main.css')
    .pipe(rename('v3-fullcalendar.css'))
    .pipe(gulp.dest('./css/'));
  gulp.src('./node_modules/@fullcalendar/google-calendar/main.js')
    .pipe(rename('v3-fullcalendar-google.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/@fullcalendar/daygrid/main.js')
    .pipe(rename('v3-fullcalendar-daygrid.js'))
    .pipe(gulp.dest('./js/'));
  gulp.src('./node_modules/@fullcalendar/daygrid/main.css')
    .pipe(rename('v3-fullcalendar-daygrid.css'))
    .pipe(gulp.dest('./css/'));
  console.log("files 📄 from npm pkgs ");
});

gulp.task('css', async function() {
  return streamqueue({ objectMode: true },
      gulp.src('./css/fonts.css'),
      gulp.src('./css/v3-animate.css'),
      gulp.src('./css/v3-fullcalendar-daygrid.css'),
      gulp.src('./css/v3-fullcalendar.css'),
      gulp.src('./css/v3-bootstrap.css'),
      gulp.src('./style.css')
    )
    .pipe(concat('v3-style.css'))
    .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
    .pipe(rename('v3-style.min.css'))
    .pipe(gulp.dest('./', { overwrite:true }));
  gulp.src('css/front-page.css')
    .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
    .pipe(rename('v3-front.min.css'))
    .pipe(gulp.dest('./css/', { overwrite:true }));
  console.log("CSS built 🔧 ");
});

gulp.task('cssf', async function() {
  gulp.src('css/front-page.css')
    .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
    .pipe(rename('v3-front.min.css'))
    .pipe(gulp.dest('./css/', { overwrite:true }));
  console.log("CSSF built 🔧 ");
});

gulp.task('js', async function() {
  return streamqueue({ objectMode: true },
      gulp.src('./js/v3-jquery.js'),
      gulp.src('./js/v3-popper.js'),
      gulp.src('./js/v3-bootstrap.js'),
      gulp.src('./js/v3-jasny-bootstrap.js'),
      gulp.src('./js/v3-moment.js'),
      gulp.src('./js/v3-fullcalendar.js'),
      gulp.src('./js/v3-fullcalendar-daygrid.js'),
      gulp.src('./js/v3-fullcalendar-google.js'),
      gulp.src('./js/modernizr.js'),
      gulp.src('./js/validate.js'),
      gulp.src('./js/scripts.js')
    )
    .pipe(concat('v3-script.js'))
    .pipe(uglify())
    .pipe(rename('v3-script.min.js'))
    .pipe(gulp.dest('./js/', { overwrite:true }))
  console.log("JS built 🔧 ");
});

gulp.task('jsf', async function() {
  return streamqueue({ objectMode: true },
    gulp.src('./js/v3-jquery.js'),
    gulp.src('./js/svg-morpheus.js'),
    gulp.src('./js/messenger.min.js'),
    gulp.src('./js/v3-bootstrap.js'),
    gulp.src('./js/terminal.js'),
    gulp.src('./js/front-page.js')
  )
  .pipe(concat('v3-front.js'))
  .pipe(uglify())
  .pipe(rename('v3-front.min.js'))
  .pipe(gulp.dest('./js/', { overwrite:true }))
console.log("JSF built 🔧 ");
});