11/* Grunt task to release p5.js on GitHub */
22
3- const fs = require ( 'fs' ) ;
4- const req = require ( 'request' ) ;
3+ var fs = require ( 'fs' ) ;
4+ var req = require ( 'request' ) ;
55
66module . exports = function ( grunt ) {
7- grunt . registerTask ( 'release-github' , 'Publish a Release on GitHub' , function ( args ) {
7+ grunt . registerTask ( 'release-github' , 'Publish a Release on GitHub' , function ( args ) {
88
9- // Async Task
10- var done = this . async ( ) ;
9+ // Async Task
10+ var done = this . async ( ) ;
1111
12- // Prepare the data
13- var data = {
14- " tag_name" : "" ,
15- " target_commitish" : " master" ,
16- " name" : "" ,
17- " body" : "" ,
18- " draft" : true ,
19- " prerelease" : false
20- } ;
12+ // Prepare the data
13+ var data = {
14+ ' tag_name' : '' ,
15+ ' target_commitish' : ' master' ,
16+ ' name' : '' ,
17+ ' body' : '' ,
18+ ' draft' : true ,
19+ ' prerelease' : false
20+ } ;
2121
22- var newTag = require ( '../../package.json' ) . version ;
23- data . tag_name = newTag ;
24- data . name = newTag ;
22+ var newTag = require ( '../../package.json' ) . version ;
23+ data . tag_name = newTag ;
24+ data . name = newTag ;
2525
26- // Set up vars for requests
27- const createURL = 'https://api.github.com/repos/sakshamsaxena/p5.js/releases' + accessTokenParam ;
28- const uploadURL = 'https://uploads.github.com/repos/sakshamsaxena/p5.js/releases/' ;
29- const accessTokenParam = '?access_token=' + process . env . GITHUB_TOKEN ;
30- var releaseID = '' ;
26+ // Set up vars for requests
27+ var accessTokenParam = '?access_token=' + process . env . GITHUB_TOKEN ;
28+ var createURL = 'https://api.github.com/repos/processing/p5.js/releases' + accessTokenParam ;
29+ var uploadURL = 'https://uploads.github.com/repos/processing/p5.js/releases/' ;
30+ var ID = '' ;
31+ var count = 0 ;
3132
32- var createReleaseData = {
33- url : createURL ,
34- headers : { 'User-Agent' : 'Grunt Task' } ,
35- body : JSON . stringify ( data )
36- }
33+ var createReleaseData = {
34+ url : createURL ,
35+ headers : { 'User-Agent' : 'Grunt Task' } ,
36+ body : JSON . stringify ( data )
37+ } ;
3738
38- new Promise ( function ( resolve , reject ) {
39- // Create the release
40- req . post ( createReleaseData , function ( error , response , body ) {
41- if ( error )
42- reject ( error ) ;
43- // Got the release ID
44- releaseID = JSON . parse ( body ) . id ;
45- resolve ( ) ;
46- } )
47- } ) . then ( function ( ) {
48- // Upload assets
49- req . post ( {
50- url : uploadURL + releaseID + '/assets' + accessTokenParam + '&name=p5.dom.js' ,
51- headers : {
52- 'User-Agent' : 'Grunt' ,
53- 'Content-Type' : 'application/javascript' ,
54- 'Content-Length' : fs . statSync ( './lib/addons/p5.dom.js' ) . size
55- } ,
56- body : fs . createReadStream ( './lib/addons/p5.dom.js' )
57- } , function ( err , resp , body ) {
58- if ( err )
59- throw err ;
60- console . log ( JSON . parse ( body ) ) ;
61- done ( ) ;
62- } ) ;
63- } ) ;
64- } ) ;
65- } ;
39+ var uploadReleaseData = {
40+ 'p5js' : [ 'p5.js' , './lib/p5.js' , 'application/javascript' ] ,
41+ 'p5minjs' : [ 'p5.min.js' , './lib/p5.min.js' , 'application/javascript' ] ,
42+ 'p5domjs' : [ 'p5.dom.js' , './lib/addons/p5.dom.js' , 'application/javascript' ] ,
43+ 'p5domminjs' : [ 'p5.dom.min.js' , './lib/addons/p5.dom.min.js' , 'application/javascript' ] ,
44+ 'p5soundjs' : [ 'p5.sound.js' , './lib/addons/p5.sound.js' , 'application/javascript' ] ,
45+ 'p5soundminjs' : [ 'p5.sound.min.js' , './lib/addons/p5.sound.min.js' , 'application/javascript' ] ,
46+ 'p5zip' : [ 'p5.zip' , './p5.zip' , 'application/zip' ]
47+ } ;
48+
49+ var uploadAsset = function ( arr ) {
50+ console . log ( 'Uploading ' + arr [ 0 ] + ' ...' ) ;
51+ fs . createReadStream ( arr [ 1 ] ) . pipe (
52+ req . post ( {
53+ url : uploadURL + ID + '/assets' + accessTokenParam + '&name=' + arr [ 0 ] ,
54+ headers : {
55+ 'User-Agent' : 'Grunt' ,
56+ 'Content-Type' : arr [ 2 ] ,
57+ 'Content-Length' : fs . statSync ( arr [ 1 ] ) . size
58+ }
59+ } , function ( err , resp , body ) {
60+ if ( err ) {
61+ throw err ;
62+ }
63+ console . log ( 'Uploaded ' + arr [ 0 ] ) ;
64+ count ++ ;
65+ if ( count === 7 ) {
66+ done ( ) ;
67+ }
68+ } ) ) ;
69+ } ;
70+
71+ new Promise ( function ( resolve , reject ) {
72+ // Create the release
73+ console . log ( 'Posting Release ...' ) ;
74+ req . post ( createReleaseData , function ( error , response , body ) {
75+ if ( error ) {
76+ reject ( error ) ;
77+ }
78+ resolve ( JSON . parse ( body ) . id ) ;
79+ } ) ;
80+ } ) . then ( function ( releaseID ) {
81+ // Upload the Library
82+ console . log ( 'Uploading Assets ...' ) ;
83+ ID = releaseID ;
84+ // Upload assets
85+ for ( var file in uploadReleaseData ) {
86+ let arr = uploadReleaseData [ file ] ;
87+ uploadAsset ( arr ) ;
88+ }
89+ } ) . catch ( function ( err ) {
90+ throw new Error ( err ) ;
91+ } ) ;
92+ } ) ;
93+ } ;
0 commit comments