feat: add output flag with Destination interface.

Added -o flag to write results to files using a new Destination interface.

Changes:
- Add Destination interface with StdoutDestination and FileDestination implementations.
- Add -o flag to CLI parser for output file specification.
- Update Config to use Destination instead of direct output handling.
- Refactor main to use Destination.Write() for result output.
This commit is contained in:
2026-01-11 16:48:21 -05:00
parent 62699a0e37
commit 9bd75cf409
4 changed files with 46 additions and 7 deletions

View File

@@ -13,6 +13,7 @@ func FromArgs() (*Config, error) {
statistics := flag.Bool("s", false, "Statistics. If set, the process will print various statistics about the run.")
profile := flag.String("p", "", "CPU profiling. If an output file is defined, the program will profile its execution and dump its results into it.")
file := flag.String("f", "", "File. If set, read source from the specified file.")
output := flag.String("o", "", "Output. If set, write result to the specified file. Use '-' for stdout (default).")
flag.Parse()
// Parse source type.
@@ -36,8 +37,17 @@ func FromArgs() (*Config, error) {
}
}
// Parse destination type.
var destination Destination
if *output == "" || *output == "-" {
destination = StdoutDestination{}
} else {
destination = FileDestination{Path: *output}
}
return &Config{
Source: source,
Destination: destination,
Verbose: *verbose,
Explanation: *explanation,
Profile: *profile,