1+ var gulp = require ( 'gulp' ) ,
2+ msbuild = require ( 'gulp-msbuild' ) ,
3+ browserify = require ( 'gulp-browserify' ) ,
4+ minifyCss = require ( 'gulp-minify-css' ) ,
5+ uglify = require ( 'gulp-uglify' ) ,
6+ assemblyInfo = require ( 'gulp-dotnet-assembly-info' ) ,
7+ plumber = require ( 'gulp-plumber' ) ,
8+ config = require ( './package.json' ) ,
9+ zip = require ( 'gulp-zip' ) ,
10+ filter = require ( 'gulp-filter' ) ,
11+ merge = require ( 'merge2' ) ,
12+ gutil = require ( 'gulp-util' ) ,
13+ markdown = require ( 'gulp-markdown' ) ,
14+ rename = require ( 'gulp-rename' ) ,
15+ manifest = require ( 'gulp-dnn-manifest' ) ,
16+ path = require ( 'path' ) ,
17+ concat = require ( 'gulp-concat' ) ,
18+ less = require ( 'gulp-less' ) ,
19+ lessPluginCleanCSS = require ( 'less-plugin-clean-css' ) ,
20+ cleancss = new lessPluginCleanCSS ( {
21+ advanced : true
22+ } ) ;
23+
24+ gulp . task ( 'less' , function ( ) {
25+ return gulp . src ( 'css/src/less/module.less' )
26+ . pipe ( less ( {
27+ paths : [ path . join ( __dirname , 'less' , 'includes' ) ] ,
28+ plugins : [ cleancss ]
29+ } ) )
30+ . pipe ( gulp . dest ( '.' ) ) ;
31+ } ) ;
32+
33+ gulp . task ( 'css' , [ 'less' ] , function ( ) {
34+ return gulp . src ( 'css/src/module.css' )
35+ . pipe ( gulp . dest ( '.' ) ) ;
36+ } ) ;
37+
38+ gulp . task ( 'watch' , function ( ) {
39+ gulp . watch ( 'css/src/**/*.less' , [ 'css' ] ) ;
40+ } ) ;
41+
42+ gulp . task ( 'assemblyInfo' , function ( ) {
43+ return gulp
44+ . src ( '**/AssemblyInfo.cs' )
45+ . pipe ( assemblyInfo ( {
46+ title : config . dnnModule . friendlyName ,
47+ description : config . description ,
48+ version : config . version ,
49+ fileVersion : config . version ,
50+ company : config . dnnModule . owner . organization ,
51+ copyright : function ( value ) {
52+ return 'Copyright ' + new Date ( ) . getFullYear ( ) + ' by ' + config . dnnModule . owner . organization ;
53+ }
54+ } ) )
55+ . pipe ( gulp . dest ( '.' ) ) ;
56+ } ) ;
57+
58+ gulp . task ( 'build' , [ 'assemblyInfo' ] , function ( ) {
59+ return gulp . src ( './FlickrGallery.csproj' )
60+ . pipe ( msbuild ( {
61+ toolsVersion : 14.0 ,
62+ targets : [ 'Clean' , 'Build' ] ,
63+ errorOnFail : true ,
64+ stdout : true ,
65+ properties : {
66+ Configuration : 'Release' ,
67+ OutputPath : config . dnnModule . pathToAssemblies
68+ }
69+ } ) ) ;
70+ } ) ;
71+
72+ gulp . task ( 'packageInstall' , [ 'build' ] , function ( ) {
73+ var packageName = config . dnnModule . fullName + '_' + config . version ;
74+ var dirFilter = filter ( fileTest ) ;
75+ return merge (
76+ merge (
77+ gulp . src ( [
78+ 'App_LocalResources/*.resx' ,
79+ '*.ascx' ,
80+ 'Views/**/*.cshtml' ,
81+ 'fonts/*.*'
82+ ] , {
83+ base : '.'
84+ } ) ,
85+ gulp . src ( [
86+ '**/*.html'
87+ ] , {
88+ base : '.'
89+ } )
90+ . pipe ( dirFilter ) ,
91+ gulp . src ( [
92+ 'css/*.png' ,
93+ 'css/*.gif' ,
94+ 'css/*.svg'
95+ ] , {
96+ base : '.'
97+ } ) ,
98+ gulp . src ( [
99+ '*.png'
100+ ] , {
101+ base : '.'
102+ } ) ,
103+ gulp . src ( [
104+ '**/*.txt'
105+ ] , {
106+ base : '.'
107+ } )
108+ . pipe ( dirFilter ) ,
109+ gulp . src ( [ '*.css' , 'css/*.css' ] , {
110+ base : '.'
111+ } )
112+ . pipe ( minifyCss ( ) )
113+ . pipe ( dirFilter ) ,
114+ gulp . src ( [ 'js/*.js' , '!js/*.min.js' ] , {
115+ base : '.'
116+ } )
117+ . pipe ( uglify ( ) . on ( 'error' , gutil . log ) ) ,
118+ gulp . src ( [ 'js/*.min.js' ] , {
119+ base : '.'
120+ } )
121+ )
122+ . pipe ( zip ( 'Resources.zip' ) ) ,
123+ gulp . src ( config . dnnModule . pathToSupplementaryFiles + '/*.dnn' )
124+ . pipe ( manifest ( config ) ) ,
125+ gulp . src ( [ config . dnnModule . pathToAssemblies + '/*.dll' ,
126+ config . dnnModule . pathToScripts + '/*.SqlDataProvider' ,
127+ config . dnnModule . pathToSupplementaryFiles + '/License.txt' ,
128+ config . dnnModule . pathToSupplementaryFiles + '/ReleaseNotes.txt'
129+ ] ) ,
130+ gulp . src ( config . dnnModule . pathToSupplementaryFiles + '/ReleaseNotes.md' )
131+ . pipe ( markdown ( ) )
132+ . pipe ( rename ( 'ReleaseNotes.txt' ) )
133+ )
134+ . pipe ( zip ( packageName + '_Install.zip' ) )
135+ . pipe ( gulp . dest ( config . dnnModule . packagesPath ) ) ;
136+ } ) ;
137+
138+ gulp . task ( 'packageSource' , [ 'build' ] , function ( ) {
139+ var packageName = config . dnnModule . fullName + '_' + config . version ;
140+ var dirFilter = filter ( fileTest ) ;
141+ return merge (
142+ gulp . src ( [ '**/*.html' ,
143+ '**/*.png' ,
144+ '**/*.gif' ,
145+ '**/*.css' ,
146+ 'js/**/*.js' ,
147+ '**/*.??proj' ,
148+ '**/*.sln' ,
149+ '**/*.json' ,
150+ '**/*.cs' ,
151+ '**/*.vb' ,
152+ '**/*.resx' ,
153+ '**/*.ascx' ,
154+ '**/*.cshtml' ,
155+ '**/*.less' ,
156+ 'fonts/*.*' ,
157+ config . dnnModule . pathToSupplementaryFiles + '**/*.*'
158+ ] , {
159+ base : '.'
160+ } )
161+ . pipe ( dirFilter )
162+ . pipe ( zip ( 'Resources.zip' ) ) ,
163+ gulp . src ( config . dnnModule . pathToSupplementaryFiles + '/*.dnn' )
164+ . pipe ( manifest ( config ) ) ,
165+ gulp . src ( [ config . dnnModule . pathToAssemblies + '/*.dll' ,
166+ config . dnnModule . pathToScripts + '/*.SqlDataProvider' ,
167+ config . dnnModule . pathToSupplementaryFiles + '/License.txt' ,
168+ config . dnnModule . pathToSupplementaryFiles + '/ReleaseNotes.txt'
169+ ] )
170+ )
171+ . pipe ( zip ( packageName + '_Source.zip' ) )
172+ . pipe ( gulp . dest ( config . dnnModule . packagesPath ) ) ;
173+ } )
174+
175+ gulp . task ( 'package' , [ 'packageInstall' , 'packageSource' ] , function ( ) {
176+ return null ;
177+ } )
178+
179+ function fileTest ( file ) {
180+ var res = false ;
181+ for ( var i = config . dnnModule . excludeFilter . length - 1 ; i >= 0 ; i -- ) {
182+ res = res | file . relative . startsWith ( config . dnnModule . excludeFilter [ i ] ) | file . relative . indexOf ( '/obj/' ) > - 1 ;
183+ } ;
184+ return ! res ;
185+ }
186+
187+ function startsWith ( str , strToSearch ) {
188+ return str . indexOf ( strToSearch ) === 0 ;
189+ }
0 commit comments