1+ var gulp = require ( 'gulp' )
2+ , sourcemaps = require ( 'gulp-sourcemaps' )
3+ , ts = require ( 'gulp-typescript' )
4+ , typescript = require ( 'typescript' )
5+ , del = require ( 'del' )
6+ , merge = require ( 'merge2' )
7+ , path = require ( 'path' )
8+ , spawn = require ( 'child_process' ) . spawn ;
9+
10+ var lib = {
11+ project : ts . createProject ( './src/lib/tsconfig.json' , { typescript : typescript } ) ,
12+ bin : "./bin/ts-async-github-sample" ,
13+ main : "./lib/github" ,
14+ base : "./src/lib/" ,
15+ dest : "./lib/" ,
16+ src : [ "./src/lib/**/*.ts" ] ,
17+ out : [ "./lib/**/*" ]
18+ } ;
19+
20+ gulp . task ( "clean:lib" , clean ( lib ) ) ;
21+ gulp . task ( "clean" , [ "clean:lib" ] ) ;
22+ gulp . task ( "build:lib" , build ( lib ) ) ;
23+ gulp . task ( "build" , [ "build:lib" ] ) ;
24+ gulp . task ( "test" , [ "build" ] , test ( lib ) ) ;
25+ gulp . task ( "watch:lib" , [ "build:lib" ] , watch ( src ( lib ) , [ "build:lib" ] ) ) ;
26+ gulp . task ( "watch" , [ "build" , "test" ] , watch ( src ( lib ) , [ "test" ] ) ) ;
27+ gulp . task ( "default" , [ "build" ] ) ;
28+
29+ function src ( ) {
30+ return Array . from ( arguments ) . reduce ( function ( ar , opts ) {
31+ return ar . concat ( opts . src ) ;
32+ } , [ ] ) ;
33+ }
34+
35+ function clean ( opts ) {
36+ return function ( done ) {
37+ del ( opts . out , done ) ;
38+ } ;
39+ }
40+
41+ function build ( opts ) {
42+ return function ( ) {
43+ var tee = gulp
44+ . src ( opts . src , { base : opts . base } )
45+ . pipe ( sourcemaps . init ( ) )
46+ . pipe ( ts ( opts . project ) ) ;
47+ return merge ( [
48+ tee . dts
49+ . pipe ( gulp . dest ( opts . dest ) ) ,
50+ tee . js
51+ . pipe ( sourcemaps . write ( '.' , { includeContent : false , sourceRoot : path . relative ( opts . dest , opts . base ) } ) )
52+ . pipe ( gulp . dest ( opts . dest ) )
53+ ] ) ;
54+ } ;
55+ }
56+
57+ function test ( opts ) {
58+ return function ( done ) {
59+ var args = [ opts . bin ] ;
60+ console . log ( "Executing test..." ) ;
61+ spawn ( process . argv [ 0 ] , args , { stdio : "inherit" } ) . on ( "exit" , function ( code ) {
62+ done ( code !== 0 ? "Error executing script." : undefined ) ;
63+ } ) ;
64+ } ;
65+ }
66+
67+ function watch ( src , tasks ) {
68+ return function ( ) {
69+ return gulp . watch ( src , tasks ) ;
70+ }
71+ }
0 commit comments