1
+ using ImageFunctions . Core ;
1
2
using ImageFunctions . Core . Aides ;
3
+ using ImageFunctions . Core . Logging ;
2
4
using Rasberry . Cli ;
5
+ using System . Text ;
3
6
4
- namespace ImageFunctions . Core ;
7
+ namespace ImageFunctions . Cli ;
5
8
6
9
/*
7
10
sr - show registered
@@ -29,11 +32,12 @@ 1 1 1 0 | 1 1 1 0
29
32
1 1 1 1 | 1 1 1 1
30
33
*/
31
34
#pragma warning disable CA1861 //Avoid constant arrays as arguments - There's little to no performance gain for doing this here
32
- internal class Options : ICoreOptions
35
+ internal sealed class Options : ICoreOptions
33
36
{
34
- public Options ( IRegister register )
37
+ public Options ( IRegister register , ICoreLog log )
35
38
{
36
39
Register = register ;
40
+ Log = log ;
37
41
}
38
42
39
43
public void Usage ( StringBuilder sb , IRegister _ )
@@ -92,22 +96,22 @@ public bool ParseArgs(string[] args, IRegister _)
92
96
Show |= PickShow . Registered ;
93
97
return r ;
94
98
} )
95
- . WhenInvalidTellDefault ( )
99
+ . WhenInvalidTellDefault ( Log )
96
100
. IsInvalid ( )
97
101
) {
98
102
return false ;
99
103
}
100
104
101
105
if ( p . Scan < string > ( new [ ] { "--engine" , "-e" } )
102
106
. WhenGood ( r => { EngineName = r . Value ; return r ; } )
103
- . WhenInvalidTellDefault ( )
107
+ . WhenInvalidTellDefault ( Log )
104
108
. IsInvalid ( )
105
109
) {
106
110
return false ;
107
111
}
108
112
109
113
if ( p . Scan < int > ( new [ ] { "--max-threads" , "-x" } )
110
- . WhenInvalidTellDefault ( )
114
+ . WhenInvalidTellDefault ( Log )
111
115
. WhenGood ( r => {
112
116
if ( r . Value < 1 ) {
113
117
Log . Error ( Note . MustBeGreaterThan ( r . Name , 0 ) ) ;
@@ -122,23 +126,23 @@ public bool ParseArgs(string[] args, IRegister _)
122
126
123
127
if ( p . Scan < string > ( new [ ] { "--format" , "-f" } )
124
128
. WhenGood ( r => { _imageFormat = r . Value ; return r ; } )
125
- . WhenInvalidTellDefault ( )
129
+ . WhenInvalidTellDefault ( Log )
126
130
. IsInvalid ( )
127
131
) {
128
132
return false ;
129
133
}
130
134
131
135
if ( p . Scan < string > ( new [ ] { "--output" , "-o" } )
132
136
. WhenGood ( r => { _outputName = r . Value ; return r ; } )
133
- . WhenInvalidTellDefault ( )
137
+ . WhenInvalidTellDefault ( Log )
134
138
. IsInvalid ( )
135
139
) {
136
140
return false ;
137
141
}
138
142
139
143
if ( p . Scan < int ? , int ? > ( new [ ] { "--size" , "-#" } )
140
144
. WhenGood ( r => { ( _defaultWidth , _defaultHeight ) = r . Value ; return r ; } )
141
- . WhenInvalidTellDefault ( )
145
+ . WhenInvalidTellDefault ( Log )
142
146
. IsInvalid ( )
143
147
) {
144
148
return false ;
@@ -191,17 +195,11 @@ public bool ProcessOptions()
191
195
}
192
196
193
197
//need to select the engine so we can show formats
194
- var er = new EngineRegister ( Register ) ;
195
- if ( ! String . IsNullOrWhiteSpace ( EngineName ) ) {
196
- if ( ! er . Try ( EngineName , out var engineEntry ) ) {
197
- Log . Error ( Note . NotRegistered ( engineEntry . NameSpace , engineEntry . Name ) ) ;
198
- return false ;
199
- }
200
- Engine = engineEntry ;
198
+ if ( ! Register . TrySelectEngine ( EngineName , Log , out var _engine ) ) {
199
+ return false ;
201
200
}
202
201
else {
203
- EngineName = EngineRegister . SixLaborsString ;
204
- Engine = er . Get ( EngineName ) ;
202
+ Engine = _engine ;
205
203
}
206
204
207
205
//show formats
@@ -216,7 +214,7 @@ public bool ProcessOptions()
216
214
return false ;
217
215
}
218
216
219
- if ( ! DetermineImageFormat ( ) ) {
217
+ if ( ! Engine . Item . Value . TryDetermineImageFormat ( _imageFormat , Log , out _ ) ) {
220
218
return false ;
221
219
}
222
220
@@ -305,11 +303,18 @@ bool ShowFunctionHelp(string name, StringBuilder sb)
305
303
list = fn . All ( ) . Order ( ) ;
306
304
}
307
305
306
+ //Usage only relies on register and log and possibly options
307
+ var context = new FunctionContext {
308
+ Register = Register ,
309
+ Log = Log ,
310
+ Options = this
311
+ } ;
312
+
308
313
foreach ( string key in list ) {
309
314
var funcItem = fn . Get ( key ) ;
310
315
sb . WT ( ) ;
311
316
sb . WT ( 0 , $ "Function { key } :") ;
312
- var inst = funcItem . Item . Invoke ( Register , null , this ) ;
317
+ var inst = funcItem . Item . Invoke ( context ) ;
313
318
var opts = inst . Options ;
314
319
if ( opts is IUsageProvider uip ) {
315
320
NameSpaceList = GetFlagsFromUsageInfo ( uip . GetUsageInfo ( ) ) ;
@@ -343,28 +348,6 @@ void ShowFormats(StringBuilder sb)
343
348
}
344
349
}
345
350
346
- bool DetermineImageFormat ( )
347
- {
348
- var eng = Engine . Item . Value ;
349
- bool formatGiven = ! String . IsNullOrWhiteSpace ( _imageFormat ) ;
350
- ImageFormat ? found = null ;
351
- foreach ( var f in eng . Formats ( ) ) {
352
- if ( formatGiven && f . Name . EqualsIC ( _imageFormat ) ) {
353
- found = f ;
354
- }
355
- else if ( f . Name . EqualsIC ( "png" ) ) {
356
- found = f ;
357
- }
358
- }
359
-
360
- if ( found == null ) {
361
- Log . Error ( Note . NoImageFormatFound ( _imageFormat ) ) ;
362
- return false ;
363
- }
364
-
365
- return true ;
366
- }
367
-
368
351
bool EnumerateInputImages ( ParseParams p )
369
352
{
370
353
bool found = true ;
@@ -393,10 +376,11 @@ bool EnumerateInputImages(ParseParams p)
393
376
string _functionName ;
394
377
string _imageFormat ;
395
378
string _outputName ;
396
- readonly IRegister Register ;
397
379
int ? _defaultWidth ;
398
380
int ? _defaultHeight ;
381
+ readonly IRegister Register ;
399
382
List < string > NameSpaceList ;
383
+ internal ICoreLog Log ;
400
384
401
385
//Global options
402
386
public IRegisteredItem < Lazy < IImageEngine > > Engine { get ; internal set ; }
@@ -420,4 +404,3 @@ enum PickShow
420
404
All = 8 + 4 + 2 + 1
421
405
}
422
406
}
423
- #pragma warning restore CA1861
0 commit comments