-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Milestone
Description
Feature Request: Configuration Option for File Output Support
Description
Add a configuration option that allows users to save Fink's analysis results to a file instead of (or in addition to) console output. This will enable better integration with CI/CD pipelines, reporting systems, and automated workflows.
Proposed Output Formats
1. Text Format (Default)
- Same format as console output
- Easy to read and integrate with existing tools
- Suitable for logging and basic reporting
2. JSON Format
- Structured data for programmatic consumption
- Easy integration with other tools and systems
- Suitable for automated processing and analysis
3. CSV Format (Future consideration)
- Tabular data for spreadsheet analysis
- Good for reporting and data analysis
Implementation Considerations
- Add command-line options:
--output-file <path>or-o <path>: Specify output file path--output-format <format>: Specify format (text, json)- Consider
--output-appendfor appending to existing files
- Support outputting to both console and file simultaneously
- Handle file permissions and path validation
- Consider output file overwrite behavior
Use Cases
- CI/CD Integration: Save results as build artifacts
- Automated Reporting: Generate dependency reports for compliance/security teams
- Historical Analysis: Track dependency changes over time
- Integration with Other Tools: Provide structured data for further processing
- Large Projects: Console output might be too verbose for large dependency trees
Example Usage
# Save to text file
dotnet run --project src/Fink/Fink.csproj myproject.csproj net9.0 --output-file results.txt
# Save to JSON file
dotnet run --project src/Fink/Fink.csproj myproject.csproj net9.0 --output-file results.json --output-format json
# Output to both console and file
dotnet run --project src/Fink/Fink.csproj myproject.csproj net9.0 --output-file results.txt --consoleJSON Output Structure Example
{
\"projectPath\": \"/path/to/project.csproj\",
\"targetFramework\": \"net9.0\",
\"timestamp\": \"2025-05-30T19:43:00Z\",
\"lockFilePath\": \"/path/to/project.assets.json\",
\"summary\": {
\"totalDependencies\": 127,
\"distinctDependencies\": 118,
\"conflictingPackages\": 3
},
\"conflicts\": [
{
\"packageName\": \"Newtonsoft.Json\",
\"versions\": [
{
\"version\": \"13.0.1\",
\"dependencyPath\": \"net9.0->Newtonsoft.Json 13.0.1\"
},
{
\"version\": \"12.0.3\",
\"dependencyPath\": \"net9.0->SomePackage 2.0.0->Newtonsoft.Json 12.0.3\"
}
]
}
]
}Acceptance Criteria
- Command-line option to specify output file path
- Support for text format output to file
- Support for JSON format output
- Option to output to both console and file
- Proper error handling for file I/O operations
- Documentation and examples for file output usage
- Integration tests for file output functionality