javiercejudo/javiercejudo.com

View on GitHub
gulp-tasks/publish.js

Summary

Maintainability
A
3 hrs
Test Coverage
var
  gulp = require('gulp'),
  jc = require('../jcConfig'),
  paths = jc.paths,
  isS3Available;

isS3Available = function () {
  return (process.env.S3_KEY !== '' && process.env.S3_SECRET !== '');
};

gulp.task('publish-fonts', function () {
  if (!isS3Available()) {
    return;
  }

  var
    publisher, headers,
    awspublish = require('gulp-awspublish'),
    gzip = require('gulp-gzip'),
    rename = require('gulp-rename');

  publisher = awspublish.create({
    params: {
      Bucket: 'jc-build'
    },
    accessKeyId: process.env.S3_KEY,
    secretAccessKey: process.env.S3_SECRET
  });

  headers = {
   'Cache-Control': 'max-age=604800, no-transform, public',
   'Content-Encoding': 'gzip'
  };

  return gulp.src(paths.fonts + '/**/*.{eot,svg,ttf,woff}')
    .pipe(gzip({ append: false }))
    .pipe(rename(function (path) {
        path.dirname += '/' + paths.fonts;
    }))
    .pipe(publisher.publish(headers))
    .pipe(awspublish.reporter());
});

gulp.task('publish-build', ['publish-fonts'], function () {
  if (!isS3Available()) {
    return;
  }

  var
    publisher, headers,
    awspublish = require('gulp-awspublish'),
    gzip = require('gulp-gzip');

  publisher = awspublish.create({
    params: {
      Bucket: 'jc-build'
    },
    accessKeyId: process.env.S3_KEY,
    secretAccessKey: process.env.S3_SECRET
  });

  headers = {
   'Cache-Control': 'max-age=31536000, no-transform, public',
   'Content-Encoding': 'gzip'
  };

  return gulp.src(paths.build + '/**/*.{css,js}')
    .pipe(gzip({ append: false }))
    .pipe(publisher.publish(headers))
    .pipe(awspublish.reporter());
});

gulp.task('publish-wraith', function () {
  if (!isS3Available()) {
    return;
  }

  var
    publisher,
    awspublish = require('gulp-awspublish');

  publisher = awspublish.create({
    params: {
      Bucket: 'jc-wraith-shots'
    },
    accessKeyId: process.env.S3_KEY,
    secretAccessKey: process.env.S3_SECRET
  });

  return gulp.src(paths.wraith + '/shots/**/*')
    .pipe(publisher.publish())
    .pipe(publisher.sync())
    .pipe(awspublish.reporter());
});

gulp.task('publish-backup', ['download-data'], function () {
  if (!isS3Available()) {
    return;
  }

  var
    publisher,
    awspublish = require('gulp-awspublish'),
    rename = require('gulp-rename'),
    date = new Date();

  publisher = awspublish.create({
    params: {
      Bucket: 'jc-firebase'
    },
    accessKeyId: process.env.S3_KEY,
    secretAccessKey: process.env.S3_SECRET
  });

  return gulp.src(paths.data + '/min/c3jud0-export.json')
    .pipe(rename(date.toISOString() + '.json'))
    .pipe(publisher.publish())
    .pipe(awspublish.reporter());
});