{"record":{"id":"a0d7fef59537b49d","repo":"siyuan-note/siyuan","slug":"no-valid-ids-provided","errorCode":null,"errorMessage":"no valid IDs provided","messagePattern":"no valid IDs provided","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kernel/cli/cmd/block.go","lineNumber":485,"sourceCode":"\t\treturn nil\n\t}\n\tif err := treenode.CheckListItemNesting(parentID, id); err != nil {\n\t\treturn err\n\t}\n\treturn treenode.CheckContainerParent(parentID)\n}\n\nvar blockBatchGetCmd = &cobra.Command{\n\tUse:   \"batch-get --ids id1,id2,...\",\n\tShort: \"Batch get block info\",\n\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\tidsStr, _ := cmd.Flags().GetString(\"ids\")\n\t\tif idsStr == \"\" {\n\t\t\treturn fmt.Errorf(\"--ids is required\")\n\t\t}\n\t\tids := splitIDs(idsStr)\n\t\tif len(ids) == 0 {\n\t\t\treturn fmt.Errorf(\"no valid IDs provided\")\n\t\t}\n\t\tinfos := model.GetDocsInfo(ids, false, false)\n\t\tswitch outputFormat {\n\t\tcase \"json\":\n\t\t\tdata, _ := json.MarshalIndent(infos, \"\", \"  \")\n\t\t\tfmt.Println(string(data))\n\t\tdefault:\n\t\t\tw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)\n\t\t\tfmt.Fprintln(w, \"ID\\tNAME\\tROOTID\\tREFCOUNT\")\n\t\t\tfor _, info := range infos {\n\t\t\t\tfmt.Fprintf(w, \"%s\\t%s\\t%s\\t%d\\n\", info.ID, info.Name, info.RootID, info.RefCount)\n\t\t\t}\n\t\t\tfor _, id := range ids {\n\t\t\t\tfound := false\n\t\t\t\tfor _, info := range infos {\n\t\t\t\t\tif info.ID == id {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tbreak","sourceCodeStart":467,"sourceCodeEnd":503,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/9f775e8a12daef8255556097396f9b2739078892/kernel/cli/cmd/block.go#L467-L503","documentation":"The --ids flag was provided to `block batch-get` but after splitting on commas no valid (non-empty) IDs remained. splitIDs trims and filters empty entries, so input consisting only of commas or whitespace yields this error (kernel/cli/cmd/block.go:485).","triggerScenarios":"Running `batch-get --ids \",,,\"` or `--ids \" \"`; a script building the ID list from an empty query result; whitespace-only or malformed separator characters (e.g. semicolons or newlines) leaving zero parseable IDs.","commonSituations":"Automating the CLI where an upstream step returned no blocks; pasting IDs separated by semicolons or spaces instead of commas; Windows line endings contaminating the ID list.","solutions":["Provide at least one real block ID: --ids 20240101120000-abc","Separate multiple IDs with commas only, no semicolons or spaces","Guard the calling script: abort when the upstream ID list is empty before invoking the CLI"],"exampleFix":"// before\nsiyuan block batch-get --ids \"a; b; c\"\n// after\nsiyuan block batch-get --ids \"20240101120000-a,20240101120000-b,20240101120000-c\"","handlingStrategy":"validation","validationCode":"ids=$(echo \"$RAW\" | tr ',' '\\n' | sed 's/[[:space:]]//g' | grep -v '^$')\nif [ -z \"$ids\" ]; then echo \"no valid IDs\" >&2; exit 1; fi\nsiyuan block batch-get --ids \"$(echo $ids | paste -sd, -)\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Sanitize ID lists: strip whitespace and drop empty entries before invoking","Use ASCII commas only as separators","Fail fast in scripts when an upstream query yields no IDs"],"tags":["cli","empty-input","batch-get","invalid-argument-format"],"backgroundTag":"empty-required-field","analyzedSha":"9f775e8a12daef8255556097396f9b2739078892","analyzedAt":"2026-09-19T03:17:15.984Z","contentChangedAt":"2026-09-19T03:17:15.984Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}