-
-
Notifications
You must be signed in to change notification settings - Fork 33
Add structured text output (JSON and YAML) #115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
alajmo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When running with --parallel, you should opt instead for a "streaming JSON" format, where each result is a one-line JSON object, followed by a newline. Same for YAML. Now it's just running in parallel and outputting one big array.
Implemented streaming output for parallel execution in commit 22ae74f. Now when using
Without |
alajmo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The spinner should not run when doing parallel json/yaml format. I get:
jq: parse error: Invalid numeric literal at line 1, column 2
Fixed in commit 98252e5. The spinner is now disabled for JSON/YAML output formats to prevent interference with structured output parsing by tools like |
alajmo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
YAML missing 3 dashes between each document.
Fixed in commit 686ef52. YAML output now includes |
alajmo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mani run echo pwd -t active -o json --parallel | jq
doesnt show the tasks ran. It should be tasks: [echo, pwd]
Fixed in commit f8727fc. Changed |
f8727fc to
d76eb7e
Compare
d76eb7e to
4708375
Compare
alajmo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JSON/YAML should be supported for list options (task/project).
Co-authored-by: alajmo <5246600+alajmo@users.noreply.github.com>
Implemented in commit c1e83cd. JSON/YAML output is now supported for all list commands:
|
What's Changed
Adds JSON and YAML output formats to
mani run,mani exec, andmani listcommands, enabling structured output for scripting and pipeline integration.Run/Exec commands: The structured output captures project name, task names (as an array), output lines as an array, and exit code for each execution.
When running with
--parallel, both formats use streaming output where each result is output immediately as it completes:---separatorThe spinner is disabled for JSON/YAML output formats to ensure clean, parseable output when piping to tools like
jqandyq.List commands: JSON/YAML output is now supported for all list commands:
mani list projects --output json|yamlmani list tasks --output json|yamlmani list tags --output json|yamlTechnical Description
Core changes:
core/exec/json.gowithTaskResultstruct and output functions (PrintJSON,PrintYAML,PrintJSONStream,PrintYAMLStream)core/print/print_list.gowithProjectOutput,TaskOutput,TagOutputstructs andPrintListJSON,PrintListYAMLfunctionscore/exec/exec.goswitch statement to handlejsonandyamloutput typescore/dao/spec.goto accept new output formats---document separators between each documenttasksfield to an array to show all tasks that were run (e.g.,mani run echo pwdoutputs"tasks": ["echo", "pwd"])CLI updates:
--outputflag inrunandexeccommands to includejsonandyamloptions--outputflag inlistcommand to includejsonandyamloptionsUsage:
YAML uses multi-document format (separated by
---) suitable for streaming andyqprocessing.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.