github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/examples/internal/browser/gulpfile.js (about)

     1  "use strict";
     2  
     3  var gulp = require('gulp');
     4  
     5  var path = require('path');
     6  
     7  var bower = require('gulp-bower');
     8  var exit = require('gulp-exit');
     9  var shell = require('gulp-shell');
    10  var jasmineBrowser = require('gulp-jasmine-browser');
    11  var webpack = require('webpack-stream');
    12  const child = require('child_process');
    13  
    14  gulp.task('bower', function () {
    15    return bower();
    16  });
    17  
    18  gulp.task('server', shell.task([
    19    'go build -o bin/example-server github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/cmd/example-grpc-server',
    20  ]));
    21  
    22  gulp.task('gateway', shell.task([
    23    'go build -o bin/example-gw github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/cmd/example-gateway-server',
    24  ]));
    25  
    26  gulp.task('serve-server', ['server'], function () {
    27    let server = child.spawn('bin/example-server', [], { stdio: 'inherit' });
    28    process.on('exit', function () {
    29      server.kill();
    30    });
    31  });
    32  
    33  gulp.task('serve-gateway', ['gateway', 'serve-server'], function () {
    34    let gw = child.spawn('bin/example-gw', [
    35      '--openapi_dir', path.join(__dirname, "../proto/examplepb"),
    36    ], { stdio: 'inherit' });
    37    process.on('exit', function () {
    38      gw.kill();
    39    });
    40  });
    41  
    42  gulp.task('backends', ['serve-gateway', 'serve-server']);
    43  
    44  var specFiles = ['*.spec.js'];
    45  gulp.task('test', ['backends'], function (done) {
    46    let s = gulp.src(specFiles)
    47    console.log(s);
    48    return s
    49      .pipe(webpack({ output: { filename: 'spec.js' } }))
    50      .pipe(jasmineBrowser.specRunner({
    51        console: true,
    52        sourceMappedStacktrace: true,
    53      }))
    54      .pipe(jasmineBrowser.headless({
    55        driver: 'phantomjs',
    56        findOpenPort: true,
    57        catch: true,
    58        throwFailures: true,
    59      }))
    60      .on('error', function (err) {
    61        done(err);
    62        process.exit(1);
    63      })
    64      .pipe(exit());
    65  });
    66  
    67  gulp.task('serve', ['backends'], function (done) {
    68    var JasminePlugin = require('gulp-jasmine-browser/webpack/jasmine-plugin');
    69    var plugin = new JasminePlugin();
    70  
    71    return gulp.src(specFiles)
    72      .pipe(webpack({
    73        output: { filename: 'spec.js' },
    74        watch: true,
    75        plugins: [plugin],
    76      }))
    77      .pipe(jasmineBrowser.specRunner({
    78        sourceMappedStacktrace: true,
    79      }))
    80      .pipe(jasmineBrowser.server({
    81        port: 8000,
    82        whenReady: plugin.whenReady,
    83      }));
    84  });
    85  
    86  gulp.task('default', ['test']);