diff --git a/src/Cellm/AddIn/ArgumentParser.cs b/src/Cellm/AddIn/ArgumentParser.cs index 8684adf..168c463 100644 --- a/src/Cellm/AddIn/ArgumentParser.cs +++ b/src/Cellm/AddIn/ArgumentParser.cs @@ -3,11 +3,10 @@ using Cellm.Models.Providers; using ExcelDna.Integration; using Microsoft.Extensions.Configuration; -using Microsoft.Office.Interop.Excel; namespace Cellm.AddIn; -public record Arguments(string Provider, string Model, string Context, string Instructions, double Temperature); +public record Arguments(Provider Provider, string Model, string Context, string Instructions, double Temperature); public class ArgumentParser { @@ -71,11 +70,16 @@ public ArgumentParser AddTemperature(object temperature) public Arguments Parse() { - var provider = _provider ?? _configuration + var providerAsString = _provider ?? _configuration .GetSection(nameof(ProviderConfiguration)) .GetValue(nameof(ProviderConfiguration.DefaultProvider)) ?? throw new ArgumentException(nameof(ProviderConfiguration.DefaultProvider)); + if (!Enum.TryParse(providerAsString, true, out var provider)) + { + throw new ArgumentException($"Unsupported default provider: {providerAsString}"); + } + var model = _model ?? _configuration .GetSection($"{provider}Configuration") .GetValue(nameof(IProviderConfiguration.DefaultModel)) @@ -147,9 +151,9 @@ private static string ParseCells(ExcelReference reference) { try { - var app = (Application)ExcelDnaUtil.Application; + var app = ExcelDnaUtil.Application; var sheetName = (string)XlCall.Excel(XlCall.xlSheetNm, reference); - sheetName = sheetName[(sheetName.LastIndexOf("]") + 1)..]; + sheetName = sheetName[(sheetName.LastIndexOf(']') + 1)..]; var worksheet = app.Sheets[sheetName]; var tableBuilder = new StringBuilder();