Skip to content

Commit 13e97ca

Browse files
committed
feat: multiple providers support custom destination
1 parent d609bd3 commit 13e97ca

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

src/types/uploader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export interface OSSUploader {
2929
onDestroy?: () => PromiseLike<void> | void
3030
}
3131

32-
export interface ProviderConfigItem {
32+
export interface ProviderConfigItem extends Partial<Pick<OssOptions, 'destination'>> {
3333
provider: Provider
3434
tag: string
3535
}

src/upload.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { ProgressResult } from '@clack/prompts'
22
import type { UserProviderConfig, UserProviderMultiConfig } from './config'
3-
import type { OSSFile, Provider, TaskResult, UploadOptions, WorkerMessage } from './types'
3+
import type { OSSFile, Provider, ProviderConfigItem, TaskResult, UploadOptions, WorkerMessage } from './types'
44
import fs from 'node:fs'
55
import os from 'node:os'
66
import path from 'node:path'
@@ -33,16 +33,18 @@ export async function upload(configFile?: string): Promise<void> {
3333
provider = (config as UserProviderConfig).provider
3434
}
3535
else if (Reflect.has(config, 'providers')) {
36+
let providerItem: ProviderConfigItem | undefined
37+
3638
const providers = (config as UserProviderMultiConfig).providers
3739
if (providers.length === 1) {
38-
provider = providers[0].provider
40+
providerItem = providers[0]
3941
}
4042
else if (providers.length > 1) {
4143
// for ci
4244
if (process.env.OSSX_CI_PROVIDER_TAG) {
4345
const matched = providers.find(item => item.tag === process.env.OSSX_CI_PROVIDER_TAG)
4446
if (matched) {
45-
provider = matched.provider
47+
providerItem = matched
4648
log.step(`Using provider ${ansis.cyan.bold(matched.tag)} from environment variable ${ansis.gray('OSSX_CI_PROVIDER_TAG')}`)
4749
}
4850
else {
@@ -76,7 +78,16 @@ export async function upload(configFile?: string): Promise<void> {
7678
return
7779
}
7880

79-
provider = providers.find(item => item.tag === selected)?.provider
81+
providerItem = providers.find(item => item.tag === selected)
82+
}
83+
}
84+
85+
if (providerItem) {
86+
provider = providerItem.provider
87+
88+
// 如果 providerItem 中包含 destination 配置,则覆盖全局配置
89+
if (providerItem.destination) {
90+
config.destination = providerItem.destination
8091
}
8192
}
8293
}

0 commit comments

Comments
 (0)