import gulp from 'gulp';
{{#if (calc jsBundler '===' 'browserify')}}
import buildJs from '@hidoo/gulp-task-build-js-browserify';
{{/if}}
{{#if (calc jsBundler '===' 'rollup')}}
import buildJs from '@hidoo/gulp-task-build-js-rollup';
{{/if}}
{{#if jsDeps}}
import {concatJs} from '@hidoo/gulp-task-concat';
{{/if}}
import * as config from '../config.js';

{{#if multiDevice}}

  // define main task
  const mainDesktop = buildJs({
    name: 'js:desktop:main',
    src: `${config.path.srcJsDesktop}/main.js`,
    dest: `${config.path.destJsDesktop}`,
    filename: 'main.js',
    compress: config.compress
  });
  const mainMobile = buildJs({
    name: 'js:mobile:main',
    src: `${config.path.srcJsMobile}/main.js`,
    dest: `${config.path.destJsMobile}`,
    filename: 'main.js',
    compress: config.compress
  });

  {{#if jsDeps}}
  // define dependency task
  const depsDesktop = concatJs({
    name: 'js:desktop:deps',
    src: [
      `${config.path.srcJsDesktop}/deps/sample-b.js`,
      `${config.path.srcJsDesktop}/deps/sample-a.js`
    ],
    dest: config.path.destJsDesktop,
    filename: 'bundle.js',
    compress: config.compress
  });
  const depsMobile = concatJs({
    name: 'js:mobile:deps',
    src: [
      `${config.path.srcJsMobile}/deps/sample-b.js`,
      `${config.path.srcJsMobile}/deps/sample-a.js`
    ],
    dest: config.path.destJsMobile,
    filename: 'bundle.js',
    compress: config.compress
  });
  {{/if}}

  // define watch task
  const watchDesktop = () => {
    gulp.watch(
      [
        {{#if jsDeps}}
          `!${config.path.srcJsDesktop}/deps/*.js`,
        {{/if}}
        `${config.path.srcJsDesktop}/**/*.js`
      ],
      mainDesktop
    );
    {{#if jsDeps}}
    gulp.watch(
      [
        `${config.path.srcJsDesktop}/deps/*.js`
      ],
      depsDesktop
    );
    {{/if}}
  };
  const watchMobile = () => {
    gulp.watch(
      [
        {{#if jsDeps}}
          `!${config.path.srcJsMobile}/deps/*.js`,
        {{/if}}
        `${config.path.srcJsMobile}/**/*.js`
      ],
      mainMobile
    );
    {{#if jsDeps}}
    gulp.watch(
      [
        `${config.path.srcJsMobile}/deps/*.js`
      ],
      depsMobile
    );
    {{/if}}
  };

  // export tasks
  export const desktop = {
    main: mainDesktop,
    {{#if jsDeps}}
      deps: depsDesktop,
    {{/if}}
    watch: watchDesktop
  };
  export const mobile = {
    main: mainMobile,
    {{#if jsDeps}}
      deps: depsMobile,
    {{/if}}
    watch: watchMobile
  };

{{else}}

  // define main task
  export const main = buildJs({
    name: 'js:main',
    src: `${config.path.srcJs}/main.js`,
    dest: `${config.path.destJs}`,
    filename: 'main.js',
    compress: config.compress
  });

  {{#if jsDeps}}
  // define dependency task
  export const deps = concatJs({
    name: 'js:deps',
    src: [
      `${config.path.srcJs}/deps/sample-b.js`,
      `${config.path.srcJs}/deps/sample-a.js`
    ],
    dest: config.path.destJs,
    filename: 'bundle.js',
    compress: config.compress
  });
  {{/if}}

  // define watch task
  export const watch = () => {
    gulp.watch(
      [
        {{#if jsDeps}}
          `!${config.path.srcJs}/deps/*.js`,
        {{/if}}
        `${config.path.srcJs}/**/*.js`
      ],
      main
    );
    {{#if jsDeps}}
    gulp.watch(
      [
        `${config.path.srcJs}/deps/*.js`
      ],
      deps
    );
    {{/if}}
  };

{{/if}}
