Advertisement
Guest User

Untitled

a guest
Nov 9th, 2017
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module.exports = function(gulp, config) {
  2.     'use strict';
  3.  
  4.     const archiver = require('gulp-archiver'),
  5.         rename = require('gulp-rename'),
  6.         del = require('del'),
  7.         pxml = require('pxml').PackageXML,
  8.         file = require('gulp-file'),
  9.         merge = require('merge-stream'),
  10.         forceDeploy = require('gulp-jsforce-deploy'),
  11.         uglify = require('gulp-uglify');
  12.  
  13.     let pageMetaXml = `<?xml version="1.0" encoding="UTF-8"?>
  14. <ApexPage xmlns="http://soap.sforce.com/2006/04/metadata">
  15.     <apiVersion>36.0</apiVersion>
  16.     <label>{0}</label>
  17. </ApexPage>`;
  18.  
  19.     let resourceMetaXml = `<?xml version="1.0" encoding="UTF-8"?>
  20. <StaticResource xmlns="http://soap.sforce.com/2006/04/metadata">
  21.     <cacheControl>Public</cacheControl>
  22.     <contentType>application/octet-stream</contentType>
  23. </StaticResource>`;
  24.  
  25.     gulp.task('clean-tmp', () => {
  26.         return del(['.tmp']);
  27.     });
  28.  
  29.     gulp.task('clean-build', () => {
  30.         return del(['build']);
  31.     });
  32.  
  33.     gulp.task('clean-resources', () => {
  34.         return del(['.tmp/static_resources']);
  35.     });
  36.  
  37.     gulp.task('init-deploy', gulp.series(
  38.         'clean-tmp',
  39.         'clean-build',
  40.         gulp.parallel('html:prod', 'visualforce:prod', 'scripts:prod', 'styles:prod')
  41.     ));
  42.  
  43.     gulp.task('tempgen:visualforce', () => {
  44.         return gulp.src(`build/${config.visualforce.page}.page`)
  45.             .pipe(gulp.dest('.tmp/pages'));
  46.     });
  47.  
  48.     gulp.task('tempgen:node_modules', () => {
  49.         return gulp.src([
  50.             'node_modules/@angular/**/bundles/*.umd.js',
  51.             'node_modules/rxjs/**/*.js',
  52.             'node_modules/jsforce/build/jsforce.min.js',
  53.             'node_modules/core-js/client/shim.min.js',
  54.             'node_modules/zone.js/dist/zone.js',
  55.             'node_modules/reflect-metadata/Reflect.js',
  56.             'node_modules/systemjs/dist/system.src.js',
  57.             'node_modules/moment/min/moment.min.js',
  58.             'node_modules/crypto-js/crypto-js.js',
  59.             'node_modules/lodash/lodash.min.js',
  60.             'node_modules/ngx-bootstrap/bundles/ngx-bootstrap.umd.js'
  61.         ], { base: 'node_modules' })
  62.             .pipe(gulp.dest(`.tmp/static_resources/${config.resources.node_module_resource_name}`));
  63.     });
  64.  
  65.     gulp.task('tempgen:app', () => {
  66.         return gulp.src(['build/**/*', `!build/${config.visualforce.template}`])
  67.             .pipe(gulp.dest(`.tmp/static_resources/${config.resources.app_resource_name}`));
  68.     });
  69.  
  70.     gulp.task('tempgen:salesforce', () => {
  71.         return gulp.src(['src/salesforce/**/*'])
  72.             .pipe(gulp.dest('.tmp/'));
  73.     });
  74.  
  75.     gulp.task('package:node_modules', () => {
  76.         return gulp.src(`.tmp/static_resources/${config.resources.node_module_resource_name}/**/*`, {
  77.             base: `.tmp/static_resources/${config.resources.node_module_resource_name}`
  78.         })
  79.             .pipe(archiver(`${config.resources.node_module_resource_name}.zip`))
  80.             .pipe(rename({
  81.                 extname: '.resource'
  82.             }))
  83.             .pipe(gulp.dest('.tmp/staticresources'));
  84.     });
  85.  
  86.     gulp.task('package:app', () => {
  87.         return gulp.src(`.tmp/static_resources/${config.resources.app_resource_name}/**/*`, {
  88.             base: `.tmp/static_resources/${config.resources.app_resource_name}`
  89.         })
  90.             .pipe(archiver(`${config.resources.app_resource_name}.zip`))
  91.             .pipe(rename({
  92.                 extname: '.resource'
  93.             }))
  94.             .pipe(gulp.dest('.tmp/staticresources'));
  95.     });
  96.  
  97.     gulp.task('tempgen:pxml', () => {
  98.         return file('package.xml', pxml.from_dir('.tmp').generate().to_string(), { src: true })
  99.             .pipe(gulp.dest('.tmp'));
  100.     });
  101.  
  102.     gulp.task('tempgen:meta-xml', () => {
  103.         let node_modules = file(`${config.resources.node_module_resource_name}.resource-meta.xml`,
  104.                 resourceMetaXml, { src: true })
  105.             .pipe(gulp.dest('.tmp/staticresources'));
  106.  
  107.         let app = file(`${config.resources.app_resource_name}.resource-meta.xml`,
  108.                 resourceMetaXml, { src: true })
  109.             .pipe(gulp.dest('.tmp/staticresources'));
  110.  
  111.         let page = file(`${config.visualforce.page}.page-meta.xml`,
  112.                 pageMetaXml.replace("{0}", config.visualforce.page), { src: true })
  113.             .pipe(gulp.dest('.tmp/pages'));
  114.  
  115.         return merge(node_modules, app, page);
  116.     });
  117.  
  118.     gulp.task('package-resources', gulp.parallel('package:app', 'package:node_modules'));
  119.  
  120.     gulp.task('tempgen', gulp.series(
  121.         'init-deploy',
  122.         gulp.parallel('tempgen:node_modules', 'tempgen:app', 'tempgen:visualforce'),
  123.         'package-resources',
  124.         'clean-resources',
  125.         'tempgen:salesforce',
  126.         'tempgen:pxml',
  127.         'tempgen:meta-xml',
  128.         'clean-build'
  129.     ));
  130.  
  131.     gulp.task('deploy:jsforce', () => {
  132.         return gulp.src('.tmp/**/*', { base: '.' })
  133.         .pipe(archiver('pkg.zip'))
  134.         .pipe(forceDeploy({
  135.             username: 'mishaver@deloitte.ca.tulips',
  136.             password: 'deloitte123IGNo74LpVapEnWRgZOuKbPae',
  137.             loginUrl: 'https://test.salesforce.com',
  138.             version: '36.0',
  139.             checkOnly: process.env.CHECK_ONLY,
  140.             pollTimeout: 120*10000,
  141.             pollInterval: 10*10000
  142.         }));
  143.     });
  144.  
  145.  
  146.     gulp.task('deploy', gulp.series('tempgen', 'deploy:jsforce'));
  147.     gulp.task('deploy:classes', gulp.series('tempgen:salesforce', 'tempgen:pxml', 'deploy:jsforce'));
  148.  
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement