Skip to content

Commit 8bde8a4

Browse files
committed
=refactored logging to be instance based instead of a global static to allow comfiuinodes to have a logger per request
=changed function interface to expect a IFunctionContext to allow for expansion in the future
1 parent 9f542ef commit 8bde8a4

File tree

101 files changed

+2236
-1101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+2236
-1101
lines changed

Core/Definitions/ExitCode.cs renamed to Cli/ExitCode.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace ImageFunctions.Core;
1+
namespace ImageFunctions.Cli;
22

33
static class ExitCode
44
{

Cli/ImageFunctions.Cli.csproj

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<OutputPath>../artifacts/build</OutputPath>
8+
<EnableDynamicLoading>true</EnableDynamicLoading>
9+
<EnableNETAnalyzers>true</EnableNETAnalyzers>
10+
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
11+
</PropertyGroup>
12+
13+
<ItemGroup>
14+
<ProjectReference Include="..\Core\ImageFunctions.Core.csproj" />
15+
<InternalsVisibleTo Include="ImageFunctions.Test" />
16+
</ItemGroup>
17+
18+
</Project>

Core/Options.cs renamed to Cli/Options.cs

+27-44
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
using ImageFunctions.Core;
12
using ImageFunctions.Core.Aides;
3+
using ImageFunctions.Core.Logging;
24
using Rasberry.Cli;
5+
using System.Text;
36

4-
namespace ImageFunctions.Core;
7+
namespace ImageFunctions.Cli;
58

69
/*
710
sr - show registered
@@ -29,11 +32,12 @@ 1 1 1 0 | 1 1 1 0
2932
1 1 1 1 | 1 1 1 1
3033
*/
3134
#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
3336
{
34-
public Options(IRegister register)
37+
public Options(IRegister register, ICoreLog log)
3538
{
3639
Register = register;
40+
Log = log;
3741
}
3842

3943
public void Usage(StringBuilder sb, IRegister _)
@@ -92,22 +96,22 @@ public bool ParseArgs(string[] args, IRegister _)
9296
Show |= PickShow.Registered;
9397
return r;
9498
})
95-
.WhenInvalidTellDefault()
99+
.WhenInvalidTellDefault(Log)
96100
.IsInvalid()
97101
) {
98102
return false;
99103
}
100104

101105
if(p.Scan<string>(new[] { "--engine", "-e" })
102106
.WhenGood(r => { EngineName = r.Value; return r; })
103-
.WhenInvalidTellDefault()
107+
.WhenInvalidTellDefault(Log)
104108
.IsInvalid()
105109
) {
106110
return false;
107111
}
108112

109113
if(p.Scan<int>(new[] { "--max-threads", "-x" })
110-
.WhenInvalidTellDefault()
114+
.WhenInvalidTellDefault(Log)
111115
.WhenGood(r => {
112116
if(r.Value < 1) {
113117
Log.Error(Note.MustBeGreaterThan(r.Name, 0));
@@ -122,23 +126,23 @@ public bool ParseArgs(string[] args, IRegister _)
122126

123127
if(p.Scan<string>(new[] { "--format", "-f" })
124128
.WhenGood(r => { _imageFormat = r.Value; return r; })
125-
.WhenInvalidTellDefault()
129+
.WhenInvalidTellDefault(Log)
126130
.IsInvalid()
127131
) {
128132
return false;
129133
}
130134

131135
if(p.Scan<string>(new[] { "--output", "-o" })
132136
.WhenGood(r => { _outputName = r.Value; return r; })
133-
.WhenInvalidTellDefault()
137+
.WhenInvalidTellDefault(Log)
134138
.IsInvalid()
135139
) {
136140
return false;
137141
}
138142

139143
if(p.Scan<int?, int?>(new[] { "--size", "-#" })
140144
.WhenGood(r => { (_defaultWidth, _defaultHeight) = r.Value; return r; })
141-
.WhenInvalidTellDefault()
145+
.WhenInvalidTellDefault(Log)
142146
.IsInvalid()
143147
) {
144148
return false;
@@ -191,17 +195,11 @@ public bool ProcessOptions()
191195
}
192196

193197
//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;
201200
}
202201
else {
203-
EngineName = EngineRegister.SixLaborsString;
204-
Engine = er.Get(EngineName);
202+
Engine = _engine;
205203
}
206204

207205
//show formats
@@ -216,7 +214,7 @@ public bool ProcessOptions()
216214
return false;
217215
}
218216

219-
if(!DetermineImageFormat()) {
217+
if (!Engine.Item.Value.TryDetermineImageFormat(_imageFormat, Log, out _)) {
220218
return false;
221219
}
222220

@@ -305,11 +303,18 @@ bool ShowFunctionHelp(string name, StringBuilder sb)
305303
list = fn.All().Order();
306304
}
307305

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+
308313
foreach(string key in list) {
309314
var funcItem = fn.Get(key);
310315
sb.WT();
311316
sb.WT(0, $"Function {key}:");
312-
var inst = funcItem.Item.Invoke(Register, null, this);
317+
var inst = funcItem.Item.Invoke(context);
313318
var opts = inst.Options;
314319
if(opts is IUsageProvider uip) {
315320
NameSpaceList = GetFlagsFromUsageInfo(uip.GetUsageInfo());
@@ -343,28 +348,6 @@ void ShowFormats(StringBuilder sb)
343348
}
344349
}
345350

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-
368351
bool EnumerateInputImages(ParseParams p)
369352
{
370353
bool found = true;
@@ -393,10 +376,11 @@ bool EnumerateInputImages(ParseParams p)
393376
string _functionName;
394377
string _imageFormat;
395378
string _outputName;
396-
readonly IRegister Register;
397379
int? _defaultWidth;
398380
int? _defaultHeight;
381+
readonly IRegister Register;
399382
List<string> NameSpaceList;
383+
internal ICoreLog Log;
400384

401385
//Global options
402386
public IRegisteredItem<Lazy<IImageEngine>> Engine { get; internal set; }
@@ -420,4 +404,3 @@ enum PickShow
420404
All = 8 + 4 + 2 + 1
421405
}
422406
}
423-
#pragma warning restore CA1861

0 commit comments

Comments
 (0)