JonSn0w/Hyde

View on GitHub
gulpfile.js

Summary

Maintainability
A
2 hrs
Test Coverage
'use strict';
const gulp = require('gulp');
const fs = require('fs');
const sass = require('gulp-sass');
const process = require('process');
const rebuild = require('electron-rebuild');
const packager = require('electron-packager');
const electron = require('electron-connect').server.create();
const config = JSON.parse(fs.readFileSync('package.json'));
const exec = require('child_process').exec;
const appVersion = config.version;
var electronPackage = require('electron/package.json');
var electronVersion = electronPackage.version;

const options = {
    dir: '.',
    name: 'Hyde',
    out: 'release',
    overwrite: true,
    prune: true,
  asar: false,
    version: electronVersion,
    appVersion: appVersion,
  ignore: [
    '.github/*',
    '*-cache/*',
    '.codeclimate.yml',
    '.travis.yml',
    '.eslint.yml',
    '.sass-lint.yml',
    'frontMatter.yml',
    '*_.*'
  ]
};


gulp.task('launch', () => {
    electron.start('-d');
});

gulp.task('rebuild', () => {
  var arch = process.arch;
  rebuild.default(__dirname, electronVersion, arch)
    .then(() => {
      console.info('Electron Rebuild Successful');
      return true;
    }).catch((e) => {
      log('Rebuilding modules against Electron didn\'t work: ' + e);
    });
});

gulp.task('liveReload', () => {
    electron.start();
    // Watch HTML & JS files and restart Electron if they change
  gulp.watch(['./index.html'], electron.restart);
    gulp.watch(['./*.js'], electron.restart);
    gulp.watch(['./js/*.js'], electron.restart);
    // Watch CSS & SCSS files, but only reload (no restart necessary)
    gulp.watch(['./assets/css/*.css'], electron.reload);
    gulp.watch(['./assets/css/**/*.css'], electron.reload);
  gulp.watch(['./assets/sass/*.scss'], ['scss']);
  gulp.watch(['./assets/sass/**/*.scss'], ['scss']);
});

gulp.task('scss', () => {
  gulp.src('./assets/sass/*.scss')
    .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError))
    .pipe(gulp.dest('./assets/css/'));
  gulp.src('./assets/sass/preview/*.scss')
    .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError))
    .pipe(gulp.dest('./assets/css/preview/'));
});

gulp.task('clean', () => {
  exec('rm -rf ./dist', function (stdout, stderr) {
    console.log(stdout);
    console.log(stderr);
  });
});

gulp.task('build:linux', () => {
  options.arch = 'amd64';
  options.platform = 'linux';
  options.icon = '/assets/img/icon/png/256x256.png';
  packager(options, (err) => {
    if(err) console.error(err);
    done();
  });
});

gulp.task('build:win', (done) => {
    options.arch = 'ia32';
    options.platform = 'win32';
    options.icon = '/assets/img/icon/ico/icon.ico';
    packager(options, (err) => {
        if(err) console.error(err);
        done();
    });
});

gulp.task('build:osx', (done) => {
    options.arch = 'x64';
    options.platform = 'darwin';
    options.icon = '/assets/img/icon/icns/icon.icns';
    packager(options, (err) => {
        if(err) console.error(err);
        done();
    });
});


gulp.task('test', ['launch']);
gulp.task('default', ['rebuild', 'scss', 'launch']);
gulp.task('start', ['rebuild', 'scss', 'launch']);
gulp.task('watch', ['rebuild', 'scss', 'liveReload']);
gulp.task('build', ['build:osx', 'build:win', 'build:linux']);