{"record":{"id":"15379c36cde48650","repo":"windmill-labs/windmill","slug":"flags-are-not-supported","errorCode":null,"errorMessage":"Flags are not supported","messagePattern":"Flags are not supported","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/parsers/windmill-parser-nu/src/lib.rs","lineNumber":141,"sourceCode":"            }\n        };\n\n        // Check if it is optional\n        let optional = {\n            let Some(element) = name.chars().last() else {\n                bail!(\"Internal error, cannot check if argument is optional\")\n            };\n            element == '?'\n        };\n\n        // Rest parameters are not supported\n        if matches!(name.get(0..3), Some(\"...\")) {\n            bail!(\"Rest (...) parameters are not supported\")\n        }\n\n        // Flags are not supported\n        if matches!(name.get(0..2), Some(\"--\")) {\n            bail!(\"Flags are not supported\")\n        }\n\n        sig.args.push(Arg {\n            name: if optional {\n                name.get(..name.len() - 1).unwrap_or(\"Error\").to_owned()\n            } else {\n                name.to_owned()\n            },\n            typ: typ.unwrap_or(Typ::Unknown),\n            otyp: None,\n            has_default: default.is_some() || optional,\n            default: default.or_else(|| if optional { Some(json!(null)) } else { None }),\n            oidx: None,\n        otyp_inferred: false,\n        });\n    }\n\n    fn parse_type(content: &str) -> anyhow::Result<Typ> {","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/parsers/windmill-parser-nu/src/lib.rs#L123-L159","documentation":"Nushell flags (`--flag` parameters) are named switches/options. Windmill scripts expose positional typed arguments only, so a `def main` parameter starting with `--` is rejected. The signature parser cannot represent named flags in its MainArgSignature.","triggerScenarios":"Declaring `def main [--verbose, --output: string]` or any flag-style parameter in a Nushell script parsed for a Windmill signature.","commonSituations":"Converting CLI nushell commands with flags into Windmill scripts; scripts generated from command help that mirror native flag syntax.","solutions":["Convert each flag to a positional typed parameter, e.g. `--verbose` becomes `verbose: bool = false`.","Keep the flag inside the script body as a local constant instead of a parameter.","If callers need optionality, use an optional/nullable parameter (`verbose?: bool`) which Windmill supports.","Move flag parsing into a wrapper that receives plain positional args and computes the flags internally."],"exampleFix":"// before\ndef main [--verbose, name: string]\n// after\ndef main [verbose: bool = false, name: string]","handlingStrategy":"validation","validationCode":"function validateNoFlags(code) {\n  const m = code.match(/def\\s+main\\s*\\[([^\\]]*)\\]/);\n  if (m && /(^|,\\s*)--/.test(m[1])) return 'flags (--flag) are not supported; convert to positional typed params like `verbose: bool = false`';\n  return null;\n}","typeGuard":null,"tryCatchPattern":"try {\n  const sig = parseNuSignature(source);\n} catch (e) {\n  if (String(e).includes('Flags are not supported')) {\n    throw new Error('Convert each --flag to a positional parameter (e.g. verbose: bool = false)');\n  }\n  throw e;\n}","preventionTips":["Do not mirror CLI flag syntax in Windmill entrypoints","Express options as typed parameters with defaults or nullable optionals","Keep flag computation inside the script body from plain inputs"],"tags":["nushell","parser","flags","unsupported-feature"],"backgroundTag":"unsupported-parameter-kind","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}