Skip to content

Commit e74893d

Browse files
Add Maple2.File.Cli CLI project
Add a new Maple2.File.Cli project (net8.0) with Program.cs to load .env, read MS2_DATA_FOLDER/Resource/Exported.m2d and provide a small interactive FlatType explorer using M2dReader and FlatTypeIndex. Add the project to the solution and expand solution configurations (x64/x86) so the new project is included in Debug/Release builds. Also update .gitignore to ignore a telemetry-id file.
1 parent 1ac2932 commit e74893d

4 files changed

Lines changed: 107 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,3 +331,4 @@ ASALocalRun/
331331
.env
332332
payload.json
333333
.claude/settings.local.json
334+
telemetry-id
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<LangVersion>12</LangVersion>
7+
<ImplicitUsings>enable</ImplicitUsings>
8+
<Nullable>enable</Nullable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<ProjectReference Include="..\Maple2.File.Flat\Maple2.File.Flat.csproj" />
13+
<ProjectReference Include="..\Maple2.File.IO\Maple2.File.IO.csproj" />
14+
<ProjectReference Include="..\Maple2.File.Parser\Maple2.File.Parser.csproj" />
15+
</ItemGroup>
16+
17+
</Project>

Maple2.File.Cli/Program.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Maple2.File.IO;
2+
using Maple2.File.Parser.Flat;
3+
4+
// Load .env from solution root
5+
string solutionDir = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "../../../.."));
6+
string dotenv = Path.Combine(solutionDir, ".env");
7+
if (File.Exists(dotenv)) {
8+
foreach (string line in File.ReadAllLines(dotenv)) {
9+
if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#")) continue;
10+
string[] parts = line.Split('=', 2, StringSplitOptions.TrimEntries);
11+
if (parts.Length == 2) Environment.SetEnvironmentVariable(parts[0], parts[1]);
12+
}
13+
}
14+
15+
string? m2dPath = Environment.GetEnvironmentVariable("MS2_DATA_FOLDER");
16+
if (string.IsNullOrEmpty(m2dPath)) {
17+
Console.WriteLine("MS2_DATA_FOLDER is not set. Set it in .env or as an environment variable.");
18+
return;
19+
}
20+
21+
string exportedPath = Path.Combine(m2dPath, "Resource", "Exported.m2d");
22+
Console.WriteLine($"Loading: {exportedPath}");
23+
24+
using var reader = new M2dReader(exportedPath);
25+
var index = new FlatTypeIndex(reader);
26+
27+
Console.WriteLine("Type 'type <name>' to inspect a type, 'quit' to exit.");
28+
Console.WriteLine("Example: type ugc_fi_prop_forsalea");
29+
Console.WriteLine();
30+
31+
index.CliExplorer();

Maple2.File.sln

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,90 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1919
.env.example = .env.example
2020
EndProjectSection
2121
EndProject
22+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maple2.File.Cli", "Maple2.File.Cli\Maple2.File.Cli.csproj", "{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}"
23+
EndProject
2224
Global
2325
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2426
Debug|Any CPU = Debug|Any CPU
27+
Debug|x64 = Debug|x64
28+
Debug|x86 = Debug|x86
2529
Release|Any CPU = Release|Any CPU
30+
Release|x64 = Release|x64
31+
Release|x86 = Release|x86
2632
EndGlobalSection
2733
GlobalSection(ProjectConfigurationPlatforms) = postSolution
2834
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2935
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|Any CPU.Build.0 = Debug|Any CPU
36+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|x64.ActiveCfg = Debug|Any CPU
37+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|x64.Build.0 = Debug|Any CPU
38+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|x86.ActiveCfg = Debug|Any CPU
39+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Debug|x86.Build.0 = Debug|Any CPU
3040
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|Any CPU.ActiveCfg = Release|Any CPU
3141
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|Any CPU.Build.0 = Release|Any CPU
42+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|x64.ActiveCfg = Release|Any CPU
43+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|x64.Build.0 = Release|Any CPU
44+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|x86.ActiveCfg = Release|Any CPU
45+
{21ECC3AD-DD75-4906-A577-513B49F5AA31}.Release|x86.Build.0 = Release|Any CPU
3246
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3347
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
48+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|x64.ActiveCfg = Debug|Any CPU
49+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|x64.Build.0 = Debug|Any CPU
50+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|x86.ActiveCfg = Debug|Any CPU
51+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Debug|x86.Build.0 = Debug|Any CPU
3452
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
3553
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|Any CPU.Build.0 = Release|Any CPU
54+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|x64.ActiveCfg = Release|Any CPU
55+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|x64.Build.0 = Release|Any CPU
56+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|x86.ActiveCfg = Release|Any CPU
57+
{F7063268-DC69-42FB-B94C-D35A887759B1}.Release|x86.Build.0 = Release|Any CPU
3658
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3759
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
60+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|x64.ActiveCfg = Debug|Any CPU
61+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|x64.Build.0 = Debug|Any CPU
62+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|x86.ActiveCfg = Debug|Any CPU
63+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Debug|x86.Build.0 = Debug|Any CPU
3864
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
3965
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|Any CPU.Build.0 = Release|Any CPU
66+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|x64.ActiveCfg = Release|Any CPU
67+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|x64.Build.0 = Release|Any CPU
68+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|x86.ActiveCfg = Release|Any CPU
69+
{391F7AFC-967A-4033-85CA-65C328C4FFCE}.Release|x86.Build.0 = Release|Any CPU
4070
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4171
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|Any CPU.Build.0 = Debug|Any CPU
72+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|x64.ActiveCfg = Debug|Any CPU
73+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|x64.Build.0 = Debug|Any CPU
74+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|x86.ActiveCfg = Debug|Any CPU
75+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Debug|x86.Build.0 = Debug|Any CPU
4276
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|Any CPU.ActiveCfg = Release|Any CPU
4377
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|Any CPU.Build.0 = Release|Any CPU
78+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|x64.ActiveCfg = Release|Any CPU
79+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|x64.Build.0 = Release|Any CPU
80+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|x86.ActiveCfg = Release|Any CPU
81+
{4634738C-CDCE-4426-8D41-FE20C2F85892}.Release|x86.Build.0 = Release|Any CPU
4482
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4583
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
84+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|x64.ActiveCfg = Debug|Any CPU
85+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|x64.Build.0 = Debug|Any CPU
86+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|x86.ActiveCfg = Debug|Any CPU
87+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Debug|x86.Build.0 = Debug|Any CPU
4688
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
4789
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|Any CPU.Build.0 = Release|Any CPU
90+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|x64.ActiveCfg = Release|Any CPU
91+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|x64.Build.0 = Release|Any CPU
92+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|x86.ActiveCfg = Release|Any CPU
93+
{7A3AFE6F-9291-4392-9605-F2BC21274D1D}.Release|x86.Build.0 = Release|Any CPU
94+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
95+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
96+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|x64.ActiveCfg = Debug|Any CPU
97+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|x64.Build.0 = Debug|Any CPU
98+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|x86.ActiveCfg = Debug|Any CPU
99+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Debug|x86.Build.0 = Debug|Any CPU
100+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
101+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|Any CPU.Build.0 = Release|Any CPU
102+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|x64.ActiveCfg = Release|Any CPU
103+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|x64.Build.0 = Release|Any CPU
104+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|x86.ActiveCfg = Release|Any CPU
105+
{AB4D72D2-50BD-4E3C-B3B1-670878A32AC2}.Release|x86.Build.0 = Release|Any CPU
48106
EndGlobalSection
49107
GlobalSection(SolutionProperties) = preSolution
50108
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)