1- module . exports = function ( grunt ) {
2- grunt . registerTask ( 'umbracoPackage' , 'Create Umbraco Package' , function ( ) {
3- grunt . config . requires ( 'umbracoPackage.options.name' ) ;
4- grunt . config . requires ( 'umbracoPackage.options.version' ) ;
5- grunt . config . requires ( 'umbracoPackage.options.license' ) ;
6- grunt . config . requires ( 'umbracoPackage.options.licenseUrl' ) ;
7- grunt . config . requires ( 'umbracoPackage.options.url' ) ;
8- grunt . config . requires ( 'umbracoPackage.options.author' ) ;
9- grunt . config . requires ( 'umbracoPackage.options.authorUrl' ) ;
10- grunt . config . requires ( 'umbracoPackage.options.manifest' ) ;
11- grunt . config . requires ( 'umbracoPackage.options.readme' ) ;
12- grunt . config . requires ( 'umbracoPackage.options.outputDir' ) ;
13- grunt . config . requires ( 'umbracoPackage.options.sourceDir' ) ;
14-
1+ module . exports = function ( grunt ) {
2+ grunt . registerTask ( 'umbracoPackage' , 'Create Umbraco Package' , function ( ) {
3+ grunt . config . requires ( 'umbracoPackage.options.name' ) ;
4+ grunt . config . requires ( 'umbracoPackage.options.version' ) ;
5+ grunt . config . requires ( 'umbracoPackage.options.license' ) ;
6+ grunt . config . requires ( 'umbracoPackage.options.licenseUrl' ) ;
7+ grunt . config . requires ( 'umbracoPackage.options.url' ) ;
8+ grunt . config . requires ( 'umbracoPackage.options.author' ) ;
9+ grunt . config . requires ( 'umbracoPackage.options.authorUrl' ) ;
10+ grunt . config . requires ( 'umbracoPackage.options.manifest' ) ;
11+ grunt . config . requires ( 'umbracoPackage.options.readme' ) ;
12+ grunt . config . requires ( 'umbracoPackage.options.outputDir' ) ;
13+ grunt . config . requires ( 'umbracoPackage.options.sourceDir' ) ;
14+
1515 var done = this . async ( ) ;
16- var Guid = require ( 'guid' ) ;
17- var path = require ( 'path' ) ;
18- var rimraf = require ( 'rimraf' ) ;
19- var archiver = require ( 'archiver' ) ;
20- var fs = require ( 'fs' ) ;
16+ var Guid = require ( 'guid' ) ;
17+ var path = require ( 'path' ) ;
18+ var rimraf = require ( 'rimraf' ) ;
19+ var archiver = require ( 'archiver' ) ;
20+ var fs = require ( 'fs' ) ;
2121 var fse = require ( 'fs-extra' ) ;
2222 var chalk = require ( 'chalk' ) ;
2323
2424 var options = this . options ( {
25- minimumUmbracoVersion : '' ,
26- files : [ ] ,
27- cwd : '/'
25+ minimumUmbracoVersion : '' ,
26+ files : [ ] ,
27+ cwd : '/'
2828 } ) ;
2929
30- var packageFileName = options . name + "_" + options . version + ".zip"
30+ var packageFileName = options . name + "_" + options . version + ".zip"
3131
32- // Gather files
33- var filesToPackage = [ ] ;
34- getFilesRecursive ( options . sourceDir ) ;
35- filesToPackage = filesToPackage . map ( function ( f ) {
36- return { guid : Guid . create ( ) , dir : f . dir . replace ( options . sourceDir , '' ) , name : f . name , ext : f . name . split ( '.' ) . pop ( ) } ;
37- } ) ;
32+ // Gather files
33+ var filesToPackage = [ ] ;
34+ getFilesRecursive ( options . sourceDir ) ;
35+ filesToPackage = filesToPackage . map ( function ( f ) {
36+ return { guid : Guid . create ( ) , dir : f . dir . replace ( options . sourceDir , '' ) , name : f . name , ext : f . name . split ( '.' ) . pop ( ) } ;
37+ } ) ;
3838
39- // Create temp folder for package zip source
40- var guidFolder = Guid . create ( ) . toString ( ) ;
41- var newDirName = path . join ( options . sourceDir , guidFolder ) ;
42- fs . mkdirSync ( newDirName ) ;
39+ // Create temp folder for package zip source
40+ var guidFolder = Guid . create ( ) . toString ( ) ;
41+ var newDirName = path . join ( options . sourceDir , guidFolder ) ;
42+ fs . mkdirSync ( newDirName ) ;
4343 if ( fs . existsSync ( options . outputDir ) == false ) {
4444 fs . mkdirSync ( options . outputDir ) ;
4545 }
46-
47-
48- // Copy flatten structure, with files renamed as <guid>.<ext>
49- filesToPackage . forEach ( function ( f ) {
50- var newFileName = f . name == "package.xml" ? f . name : f . guid . toString ( ) + '.' + f . ext ;
51- fse . copySync ( path . join ( options . sourceDir , f . dir , f . name ) , path . join ( newDirName , newFileName ) ) ;
52- } ) ;
53-
54- // Load / transform XML Manifest
55- options . files = filesToPackage ;
56- if ( options . readme ) {
57- options . readmeContents = grunt . file . read ( options . readme ) ;
58- }
59- var manifest = grunt . file . read ( options . manifest ) ;
60- manifest = grunt . template . process ( manifest , { data : options } ) ;
61- grunt . file . write ( path . join ( options . sourceDir , guidFolder , "package.xml" ) , manifest ) ; // TODO: Probably shouldn't use sourceDir - what if under source control
62-
63- // Zip
46+
47+
48+ // Copy flatten structure, with files renamed as <guid>.<ext>
49+ filesToPackage . forEach ( function ( f ) {
50+ var newFileName = f . name == "package.xml" ? f . name : f . guid . toString ( ) + '.' + f . ext ;
51+ fse . copySync ( path . join ( options . sourceDir , f . dir , f . name ) , path . join ( newDirName , newFileName ) ) ;
52+ } ) ;
53+
54+ // Load / transform XML Manifest
55+ options . files = filesToPackage ;
56+ if ( options . readme ) {
57+ options . readmeContents = grunt . file . read ( options . readme ) ;
58+ }
59+ var manifest = grunt . file . read ( options . manifest ) ;
60+ manifest = grunt . template . process ( manifest , { data : options } ) ;
61+ grunt . file . write ( path . join ( options . sourceDir , guidFolder , "package.xml" ) , manifest ) ; // TODO: Probably shouldn't use sourceDir - what if under source control
62+
63+ // Zip
6464 var tmpOutput = path . join ( options . outputDir , packageFileName ) ;
6565 var tmpSource = path . join ( options . sourceDir , guidFolder ) ;
66-
66+
6767 var output = fs . createWriteStream ( tmpOutput ) ;
6868 var archive = archiver ( 'zip' ) ;
6969
70- output . on ( 'close' , function ( ) {
70+ output . on ( 'close' , function ( ) {
7171 console . log ( 'Package created at ' + chalk . cyan ( tmpOutput ) + " (" + chalk . cyan ( archive . pointer ( ) ) . toString ( ) + " bytes)" ) ;
7272 done ( true ) ;
7373 } ) ;
7474
75- archive . on ( 'error' , function ( err ) {
75+ archive . on ( 'error' , function ( err ) {
7676 throw err ;
7777 } ) ;
7878
7979 archive . pipe ( output ) ;
8080
8181 archive . directory ( tmpSource , false ) ;
8282 archive . finalize ( ) ;
83-
84- function getFilesRecursive ( dir ) {
85- var files = fs . readdirSync ( dir ) ;
86- for ( var i in files ) {
87- if ( ! files . hasOwnProperty ( i ) ) continue ;
88-
89- var name = dir + '/' + files [ i ] ;
90- if ( fs . statSync ( name ) . isDirectory ( ) ) {
91- getFilesRecursive ( name ) ;
92- } else {
93- filesToPackage . push ( { dir : dir , name : files [ i ] } ) ;
94- }
95- }
96- }
83+
84+ function getFilesRecursive ( dir ) {
85+ var files = fs . readdirSync ( dir ) ;
86+ for ( var i in files ) {
87+ if ( ! files . hasOwnProperty ( i ) ) continue ;
88+
89+ var name = dir + '/' + files [ i ] ;
90+ if ( fs . statSync ( name ) . isDirectory ( ) ) {
91+ getFilesRecursive ( name ) ;
92+ } else {
93+ filesToPackage . push ( { dir : dir , name : files [ i ] } ) ;
94+ }
95+ }
96+ }
9797
9898 } ) ;
9999} ;
0 commit comments