@@ -11,6 +11,7 @@ import { getRepositoryInfo } from "./repositoryInfo"
11
11
import { DIR_TARGET } from "./targets/targetFactory"
12
12
import { BintrayPublisher } from "./publish/BintrayPublisher"
13
13
import { BintrayOptions } from "./publish/bintray"
14
+ import { PublishConfiguration , GithubPublishConfiguration } from "./options/publishOptions"
14
15
15
16
//noinspection JSUnusedLocalSymbols
16
17
const __awaiter = require ( "./util/awaiter" )
@@ -269,18 +270,23 @@ function publishManager(packager: Packager, publishTasks: Array<BluebirdPromise<
269
270
}
270
271
271
272
if ( publishers == null && options . githubToken != null ) {
272
- publishers = [ "github" ]
273
+ publishers = { provider : "github" }
273
274
}
274
275
// if both tokens are set — still publish to github (because default publisher is github)
275
276
if ( publishers == null && options . bintrayToken != null ) {
276
- publishers = [ "bintray" ]
277
+ publishers = { provider : "bintray" }
277
278
}
278
279
}
279
280
280
- for ( let publisherName of asArray ( publishers ) ) {
281
+ for ( let publishConfig of asArray ( publishers ) ) {
282
+ if ( typeof publishConfig === "string" ) {
283
+ publishConfig = { provider : publishConfig }
284
+ }
285
+
286
+ const publisherName = publishConfig . provider
281
287
let publisher = nameToPublisher . get ( publisherName )
282
288
if ( publisher == null ) {
283
- publisher = createPublisher ( packager , options , publisherName , isPublishOptionGuessed )
289
+ publisher = createPublisher ( packager , options , publishConfig , isPublishOptionGuessed )
284
290
nameToPublisher . set ( publisherName , publisher )
285
291
}
286
292
@@ -292,9 +298,13 @@ function publishManager(packager: Packager, publishTasks: Array<BluebirdPromise<
292
298
} )
293
299
}
294
300
295
- export async function createPublisher ( packager : Packager , options : PublishOptions , publisherName : string , isPublishOptionGuessed : boolean = false ) : Promise < Publisher | null > {
296
- const info = await getRepositoryInfo ( packager . metadata , packager . devMetadata )
297
- if ( info == null ) {
301
+ export async function createPublisher ( packager : Packager , options : PublishOptions , publishConfig : PublishConfiguration | GithubPublishConfiguration , isPublishOptionGuessed : boolean = false ) : Promise < Publisher | null > {
302
+ async function getInfo ( ) {
303
+ const info = await getRepositoryInfo ( packager . metadata , packager . devMetadata )
304
+ if ( info != null ) {
305
+ return info
306
+ }
307
+
298
308
if ( isPublishOptionGuessed ) {
299
309
return null
300
310
}
@@ -303,12 +313,30 @@ export async function createPublisher(packager: Packager, options: PublishOption
303
313
throw new Error ( `Please specify 'repository' in the dev package.json ('${ packager . devPackageFile } ')` )
304
314
}
305
315
306
- if ( publisherName === "github" ) {
316
+ if ( publishConfig . provider === "github" ) {
317
+ const config = < GithubPublishConfiguration > publishConfig
318
+ let user = config . owner
319
+ let repo = config . repo
320
+ if ( ! user || ! repo ) {
321
+ const info = await getInfo ( )
322
+ if ( info == null ) {
323
+ return null
324
+ }
325
+
326
+ user = info . user
327
+ repo = info . project
328
+ }
329
+
307
330
const version = packager . metadata . version !
308
- log ( `Creating Github Publisher — user: ${ info . user } , project: ${ info . project } , version: ${ version } ` )
309
- return new GitHubPublisher ( info . user , info . project , version , options , isPublishOptionGuessed )
331
+ log ( `Creating Github Publisher — user: ${ user } , project: ${ repo } , version: ${ version } ` )
332
+ return new GitHubPublisher ( user , repo , version , options , isPublishOptionGuessed , config )
310
333
}
311
- if ( publisherName === "bintray" ) {
334
+ if ( publishConfig . provider === "bintray" ) {
335
+ const info = await getInfo ( )
336
+ if ( info == null ) {
337
+ return null
338
+ }
339
+
312
340
const version = packager . metadata . version !
313
341
//noinspection ReservedWordAsName
314
342
const bintrayInfo : BintrayOptions = { user : info . user , package : info . project , repo : "generic" }
0 commit comments