summaryrefslogtreecommitdiffstats
path: root/src/wwwroot/libraries/fomantic/tasks/build/assets.js
blob: bfb0cf28625e08551c429fd4394b8fa8f46422f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*******************************
 Build Task
 *******************************/

var
  gulp      = require('gulp'),

  // gulp dependencies
  chmod     = require('gulp-chmod'),
  gulpif    = require('gulp-if'),
  normalize = require('normalize-path'),
  print     = require('gulp-print').default,

  // config
  config    = require('../config/user'),
  tasks     = require('../config/tasks'),
  install   = require('../config/project/install'),

  log       = tasks.log
;

function build(src, config) {
  return gulp.src(src, {base: config.paths.source.themes})
    .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions)))
    .pipe(gulp.dest(config.paths.output.themes))
    .pipe(print(log.created))
    ;
}

function buildAssets(src, config, callback) {
  if (!install.isSetup()) {
    console.error('Cannot build assets. Run "gulp install" to set-up Semantic');
    callback();
    return;
  }

  if (callback === undefined) {
    callback = config;
    config   = src;
    src      = config.paths.source.themes + '/**/assets/**/*.*';
  }

  // copy assets
  var assets         = () => build(src, config);
  assets.displayName = "Building Assets";

  gulp.series(assets)(callback);
}

module.exports = function (callback) {
  buildAssets(config, callback);
};

module.exports.watch = function (type, config) {
  gulp
    .watch([normalize(config.paths.source.themes + '/**/assets/**/*.*')])
    .on('all', function (event, path) {
      console.log('Change in assets detected');
      return gulp.series((callback) => buildAssets(path, config, callback))();
    });
};

module.exports.buildAssets = buildAssets;