1- var Octokat = require ( 'octokat ' ) ,
1+ var octonode = require ( 'octonode ' ) ,
22 log = require ( 'npmlog' ) ,
33 fs = require ( 'fs' ) ,
44 path = require ( 'path' ) ,
@@ -17,14 +17,12 @@ if ( args.length !== 2 ) {
1717
1818if ( args [ 0 ] !== validArgs [ 0 ] && args [ 0 ] !== validArgs [ 1 ] ) {
1919
20- log . error ( '' , 'invalid argument "%s" passed to binaries-util script.' , args [ 0 ] ) ;
20+ log . error ( '' , 'invalid argument "%s" passed to module-packaging script.' , args [ 0 ] ) ;
2121 process . exit ( - 1 ) ;
2222}
2323
24- var octo = new Octokat ( {
25- token : process . env [ 'NODE_LIBCURL_GITHUB_TOKEN' ]
26- } ) ,
27- repo = octo . repos ( 'JCMais' , 'node-libcurl' ) ,
24+ var octo = octonode . client ( process . env [ 'NODE_LIBCURL_GITHUB_TOKEN' ] ) ,
25+ repo = octo . repo ( 'JCMais/node-libcurl' ) ,
2826 commands = {
2927 publish : publish ,
3028 unpublish : unpublish
@@ -35,65 +33,75 @@ commands[args[0].replace( '--', '' )]( args[1] );
3533
3634function publish ( pathToPackage ) {
3735
38- getReleaseByTag ( versionTag ) . then (
39- function ( release ) {
36+ getReleaseByTag ( versionTag , function ( err , data , headers ) {
4037
41- attachPackageToRelease ( pathToPackage , release ) ;
42- } ,
43- function ( err ) {
38+ if ( err ) {
4439
45- // Release for given tag not found! Create one release.
46- if ( err . status && err . status === 404 ) {
40+ if ( err . statusCode && err . statusCode === 404 ) {
4741
48- log . info ( '' , 'release "%s" not found.' , tag ) ;
49- createRelease ( versionTag ) . then ( attachPackageToRelease . bind ( null , pathToPackage ) , doSomethingWithError ) ;
42+ createRelease ( versionTag , attachPackageToRelease . bind ( null , pathToPackage ) ) ;
5043
5144 } else {
5245
53- doSomethingWithError ( err ) ;
46+ doSomethingWithError ( err )
5447 }
55- }
56- )
5748
49+ } else {
50+
51+ attachPackageToRelease ( pathToPackage , null , data , headers ) ;
52+ }
53+ } ) ;
5854}
5955
6056function unpublish ( pathToResource ) {
6157
62- getReleaseByTag ( versionTag ) . then (
63- removePackageFromRelease . bind ( null , pathToResource ) ,
64- doSomethingWithError
65- )
58+ getReleaseByTag ( versionTag , function ( err , release , headers ) {
59+
60+ if ( err ) {
61+ doSomethingWithError ( err ) ;
62+ return ;
63+ }
64+
65+ removePackageFromRelease ( pathToResource , release ) ;
66+
67+ } ) ;
6668}
6769
68- function getReleaseByTag ( tagName ) {
70+ function getReleaseByTag ( tagName , cb ) {
6971
7072 log . info ( '' , 'searching for release "%s"' , tagName ) ;
7173
72- var result = repo . releases . tags ( tagName ) . fetch ( ) . then ( function ( release ) {
74+ repo . release ( 'tags/' + tagName ) . info ( function ( err , data , headers ) {
7375
74- log . info ( '' , 'release "%s" found: %s' , release . tagName , release . url ) ;
76+ if ( err && err . statusCode && err . statusCode === 404 ) {
7577
76- return release ;
77- } ) ;
78+ log . info ( '' , 'release for tag "%s" not found.' , tagName ) ;
7879
79- return result ;
80- }
80+ } else {
8181
82- function createRelease ( tagName ) {
82+ log . info ( '' , 'release for tag "%s" found: %s' , tagName , data . url ) ;
83+ }
8384
84- log . info ( '' , 'creating release for "%s"' , tag ) ;
85- return repo . releases . create ( {
85+ cb ( err , data , headers ) ;
86+ } ) ;
87+ }
8688
87- tag_name : tagName ,
88- name : 'node-libcurl ' + tagName + ' TEST' ,
89- draft : false
89+ function createRelease ( tagName , cb ) {
9090
91- } ) ;
91+ log . info ( '' , 'creating release for tag "%s"' , tagName ) ;
92+
93+ repo . release ( {
94+ tag_name : tagName
95+ } , cb ) ;
9296}
9397
94- function attachPackageToRelease ( pckg , release ) {
98+ function attachPackageToRelease ( pckg , err , release , headers ) {
99+
100+ if ( err ) {
95101
96- log . info ( '' , 'attaching package to release "%s"' , release . tagName ) ;
102+ doSomethingWithError ( err ) ;
103+ return ;
104+ }
97105
98106 var packagePath = path . resolve ( pckg ) ,
99107 packageFileName ,
@@ -105,35 +113,44 @@ function attachPackageToRelease( pckg, release ) {
105113 process . exit ( - 1 ) ;
106114 }
107115
108- fileContent = fs . readFileSync ( packagePath ) ;
116+ log . info ( '' , 'attaching package "%s" to release "%s"' , packagePath , release . url ) ;
117+
109118 packageFileName = path . basename ( packagePath ) ;
110119
111120 // check if the package already exists, if so warn and bail out.
112121 for ( i = 0 , len = release . assets . length ; i < len ; i ++ ) {
113122
114123 if ( release . assets [ i ] . name === packageFileName ) {
115124
116- log . warn ( '' , 'package "%s" already attached to release "%s"' , packageFileName , release . tagName ) ;
125+ log . warn ( '' , 'package "%s" already attached to release "%s"' , packageFileName , release . tag_name ) ;
117126 process . exit ( 0 ) ;
118127 }
119128 }
120129
121- release . upload ( packageFileName , 'application/x-gzip' , fileContent ) . then (
122- function ( response ) {
130+ fileContent = fs . readFileSync ( packagePath ) ;
123131
124- log . info ( '' , 'package attached with success: %s' , JSON . parse ( response ) . browser_download_url ) ;
125- process . exit ( 0 ) ;
126- } ,
127- doSomethingWithError
128- ) ;
132+ repo . release ( release . id ) . uploadAssets ( fileContent , {
133+ name : packageFileName ,
134+ contentType : 'application/x-gzip'
135+ } , function ( err , data , headers ) {
136+
137+ if ( err ) {
138+
139+ doSomethingWithError ( err ) ;
140+ return ;
141+ }
142+
143+ log . info ( '' , 'package attached with success: %s' , data . browser_download_url ) ;
144+ process . exit ( 0 ) ;
145+ } ) ;
129146}
130147
131148function removePackageFromRelease ( packageToDelete , release ) {
132149
133150 var packageToDeleteName = path . basename ( packageToDelete ) ,
134151 i , len , releaseAsset , found = false ;
135152
136- log . info ( '' , 'removing package "%s" from release "%s"' , packageToDelete , release . tagName ) ;
153+ log . info ( '' , 'removing package "%s" from release "%s"' , packageToDelete , release . tag_name ) ;
137154
138155 for ( i = 0 , len = release . assets . length ; i < len ; i ++ ) {
139156
@@ -143,27 +160,32 @@ function removePackageFromRelease( packageToDelete, release ) {
143160
144161 found = true ;
145162
146- releaseAsset . remove ( ) . then (
147- function ( ) {
163+ //@FIXME using internals because there is no way to remove directly
164+ // uri to remove assets is: repos/:owner/:repo/releases/assets/:id
165+ repo . client . del ( '/repos/' + repo . name + '/releases/assets/' + releaseAsset . id , null , function ( err , data , headers ) {
166+
167+ if ( err ) {
168+
169+ doSomethingWithError ( err ) ;
170+ return ;
171+ }
148172
149- log . info ( '' , 'removed package "%s" from release "%s"' , packageToDelete , release . tagName ) ;
150- process . exit ( 0 ) ;
151- } ,
152- doSomethingWithError
153- )
173+ log . info ( '' , 'removed package "%s" from release "%s"' , packageToDelete , release . tag_name ) ;
174+ process . exit ( 0 ) ;
175+ } ) ;
154176 }
155177
156178 }
157179
158180 if ( ! found ) {
159181
160- log . error ( '' , 'package "%s" could be found in release "%s"' , packageToDelete , release . tagName ) ;
182+ log . error ( '' , 'package "%s" could be found in release "%s"' , packageToDelete , release . tag_name ) ;
161183 process . exit ( - 1 ) ;
162184 }
163185}
164186
165187function doSomethingWithError ( err ) {
166188
167- log . error ( err ) ;
189+ log . error ( '' , err ) ;
168190 process . exit ( - 1 ) ;
169191}
0 commit comments