2222 */
2323
2424var argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) ) ;
25+ var assert = require ( 'assert' ) ;
2526var BBPromise = require ( 'bluebird' ) ;
2627var config = require ( '../config' ) ;
2728var extend = require ( 'util' ) . _extend ;
@@ -50,9 +51,11 @@ function changelog() {
5051
5152function getGitMetadata ( ) {
5253 var version = argv . version ;
54+ var versionErrMsg = 'No version option passed' ;
5355
5456 if ( ! version ) {
55- throw new Error ( 'No version option passed' ) ;
57+ util . log ( util . colors . red ( versionErrMsg ) ) ;
58+ throw new Error ( versionErrMsg ) ;
5659 }
5760
5861 var gitMetadata = { } ;
@@ -63,12 +66,14 @@ function getGitMetadata() {
6366 . then ( fetchGithubMetadata )
6467 . then ( buildChangelog . bind ( null , gitMetadata ) )
6568 . then ( function ( gitMetadata ) {
69+ util . log ( util . colors . blue ( '\n' + gitMetadata . changelog ) ) ;
6670 return submitReleaseNotes ( version , gitMetadata . changelog ) ;
6771 } )
6872 . catch ( errHandler ) ;
6973}
7074
7175function submitReleaseNotes ( version , changelog ) {
76+ assert ( typeof version == 'number' , 'version should be a number. ' + version ) ;
7277 var options = {
7378 url : 'https://api.github.com/repos/ampproject/amphtml/releases' ,
7479 method : 'POST' ,
@@ -169,6 +174,7 @@ function fetchGithubMetadata(ids) {
169174function getPullRequestTitle ( prOption ) {
170175 return request ( prOption ) . then ( function ( res ) {
171176 var body = JSON . parse ( res . body ) ;
177+ assert ( typeof body . url == 'string' , 'should have url string. ' + res . body ) ;
172178 var url = body . url . split ( '/' ) ;
173179 var pr = url [ url . length - 1 ] ;
174180 return body . title + ' (#' + pr + ')' ;
@@ -179,9 +185,8 @@ function getPullRequestFiles(title, filesOption) {
179185 return request ( filesOption ) . then ( function ( res ) {
180186 var body = JSON . parse ( res . body ) ;
181187
182- if ( ! body || ! Array . isArray ( body ) ) {
183- throw new Error ( 'Could not get Pull Request Files.' ) ;
184- }
188+ assert ( Array . isArray ( body ) && body . length > 0 ,
189+ 'Pull request response must not be empty. ' + res . body ) ;
185190 var filenames = body . map ( function ( file ) {
186191 return file . filename ;
187192 } ) ;
@@ -205,19 +210,27 @@ function onGitTagSuccess(gitMetadata, tag) {
205210
206211function onGitLogSuccess ( gitMetadata , logs ) {
207212 var commits = logs . split ( '\n' ) ;
213+ assert ( typeof logs == 'string' , 'git log should be a string.\n' + logs ) ;
208214 return commits
209215 . filter ( function ( commit ) {
210216 // filter non Pull request merges
211217 return commit . indexOf ( 'Merge pull' ) == 0 ;
212218 } )
213219 . map ( function ( commit ) {
214220 // We only need the PR id
215- return commit . split ( ' ' ) [ 3 ] . slice ( 1 ) ;
221+ var id = commit . split ( ' ' ) [ 3 ] . slice ( 1 ) ;
222+ var value = parseInt ( id , 10 ) ;
223+ assert ( value > 0 , 'Should be an integer greater than 0. ' + value ) ;
224+ return id ;
216225 } ) ;
217226}
218227
219228function errHandler ( err ) {
220- util . log ( util . colors . red ( err ) ) ;
229+ var msg = err ;
230+ if ( err . message ) {
231+ msg = err . message ;
232+ }
233+ util . log ( util . colors . red ( msg ) ) ;
221234 return err ;
222235}
223236
0 commit comments