command line parsing
This commit is contained in:
parent
8e78069fca
commit
8b60f2b602
3 changed files with 28 additions and 6 deletions
18
Program.cs
18
Program.cs
|
@ -2,17 +2,23 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.CommandLine.DragonFruit;
|
||||
using CsvHelper;
|
||||
using BunyMuny;
|
||||
using CsvHelper.Configuration.Attributes;
|
||||
|
||||
namespace BunyMuny {
|
||||
class Program {
|
||||
static int Main(string[] args) {
|
||||
/// <summary>
|
||||
/// BunyMuny parses the CSV output of various bank statement listings and converts it to something more human readable with nice visualisations.
|
||||
/// </summary>
|
||||
/// <param name="file">The CSV file to read</param>
|
||||
/// <param name="rules">The JSON file to use for rules when parsing statement descriptions</param>
|
||||
/// <returns></returns>
|
||||
static int Main(string file = "test.csv", string rules = "rules.json") {
|
||||
Bank bank = Bank.ME;
|
||||
var statements = new List<Statement>();
|
||||
|
||||
using (var sr = new StreamReader("/mnt/code/cs/bunymuny/test.csv")) {
|
||||
using (var sr = new StreamReader(file)) {
|
||||
using (var csv = new CsvReader(sr, CultureInfo.InvariantCulture)) {
|
||||
csv.Read();
|
||||
csv.ReadHeader();
|
||||
|
@ -40,6 +46,10 @@ namespace BunyMuny {
|
|||
Value = value
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
Console.WriteLine(":(");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
10
Statement.cs
10
Statement.cs
|
@ -3,12 +3,18 @@ using System;
|
|||
namespace BunyMuny {
|
||||
public class Statement {
|
||||
public DateTime Date;
|
||||
public string Description;
|
||||
private string _description;
|
||||
public string Description {
|
||||
get => string.IsNullOrWhiteSpace(_description) ? OriginalDescription : _description;
|
||||
set { _description = value; }
|
||||
}
|
||||
|
||||
public string OriginalDescription;
|
||||
public double Value;
|
||||
public string Category;
|
||||
|
||||
public override string ToString() {
|
||||
return $"${Math.Abs(Value)} {(Value < 0 ? "to" : "from")} {Description} on {Date.ToString("MMM d yyyy")}";
|
||||
return $"${Math.Abs(Value)} {(Value < 0 ? "to" : "from")} {(Description)} on {Date.ToString("MMM d yyyy")}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CsvHelper" Version="15.0.6" />
|
||||
<PackageReference Include="System.CommandLine" Version="2.0.0-beta1.20371.2" />
|
||||
<PackageReference Include="System.CommandLine.DragonFruit" Version="0.3.0-alpha.20371.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
Loading…
Reference in a new issue