Skip to content

Commit

Permalink
Convert project to use Cocona
Browse files Browse the repository at this point in the history
Closes #12
  • Loading branch information
baynezy committed Dec 29, 2023
1 parent e705d31 commit 172333d
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,23 +1,36 @@
using Microsoft.Extensions.Logging;
using System.Data;
using System.Data;
using System.Data.OleDb;
using System.Text;
using Cocona;
using Microsoft.Extensions.Logging;

namespace Converter;
namespace Converter.Commands.ConvertDbfToCsv;

public class ConverterService(Options options, ILogger<ConverterService> logger)
internal class ConvertDbfToCsvCommand(ILogger<ConvertDbfToCsvCommand> logger)
{
public void Convert()
public int Convert([Argument] string inputFile)
{
var inputFile = options.InputFile;
logger.LogInformation("Input file: {InputFile}", inputFile);

if (InvalidInputFile(inputFile))
{
logger.LogError("Input file {InputFile} does not exist", inputFile);
return -1;
}

var connectionString = $"Provider=VFPOLEDB.1;Data Source={inputFile};Collating Sequence=general;";
var fileName = Path.GetFileNameWithoutExtension(inputFile);
var outputFile = $"{fileName}.csv";
logger.LogInformation("Output file: {OutputFile}", outputFile);

ConvertToCsv(connectionString, inputFile, outputFile);

return 0;
}

private bool InvalidInputFile(string inputFile)
{
return !File.Exists(inputFile);
}

private void ConvertToCsv(string connectionString, string inputFile, string outputFile)
Expand Down
2 changes: 1 addition & 1 deletion src/Converter/Converter.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Cocona" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
</ItemGroup>
Expand Down
9 changes: 0 additions & 9 deletions src/Converter/Options.cs

This file was deleted.

36 changes: 12 additions & 24 deletions src/Converter/Program.cs
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
// See https://aka.ms/new-console-template for more information

using CommandLine;
using Converter;
using Cocona;
using Converter.Commands.ConvertDbfToCsv;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

Parser.Default.ParseArguments<Options>(args)
.WithParsed(options =>
{
Console.WriteLine("Visual FoxPro 2 CSV Converter v1.0.0");
Console.WriteLine("=====================================");
Console.WriteLine();

var builder = Host.CreateDefaultBuilder(args);
builder.ConfigureServices(services =>
{
services.AddSingleton(options);
services.AddSingleton<ConverterService>();
});

var app = builder.Build();

var converter = app.Services.GetRequiredService<ConverterService>();
converter.Convert();
});
var builder = CoconaApp.CreateBuilder();
builder.Services.AddSingleton<ConvertDbfToCsvCommand>();

var app = builder.Build();

Console.WriteLine("Visual FoxPro 2 CSV Converter v1.0.0");
Console.WriteLine("=====================================");
Console.WriteLine();

app.AddCommands<ConvertDbfToCsvCommand>();

app.Run();

0 comments on commit 172333d

Please sign in to comment.