{"record":{"id":"7433011647df100f","repo":"go-task/task","slug":"task-invalid-os-arch-value-provided-s","errorCode":null,"errorMessage":"task: Invalid OS/Arch value provided (%s)","messagePattern":"task: Invalid OS/Arch value provided \\((.+?)\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"taskfile/ast/platforms.go","lineNumber":86,"sourceCode":"\t}\n\treturn nil\n}\n\n// parseOsOrArch will check if the given input is a valid OS or Arch value.\n// If so, it will store it. If not, an error is returned\nfunc (p *Platform) parseOsOrArch(osOrArch string) error {\n\tif osOrArch == \"\" {\n\t\treturn fmt.Errorf(\"task: Blank OS/Arch value provided\")\n\t}\n\tif goext.IsKnownOS(osOrArch) {\n\t\tp.OS = osOrArch\n\t\treturn nil\n\t}\n\tif goext.IsKnownArch(osOrArch) {\n\t\tp.Arch = osOrArch\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"task: Invalid OS/Arch value provided (%s)\", osOrArch)\n}\n\nfunc (p *Platform) parseArch(arch string) error {\n\tif arch == \"\" {\n\t\treturn fmt.Errorf(\"task: Blank Arch value provided\")\n\t}\n\tif p.Arch != \"\" {\n\t\treturn fmt.Errorf(\"task: Multiple Arch values provided\")\n\t}\n\tif goext.IsKnownArch(arch) {\n\t\tp.Arch = arch\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"task: Invalid Arch value provided (%s)\", arch)\n}\n","sourceCodeStart":68,"sourceCodeEnd":102,"githubUrl":"https://github.com/go-task/task/blob/385e5ad92af02877b6d7cf9dcc963b5ed916e70a/taskfile/ast/platforms.go#L68-L102","documentation":"After failing to match the input as a known OS or a known Arch, parseOsOrArch returns this error with the offending value, since each platforms: entry must be a recognizable OS or architecture string. It signals a typo or unsupported platform token in the Taskfile. Validation is delegated to goext.IsKnownOS / IsKnownArch.","triggerScenarios":"A `platforms:` entry like `linuxs`, `mac`, `win64`, or any token not recognized by goext.IsKnownOS/IsKnownArch reaches the final return in parseOsOrArch.","commonSituations":"Using friendly OS names (`mac` instead of `darwin`, `win` instead of `windows`), misspellings (`linx`, `amd`), invented arch names (`x64` instead of `amd64`), or case-sensitivity surprises.","solutions":["Use exact Go runtime names: OS = linux, darwin, windows, freebsd, etc.; Arch = amd64, arm64, 386, arm, etc.","Prefer combined `os/arch` entries (e.g. `linux/amd64`, `windows/amd64`) which parse both halves explicitly","Check go/runtime constants or `go tool dist list` for the canonical OS/ARCH spellings"],"exampleFix":"# before\nplatforms:\n  - mac\n  - win\n# after\nplatforms:\n  - darwin\n  - windows/amd64","handlingStrategy":"validation","validationCode":"var knownOS = map[string]bool{\"linux\":true,\"darwin\":true,\"windows\":true,\"freebsd\":true}\nvar knownArch = map[string]bool{\"amd64\":true,\"arm64\":true,\"386\":true,\"arm\":true}\nfor _, p := range taskDef.Platforms {\n  parts := strings.SplitN(p, \"/\", 2)\n  if !(knownOS[parts[0]] || knownArch[parts[0]]) {\n    return fmt.Errorf(\"unknown platform token %q\", p)\n  }\n}","typeGuard":null,"tryCatchPattern":"err := t.Run(ctx)\nif err != nil && strings.Contains(err.Error(), \"Invalid OS/Arch value\") {\n  // correct the platform token (use GOOS/GOARCH spellings) and retry\n}","preventionTips":["Use exact GOOS/GOARCH spellings (darwin, windows, amd64, arm64)","Cross-check values against `go tool dist list`","Prefer combined os/arch entries to fail fast on both halves"],"tags":["taskfile","platforms","configuration"],"backgroundTag":"invalid-enum-value","analyzedSha":"385e5ad92af02877b6d7cf9dcc963b5ed916e70a","analyzedAt":"2026-09-05T09:01:05.226Z","contentChangedAt":"2026-09-05T09:01:05.226Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}