@@ -27,8 +27,11 @@ public static void Run(Tool tool, ToolWriter toolWriter)
27
27
. WriteLine ( $ "public static partial class { tool . GetClassName ( ) } ")
28
28
. WriteBlock ( w =>
29
29
{
30
- w . WriteToolPath ( ) ;
31
- w . WriteGenericTask ( ) ;
30
+ w
31
+ . WriteToolPath ( )
32
+ . WriteLogger ( )
33
+ . WriteGenericTask ( ) ;
34
+
32
35
tool . Tasks . ForEach ( x => new TaskWriter ( x , toolWriter )
33
36
. WriteToolSettingsTask ( )
34
37
. WriteConfiguratorTask ( )
@@ -56,7 +59,7 @@ private static void WriteGenericTask(this ToolWriter writer)
56
59
"environmentVariables" ,
57
60
"timeout" ,
58
61
"logOutput" ,
59
- writer . Tool . LogLevelParsing ? "ParseLogLevel" : "null ",
62
+ $ " { tool . Name } Logger ",
60
63
"outputFilter"
61
64
} ;
62
65
writer
@@ -100,6 +103,7 @@ private static TaskWriter WriteConfiguratorTask(this TaskWriter writer)
100
103
101
104
return writer
102
105
. WriteSummary ( task )
106
+ . WriteRemarks ( task )
103
107
. WriteObsoleteAttributeWhenObsolete ( task )
104
108
. WriteLine ( $ "public static { returnType } { task . GetTaskMethodName ( ) } (Configure<{ task . SettingsClass . Name } > configurator)")
105
109
. WriteBlock ( w => w
@@ -109,21 +113,25 @@ private static TaskWriter WriteConfiguratorTask(this TaskWriter writer)
109
113
private static TaskWriter WriteCombinatorialConfiguratorTask ( this TaskWriter writer )
110
114
{
111
115
var task = writer . Task ;
116
+
112
117
var returnType = ! task . HasReturnValue ( )
113
118
? $ "IEnumerable<({ task . SettingsClass . Name } Settings, IReadOnlyCollection<Output> Output)>"
114
119
: $ "IEnumerable<({ task . SettingsClass . Name } Settings, { task . ReturnType } Result, IReadOnlyCollection<Output> Output)>";
115
- var selector = ! task . HasReturnValue ( )
116
- ? "(x.ToolSettings, x.ReturnValue)"
117
- : "(x.ToolSettings, x.ReturnValue.Result, x.ReturnValue.Output)" ;
118
-
120
+
121
+ var parameters = new [ ]
122
+ {
123
+ $ "CombinatorialConfigure<{ task . SettingsClass . Name } > configurator",
124
+ "int degreeOfParallelism = 1" ,
125
+ "bool completeOnFailure = false"
126
+ } . JoinComma ( ) ;
127
+
119
128
return writer
120
129
. WriteSummary ( task )
130
+ . WriteRemarks ( task )
121
131
. WriteObsoleteAttributeWhenObsolete ( task )
122
- . WriteLine ( $ "public static { returnType } { task . GetTaskMethodName ( ) } (CombinatorialConfigure< { task . SettingsClass . Name } > configurator )")
132
+ . WriteLine ( $ "public static { returnType } { task . GetTaskMethodName ( ) } ({ parameters } )")
123
133
. WriteBlock ( w => w
124
- . WriteLine ( $ "return configurator(new { task . SettingsClass . Name } ())")
125
- . WriteLine ( $ " .Select(x => (ToolSettings: x, ReturnValue: { task . GetTaskMethodName ( ) } (x)))")
126
- . WriteLine ( $ " .Select(x => { selector } ).ToList();") ) ;
134
+ . WriteLine ( $ "return configurator.Invoke({ task . GetTaskMethodName ( ) } , { task . Tool . Name } Logger, degreeOfParallelism, completeOnFailure);") ) ;
127
135
}
128
136
129
137
private static string GetProcessStart ( Task task )
@@ -166,5 +174,13 @@ private static ToolWriter WriteToolPath(this ToolWriter writer)
166
174
. WriteLine ( $ " ToolPathResolver.TryGetEnvironmentExecutable(\" { tool . Name . ToUpperInvariant ( ) } _EXE\" ) ??")
167
175
. WriteLine ( $ " { resolvers . Single ( ) } ;") ;
168
176
}
177
+
178
+ private static ToolWriter WriteLogger ( this ToolWriter writer )
179
+ {
180
+ var tool = writer . Tool ;
181
+ var logger = tool . CustomLogger ? "CustomLogger" : "ProcessManager.DefaultLogger" ;
182
+ return writer
183
+ . WriteLine ( $ "public static Action<OutputType, string> { tool . Name } Logger {{ get; set; }} = { logger } ;") ;
184
+ }
169
185
}
170
186
}
0 commit comments