1+ module . exports  =  function  ( grunt )  { 
2+ 
3+ 	var  package  =  grunt . file . readJSON ( 'package.json' ) ; 
4+ 
5+ 	// Project configuration. 
6+ 	grunt . initConfig ( { 
7+ 		pkg : package , 
8+ 		// Bump version numbers 
9+ 		version : { 
10+ 			pkg : { 
11+ 				src : [ 'package.json' ,  'composer.json' ] , 
12+ 			} , 
13+ 			manifest : { 
14+ 				options : { 
15+ 					pkg : grunt . file . readJSON ( 'package.json' ) , 
16+ 					prefix : '\<version type=\"dist\"\>' 
17+ 				} , 
18+ 				src : [ 'manifest.xml' ] , 
19+ 			} 
20+ 		} , 
21+ 		clean : { 
22+ 			release : { 
23+ 				src : [ 'build/' ,  'releases/' ,  'mod/' ,  'vendor/' ,  'composer.lock' ] 
24+ 			} 
25+ 		} , 
26+ 		copy : { 
27+ 			release : { 
28+ 				src : [ 
29+ 					'**' , 
30+ 					'!**/.git*' , 
31+ 					'!releases/**' , 
32+ 					'!build/**' , 
33+ 					'!mod/**' , 
34+ 					'!node_modules/**' , 
35+ 					'!package.json' , 
36+ 					'!config.rb' , 
37+ 					'!sass/**' , 
38+ 					'!tests/**' , 
39+ 					'!composer.json' , 
40+ 					'!composer.lock' , 
41+ 					'!package.json' , 
42+ 					'!phpunit.xml' , 
43+ 					'!Gruntfile.js' , 
44+ 					'!Gemfile' , 
45+ 					'!Gemfile.lock' 
46+ 				] , 
47+ 				dest : 'build/' , 
48+ 				expand : true 
49+ 			} , 
50+ 		} , 
51+ 		compress : { 
52+ 			release : { 
53+ 				options : { 
54+ 					archive : 'releases/<%= pkg.name %>-<%= pkg.version %>.zip' 
55+ 				} , 
56+ 				cwd : 'build/' , 
57+ 				src : [ '**/*' ] , 
58+ 				dest : '<%= pkg.name %>/' , 
59+ 				expand : true 
60+ 			} 
61+ 		} , 
62+ 		gitcommit : { 
63+ 			release : { 
64+ 				options : { 
65+ 					message : 'chore(build): release <%= pkg.version %>' , 
66+ 				} , 
67+ 				files : { 
68+ 					src : [ "composer.json" ,  "manifest.xml" ,  "package.json" ,  "CHANGELOG.md" ] , 
69+ 				} 
70+ 			} , 
71+ 		} , 
72+ 		gitfetch : { 
73+ 			release : { 
74+ 				all : true 
75+ 			} 
76+ 		} , 
77+ 		gittag : { 
78+ 			release : { 
79+ 				options : { 
80+ 					tag : '<%= pkg.version %>' , 
81+ 					message : 'Release <%= pkg.version %>' 
82+ 				} 
83+ 			} 
84+ 		} , 
85+ 		gitpush : { 
86+ 			release : { 
87+ 			} , 
88+ 			release_tags : { 
89+ 				options : { 
90+ 					tags : true 
91+ 				} 
92+ 			} 
93+ 		} , 
94+ 		gh_release : { 
95+ 			options : { 
96+ 				token : process . env . GITHUB_TOKEN , 
97+ 				repo : package . repository . repo , 
98+ 				owner : package . repository . owner 
99+ 			} , 
100+ 			release : { 
101+ 				tag_name : '<%= pkg.version %>' , 
102+ 				name : 'Release <%= pkg.version %>' , 
103+ 				body : grunt . file . read ( 'release.md' ) , 
104+ 				draft : false , 
105+ 				prerelease : false , 
106+ 				asset : { 
107+ 					name : '<%= pkg.name %>-<%= pkg.version %>.zip' , 
108+ 					file : 'releases/<%= pkg.name %>-<%= pkg.version %>.zip' , 
109+ 					'Content-Type' : 'application/zip' 
110+ 				} 
111+ 			} 
112+ 		} , 
113+ 		conventionalChangelog : { 
114+ 			options : { 
115+ 				changelogOpts : { 
116+ 					// conventional-changelog options go here 
117+ 					preset : 'angular' 
118+ 				} 
119+ 			} , 
120+ 			release : { 
121+ 				src : 'CHANGELOG.md' 
122+ 			} 
123+ 
124+ 		} 
125+ 	} ) ; 
126+ 	// Load all grunt plugins here 
127+ 	grunt . loadNpmTasks ( 'grunt-version' ) ; 
128+ 	grunt . loadNpmTasks ( 'grunt-contrib-copy' ) ; 
129+ 	grunt . loadNpmTasks ( 'grunt-contrib-clean' ) ; 
130+ 	grunt . loadNpmTasks ( 'grunt-contrib-compress' ) ; 
131+ 	grunt . loadNpmTasks ( 'grunt-composer' ) ; 
132+ 	grunt . loadNpmTasks ( 'grunt-conventional-changelog' ) ; 
133+ 	grunt . loadNpmTasks ( 'grunt-git' ) ; 
134+ 	grunt . loadNpmTasks ( 'grunt-gh-release' ) ; 
135+ 
136+ 	grunt . registerTask ( 'readpkg' ,  'Read in the package.json file' ,  function  ( )  { 
137+ 		grunt . config . set ( 'pkg' ,  grunt . file . readJSON ( 'package.json' ) ) ; 
138+ 	} ) ; 
139+ 
140+ 	// Release task 
141+ 	grunt . registerTask ( 'release' ,  function  ( n )  { 
142+ 		var  n  =  n  ||  'patch' ; 
143+ 		grunt . task . run ( [ 
144+ 			'version::'  +  n , 
145+ 			'readpkg' , 
146+ 			'conventionalChangelog:release' , 
147+ 			'gitfetch:release' , 
148+ 			'gitcommit:release' , 
149+ 			'gittag:release' , 
150+ 			'gitpush:release' , 
151+ 			'gitpush:release_tags' , 
152+ 			'clean:release' , 
153+ 			'composer:install:no-dev:prefer-dist' , 
154+ 			'copy:release' , 
155+ 			'compress:release' , 
156+ 			'gh_release' , 
157+ 		] ) ; 
158+ 	} ) ; 
159+ } ; 
0 commit comments