LotSizingDataModel.Checker.Cli 2.0.1
Command-line interface for solution checking and validation workflows.
Loading...
Searching...
No Matches
CliOptions.cs
Go to the documentation of this file.
1using LotSizingDataModel.Checker.Batch;
2using LotSizingDataModel.Checker.Campaign;
3using LotSizingDataModel.Checker.Common;
4using LotSizingDataModel.Checker.Configuration;
5using LotSizingDataModel.Checker.Reporting;
6
8
9internal sealed class CliOptions
10{
11 public string InputDirectory { get; set; } = string.Empty;
12 public string? OutputDirectory { get; set; }
13 public string SearchPattern { get; set; } = "*.xml";
14 public bool SearchSubdirectories { get; set; } = true;
15 public bool IgnoreNonLotSizingInstanceXml { get; set; } = true;
16 public bool WriteReports { get; set; } = true;
17 public bool ShowProgress { get; set; } = true;
18 public int MaxDegreeOfParallelism { get; set; } = Math.Max(1, Math.Min(Environment.ProcessorCount, 4));
19 public string? KnownResultId { get; set; }
20 public string? KnownResultNameContains { get; set; }
21 public SolutionCheckOptions CheckOptions { get; } = new();
22 public SolutionVerificationOptions VerificationOptions { get; } = new();
23 public SolutionCheckReportOptions ReportOptions { get; } = new();
24
25 public DirectoryVerificationCampaignOptions BuildCampaignOptions()
26 {
27 VerificationOptions.CheckOptions =
28 CloneCheckOptions(CheckOptions);
29
30 var campaignOptions =
31 new DirectoryVerificationCampaignOptions
32 {
37 ReportOptions = CloneReportOptions(ReportOptions),
38 BatchOptions =
39 new SolutionVerificationBatchOptions
40 {
42 VerificationOptions = CloneVerificationOptions(VerificationOptions)
43 }
44 };
45
46 if (!string.IsNullOrWhiteSpace(KnownResultId) ||
47 !string.IsNullOrWhiteSpace(KnownResultNameContains))
48 {
49 string? requiredId = KnownResultId;
50 string? requiredNameFragment = KnownResultNameContains;
51
52 campaignOptions.KnownResultPredicate =
53 result =>
54 {
55 bool idMatches =
56 string.IsNullOrWhiteSpace(requiredId) ||
57 string.Equals(
58 result.ResultId,
59 requiredId,
60 StringComparison.OrdinalIgnoreCase);
61
62 bool nameMatches =
63 string.IsNullOrWhiteSpace(requiredNameFragment) ||
64 (result.Name ?? string.Empty).Contains(
65 requiredNameFragment,
66 StringComparison.OrdinalIgnoreCase);
67
68 return idMatches && nameMatches;
69 };
70 }
71
72 campaignOptions.EnsureValid();
73 return campaignOptions;
74 }
75
76 private static SolutionCheckOptions CloneCheckOptions(
77 SolutionCheckOptions source)
78 {
79 return new SolutionCheckOptions
80 {
81 Level = source.Level,
82 FeasibilityTolerance = source.FeasibilityTolerance,
83 ZeroTolerance = source.ZeroTolerance,
84 IntegralityTolerance = source.IntegralityTolerance,
85 ObjectiveAbsoluteTolerance = source.ObjectiveAbsoluteTolerance,
86 ObjectiveRelativeTolerance = source.ObjectiveRelativeTolerance,
87 ReportedObjectiveValueOverride = source.ReportedObjectiveValueOverride,
88 IgnoreDisabledConstraints = source.IgnoreDisabledConstraints,
89 ContinueAfterStructuralErrors = source.ContinueAfterStructuralErrors
90 };
91 }
92
93 private static SolutionVerificationOptions CloneVerificationOptions(
94 SolutionVerificationOptions source)
95 {
96 return new SolutionVerificationOptions
97 {
98 CheckOptions = CloneCheckOptions(source.CheckOptions),
99 ApplyToSolutionEvaluation = source.ApplyToSolutionEvaluation,
100 UpdateKnownResultFeasibility = source.UpdateKnownResultFeasibility,
101 PromoteFullyVerifiedKnownResult = source.PromoteFullyVerifiedKnownResult,
102 EvaluatorName = source.EvaluatorName,
103 EvaluatorVersion = source.EvaluatorVersion
104 };
105 }
106
107 private static SolutionCheckReportOptions CloneReportOptions(
108 SolutionCheckReportOptions source)
109 {
110 return new SolutionCheckReportOptions
111 {
112 IncludeStageDetails = source.IncludeStageDetails,
113 IncludeFeasibilityMetrics = source.IncludeFeasibilityMetrics,
114 IncludeObjectiveMetrics = source.IncludeObjectiveMetrics,
115 IncludeInformationIssues = source.IncludeInformationIssues,
116 IncludeWarningIssues = source.IncludeWarningIssues,
117 IncludeErrorIssues = source.IncludeErrorIssues,
118 MaximumDetailedIssues = source.MaximumDetailedIssues,
119 SortIssuesBySeverity = source.SortIssuesBySeverity
120 };
121 }
122}
SolutionVerificationOptions VerificationOptions
Definition CliOptions.cs:22
SolutionCheckReportOptions ReportOptions
Definition CliOptions.cs:23
DirectoryVerificationCampaignOptions BuildCampaignOptions()
Definition CliOptions.cs:25