@yuntools/ali-oss
Version:
阿里云 OSS 命令行工具 ossutil 封装,支持 ESM,CJS 导入,提供 TypeScript 类型定义
55 lines (42 loc) • 1.27 kB
text/typescript
import assert from 'node:assert'
import { commonProcessInputMap, encodeInputPath } from '../helper.js'
import {
Config,
ParamMap,
PlaceholderKey,
} from '../types.js'
import { initOptions as cpOptions, CpOptions } from './cp.js'
/**
* @link https://help.aliyun.com/document_detail/120057.html
*/
export interface UploadOptions extends CpOptions {
/** 目的 cloudurl 路径,不包括 bucket */
target: string
/** 源路径,必须是本地文件 */
src: string
}
export const initOptions: UploadOptions = {
...cpOptions,
encodeSource: true,
}
export async function processInput(
input: UploadOptions,
globalConfig: Config | undefined,
): Promise<ParamMap> {
const { src, encodeSource } = input
assert(src, 'src is required')
const path = typeof encodeSource === 'undefined' || encodeSource === true
? encodeInputPath(src, true)
: src
const opts: UploadOptions = {
...input,
src: path,
encodeSource: false,
}
const map = commonProcessInputMap(opts, initOptions, globalConfig)
assert(map.get(PlaceholderKey.dest), 'dest is required')
const bucket = map.get(PlaceholderKey.bucket)
assert(bucket, 'bucket is required')
assert(typeof bucket === 'string', 'bucket must be string')
return map
}