function createParameter()

in packages/typespec-powershell/src/convertor/convertor.ts [342:380]


function createParameter(psContext: SdkContext, parameter: HttpOperationParameter, model: PwshModel): Parameter {
  if (parameter.type === "query" && parameter.name === "api-version"
    || parameter.type === "path" && parameter.name === "subscriptionId") {
    const matchParameters = (model.globalParameters || []).filter(p => p.language.default.serializedName === parameter.name);
    if (matchParameters.length > 0) {
      return matchParameters[0];
    } else {
      const paramSchema = parameter.name === "api-version" ? getSchemaForApiVersion(psContext, parameter.param.type) : (parameter.param.sourceProperty ? getSchemaForType(psContext, parameter.param.sourceProperty) : getSchemaForType(psContext, parameter.param));
      const newParameter = new Parameter(pascalCase(deconstruct(parameter.name)), getDoc(psContext.program, parameter.param) || "", paramSchema);
      if (newParameter.language.default.name === "ApiVersion") {
        //to align with modelerfour
        newParameter.language.default.name = "apiVersion";
      }
      newParameter.language.default.serializedName = parameter.name;
      newParameter.protocol.http = newParameter.protocol.http ?? new Protocol();
      newParameter.protocol.http.in = parameter.type;
      newParameter.implementation = ImplementationLocation.Client;
      newParameter.required = !parameter.param.optional;
      model.globalParameters = model.globalParameters || [];
      model.globalParameters.push(newParameter);
      return newParameter;
    }
  } else {
    // always create the parameter
    const paramSchema = parameter.param.sourceProperty ? getSchemaForType(psContext, parameter.param.sourceProperty) : getSchemaForType(psContext, parameter.param);
    const newParameter = new Parameter(parameter.name, getDoc(psContext.program, parameter.param) || "", paramSchema);
    newParameter.language.default.serializedName = parameter.name;
    newParameter.protocol.http = newParameter.protocol.http ?? new Protocol();
    newParameter.protocol.http.in = parameter.type;
    if ((<any>parameter).allowReserved) {
      newParameter.extensions = newParameter.extensions || {};
      newParameter.extensions["x-ms-skip-url-encoding"] = true;
    }
    // ToDo, we need to support x-ms-client is specified.
    newParameter.implementation = ImplementationLocation.Method;
    newParameter.required = !parameter.param.optional;
    return newParameter;
  }
}