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