in src/web/src/views/workspace/WSEditorCommandArgumentsContent.tsx [2401:2550]
function decodeArg(response: any): {
arg: CMDArg;
clsDefineMap: ClsArgDefinitionMap;
} {
const { argBase, clsDefineMap } = decodeArgBase(response);
const options = (response.options as string[]).sort((a, b) => a.length - b.length).reverse();
const help = response.help ? decodeArgHelp(response.help) : undefined;
const prompt = response.prompt ? decodeArgPromptInput(response.prompt) : undefined;
let arg: any = {
...argBase,
var: response.var as string,
options: options,
required: (response.required ?? false) as boolean,
stage: (response.stage ?? "Stable") as "Stable" | "Preview" | "Experimental",
hide: (response.hide ?? false) as boolean,
group: (response.group ?? "") as string,
help: help,
idPart: response.idPart,
prompt: prompt,
configurationKey: response.configurationKey,
supportEnumExtension: response.enum?.supportExtension || response.item?.enum?.supportExtension || false,
hasEnum: response.enum?.items?.length > 0 || response.item?.enum?.items?.length > 0 || false,
};
switch (argBase.type) {
case "byte":
case "binary":
case "duration":
case "date":
case "dateTime":
case "time":
case "uuid":
case "SubscriptionId":
case "ResourceGroupName":
case "ResourceId":
case "ResourceLocation":
case "string":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<string>(response.default),
};
}
break;
case "password":
if (response.prompt) {
arg = {
...arg,
prompt: decodePasswordArgPromptInput(response.prompt),
};
}
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<string>(response.default),
};
}
break;
case "integer32":
case "integer64":
case "integer":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<number>(response.default),
};
}
break;
case "float32":
case "float64":
case "float":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<number>(response.default),
};
}
break;
case "boolean":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<boolean>(response.default),
};
}
break;
case "any":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<any>(response.default),
};
}
break;
case "object":
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<object>(response.default),
};
}
break;
default:
if (argBase.type.startsWith("dict<")) {
// dict type
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<object>(response.default),
};
}
} else if (argBase.type.startsWith("array<")) {
// array type
if (response.singularOptions) {
arg = {
...arg,
singularOptions: response.singularOptions as string[],
};
}
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<Array<any>>(response.default),
};
}
} else if (argBase.type.startsWith("@")) {
if (response.singularOptions) {
arg = {
...arg,
singularOptions: response.singularOptions as string[],
};
}
if (response.default) {
arg = {
...arg,
default: decodeArgDefault<any>(response.default),
};
}
} else {
console.error(`Unknown type '${argBase.type}'`);
throw Error(`Unknown type '${argBase.type}'`);
}
}
return {
arg: arg,
clsDefineMap: clsDefineMap,
};
}