import type { ProjectLocalConfig } from '@ones-open/cli-utils' import type { LoginRequestParamsSchema, PickteamCLIOptionsSchema } from '@ones-open/cli-utils' import { isEmpty } from '@senojs/lodash' import { convertUsernameField, getLocalConfigContent } from '../login' function checkLocalConfigCredentialFields(localConfig: ProjectLocalConfig) { const { platform } = localConfig if (Object.values(platform).some(isEmpty)) { const errorMessage = `No user credential found in 'config/local.yaml'` + `\nPlease execute 'npx op login' first` throw new Error(errorMessage) } return true } interface ConvertLocalConfigToLoginParamsType { config?: ProjectLocalConfig } async function convertLocalConfigToLoginParams({ config }: ConvertLocalConfigToLoginParamsType) { const localConfig = config ?? (await getLocalConfigContent()) const { platform } = localConfig const { baseURL, username, password } = platform as Required const params = { baseURL, password, ...convertUsernameField(username), } return params as LoginRequestParamsSchema } interface PickteamLocalConfigValidatorOptions { currentWorkingDirectory?: string config?: ProjectLocalConfig } async function validateCanPickteamForLocal( params: PickteamCLIOptionsSchema, validatorOptions?: PickteamLocalConfigValidatorOptions, ) { const { config, currentWorkingDirectory } = validatorOptions ?? {} const localConfigContent = config ?? (await getLocalConfigContent(currentWorkingDirectory)) return checkLocalConfigCredentialFields(localConfigContent) } export { convertLocalConfigToLoginParams, getLocalConfigContent, validateCanPickteamForLocal } export type { ConvertLocalConfigToLoginParamsType }