refactor!: moved table services into a dedicated assembly
This commit is contained in:
parent
bf9e40dadd
commit
bb0dcd0d86
15 changed files with 218 additions and 137 deletions
198
.editorconfig
198
.editorconfig
|
@ -3,120 +3,120 @@
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
charset=utf-8
|
charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
insert_final_newline=true
|
insert_final_newline = true
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=4
|
indent_size = 4
|
||||||
|
|
||||||
# Microsoft .NET properties
|
# Microsoft .NET properties
|
||||||
csharp_new_line_before_members_in_object_initializers=false
|
csharp_new_line_before_members_in_object_initializers = false
|
||||||
csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
|
csharp_preferred_modifier_order = public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
|
||||||
csharp_space_after_cast=false
|
csharp_space_after_cast = false
|
||||||
csharp_style_var_elsewhere=false:hint
|
csharp_style_var_elsewhere = false:hint
|
||||||
csharp_style_var_for_built_in_types=false:hint
|
csharp_style_var_for_built_in_types = false:hint
|
||||||
csharp_style_var_when_type_is_apparent=true:hint
|
csharp_style_var_when_type_is_apparent = true:hint
|
||||||
csharp_preserve_single_line_statements=false
|
csharp_preserve_single_line_statements = false
|
||||||
csharp_preserve_single_line_blocks=true
|
csharp_preserve_single_line_blocks = true
|
||||||
dotnet_style_predefined_type_for_locals_parameters_members=true:hint
|
dotnet_style_predefined_type_for_locals_parameters_members = true:hint
|
||||||
dotnet_style_predefined_type_for_member_access=true:hint
|
dotnet_style_predefined_type_for_member_access = true:hint
|
||||||
dotnet_style_qualification_for_event=true:hint
|
dotnet_style_qualification_for_event = true:hint
|
||||||
dotnet_style_qualification_for_field=true:hint
|
dotnet_style_qualification_for_field = true:hint
|
||||||
dotnet_style_qualification_for_method=true:hint
|
dotnet_style_qualification_for_method = true:hint
|
||||||
dotnet_style_qualification_for_property=true:hint
|
dotnet_style_qualification_for_property = true:hint
|
||||||
dotnet_style_require_accessibility_modifiers=for_non_interface_members:hint
|
dotnet_style_require_accessibility_modifiers = for_non_interface_members:hint
|
||||||
|
|
||||||
# ReSharper properties
|
# ReSharper properties
|
||||||
resharper_alignment_tab_fill_style=optimal_fill
|
resharper_alignment_tab_fill_style = optimal_fill
|
||||||
resharper_apply_on_completion=true
|
resharper_apply_on_completion = true
|
||||||
resharper_blank_lines_after_control_transfer_statements=1
|
resharper_blank_lines_after_control_transfer_statements = 1
|
||||||
resharper_blank_lines_around_single_line_auto_property=1
|
resharper_blank_lines_around_single_line_auto_property = 1
|
||||||
resharper_blank_lines_around_single_line_property=1
|
resharper_blank_lines_around_single_line_property = 1
|
||||||
resharper_blank_lines_before_single_line_comment=1
|
resharper_blank_lines_before_single_line_comment = 1
|
||||||
resharper_blank_lines_between_using_groups=1
|
resharper_blank_lines_between_using_groups = 1
|
||||||
resharper_braces_for_for=required
|
resharper_braces_for_for = required
|
||||||
resharper_braces_for_foreach=required
|
resharper_braces_for_foreach = required
|
||||||
resharper_braces_for_ifelse=required
|
resharper_braces_for_ifelse = required
|
||||||
resharper_braces_for_while=required
|
resharper_braces_for_while = required
|
||||||
resharper_can_use_global_alias=false
|
resharper_can_use_global_alias = false
|
||||||
resharper_csharp_blank_lines_around_single_line_field=1
|
resharper_csharp_blank_lines_around_single_line_field = 1
|
||||||
resharper_csharp_blank_lines_around_single_line_invocable=1
|
resharper_csharp_blank_lines_around_single_line_invocable = 1
|
||||||
resharper_csharp_indent_style=tab
|
resharper_csharp_indent_style = tab
|
||||||
resharper_csharp_insert_final_newline=true
|
resharper_csharp_insert_final_newline = true
|
||||||
resharper_csharp_keep_blank_lines_in_code=1
|
resharper_csharp_keep_blank_lines_in_code = 1
|
||||||
resharper_csharp_keep_blank_lines_in_declarations=1
|
resharper_csharp_keep_blank_lines_in_declarations = 1
|
||||||
resharper_csharp_new_line_before_while=true
|
resharper_csharp_new_line_before_while = true
|
||||||
resharper_csharp_use_indent_from_vs=false
|
resharper_csharp_use_indent_from_vs = false
|
||||||
resharper_csharp_wrap_arguments_style=chop_if_long
|
resharper_csharp_wrap_arguments_style = chop_if_long
|
||||||
resharper_csharp_wrap_extends_list_style=chop_if_long
|
resharper_csharp_wrap_extends_list_style = chop_if_long
|
||||||
resharper_csharp_wrap_parameters_style=chop_if_long
|
resharper_csharp_wrap_parameters_style = chop_if_long
|
||||||
resharper_css_insert_final_newline=false
|
resharper_css_insert_final_newline = false
|
||||||
resharper_enforce_line_ending_style=true
|
resharper_enforce_line_ending_style = true
|
||||||
resharper_html_insert_final_newline=false
|
resharper_html_insert_final_newline = false
|
||||||
resharper_indent_nested_fixed_stmt=true
|
resharper_indent_nested_fixed_stmt = true
|
||||||
resharper_js_indent_style=tab
|
resharper_js_indent_style = tab
|
||||||
resharper_js_insert_final_newline=true
|
resharper_js_insert_final_newline = true
|
||||||
resharper_js_keep_blank_lines_in_code=1
|
resharper_js_keep_blank_lines_in_code = 1
|
||||||
resharper_js_stick_comment=false
|
resharper_js_stick_comment = false
|
||||||
resharper_js_use_indent_from_vs=false
|
resharper_js_use_indent_from_vs = false
|
||||||
resharper_js_wrap_before_binary_opsign=true
|
resharper_js_wrap_before_binary_opsign = true
|
||||||
resharper_js_wrap_chained_method_calls=chop_if_long
|
resharper_js_wrap_chained_method_calls = chop_if_long
|
||||||
resharper_keep_blank_lines_between_declarations=1
|
resharper_keep_blank_lines_between_declarations = 1
|
||||||
resharper_min_blank_lines_after_imports=1
|
resharper_min_blank_lines_after_imports = 1
|
||||||
resharper_place_attribute_on_same_line=False
|
resharper_place_attribute_on_same_line = False
|
||||||
resharper_place_constructor_initializer_on_same_line=false
|
resharper_place_constructor_initializer_on_same_line = false
|
||||||
resharper_place_type_constraints_on_same_line=false
|
resharper_place_type_constraints_on_same_line = false
|
||||||
resharper_protobuf_insert_final_newline=false
|
resharper_protobuf_insert_final_newline = false
|
||||||
resharper_qualified_using_at_nested_scope=true
|
resharper_qualified_using_at_nested_scope = true
|
||||||
resharper_resx_insert_final_newline=false
|
resharper_resx_insert_final_newline = false
|
||||||
resharper_space_within_single_line_array_initializer_braces=true
|
resharper_space_within_single_line_array_initializer_braces = true
|
||||||
resharper_use_indents_from_main_language_in_file=false
|
resharper_use_indents_from_main_language_in_file = false
|
||||||
resharper_vb_insert_final_newline=false
|
resharper_vb_insert_final_newline = false
|
||||||
resharper_wrap_after_declaration_lpar=true
|
resharper_wrap_after_declaration_lpar = true
|
||||||
resharper_wrap_after_invocation_lpar=true
|
resharper_wrap_after_invocation_lpar = true
|
||||||
resharper_wrap_before_extends_colon=true
|
resharper_wrap_before_extends_colon = true
|
||||||
resharper_wrap_before_first_type_parameter_constraint=true
|
resharper_wrap_before_first_type_parameter_constraint = true
|
||||||
resharper_wrap_before_type_parameter_langle=true
|
resharper_wrap_before_type_parameter_langle = true
|
||||||
resharper_xmldoc_indent_child_elements=ZeroIndent
|
resharper_xmldoc_indent_child_elements = ZeroIndent
|
||||||
resharper_xmldoc_indent_text=ZeroIndent
|
resharper_xmldoc_indent_text = ZeroIndent
|
||||||
resharper_xmldoc_insert_final_newline=false
|
resharper_xmldoc_insert_final_newline = false
|
||||||
resharper_xml_insert_final_newline=false
|
resharper_xml_insert_final_newline = false
|
||||||
|
|
||||||
# ReSharper inspection severities
|
# ReSharper inspection severities
|
||||||
resharper_check_namespace_highlighting=none
|
resharper_check_namespace_highlighting = none
|
||||||
resharper_convert_to_auto_property_highlighting=none
|
resharper_convert_to_auto_property_highlighting = none
|
||||||
resharper_localizable_element_highlighting=none
|
resharper_localizable_element_highlighting = none
|
||||||
resharper_redundant_comma_in_attribute_list_highlighting=none
|
resharper_redundant_comma_in_attribute_list_highlighting = none
|
||||||
resharper_redundant_comma_in_enum_declaration_highlighting=none
|
resharper_redundant_comma_in_enum_declaration_highlighting = none
|
||||||
resharper_redundant_comma_in_initializer_highlighting=none
|
resharper_redundant_comma_in_initializer_highlighting = none
|
||||||
resharper_string_compare_to_is_culture_specific_highlighting=none
|
resharper_string_compare_to_is_culture_specific_highlighting = none
|
||||||
resharper_string_index_of_is_culture_specific_1_highlighting=none
|
resharper_string_index_of_is_culture_specific_1_highlighting = none
|
||||||
resharper_use_null_propagation_highlighting=none
|
resharper_use_null_propagation_highlighting = none
|
||||||
resharper_use_object_or_collection_initializer_highlighting=hint
|
resharper_use_object_or_collection_initializer_highlighting = hint
|
||||||
resharper_use_string_interpolation_highlighting=hint
|
resharper_use_string_interpolation_highlighting = hint
|
||||||
|
|
||||||
# Matches the exact files either package.json or .travis.yml
|
# Matches the exact files either package.json or .travis.yml
|
||||||
[{package.json,.travis.yml}]
|
[{package.json,.travis.yml}]
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=2
|
indent_size = 2
|
||||||
tab_width=2
|
tab_width = 2
|
||||||
|
|
||||||
[*.{cs,js,json,jsx,proto,resjson,ts,tsx}]
|
[*.{cs,js,json,jsx,proto,resjson,ts,tsx}]
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=4
|
indent_size = 4
|
||||||
tab_width=4
|
tab_width = 4
|
||||||
|
|
||||||
[*.{asax,ascx,aspx,cshtml,css,htm,html,master,razor,skin,vb,xaml,xamlx,xoml}]
|
[*.{asax,ascx,aspx,cshtml,css,htm,html,master,razor,skin,vb,xaml,xamlx,xoml}]
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=4
|
indent_size = 4
|
||||||
tab_width=4
|
tab_width = 4
|
||||||
|
|
||||||
[*.{appxmanifest,build,config,csproj,dbml,discomap,dtd,jsproj,lsproj,njsproj,nuspec,proj,props,resw,resx,StyleCop,targets,tasks,vbproj,xml,xsd}]
|
[*.{appxmanifest,build,config,csproj,dbml,discomap,dtd,jsproj,lsproj,njsproj,nuspec,proj,props,resw,resx,StyleCop,targets,tasks,vbproj,xml,xsd}]
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=2
|
indent_size = 2
|
||||||
tab_width=2
|
tab_width = 2
|
||||||
|
|
||||||
[*.proto]
|
[*.proto]
|
||||||
indent_style=space
|
indent_style = space
|
||||||
indent_size=2
|
indent_size = 2
|
||||||
tab_width=2
|
tab_width = 2
|
||||||
|
|
|
@ -4,3 +4,5 @@ flake.*
|
||||||
node_modules/
|
node_modules/
|
||||||
.direnv/
|
.direnv/
|
||||||
.config/
|
.config/
|
||||||
|
obj/
|
||||||
|
bin/
|
||||||
|
|
|
@ -13,6 +13,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4CE102F8
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MfGames.ToolBuilder.Tests", "tests\MfGames.ToolBuilder.Tests\MfGames.ToolBuilder.Tests.csproj", "{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MfGames.ToolBuilder.Tests", "tests\MfGames.ToolBuilder.Tests\MfGames.ToolBuilder.Tests.csproj", "{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MfGames.ToolBuilder.Tables", "src\MfGames.ToolBuilder.Tables\MfGames.ToolBuilder.Tables.csproj", "{1124D139-7557-46C1-906A-39E939E6FFF9}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -62,10 +64,23 @@ Global
|
||||||
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x64.Build.0 = Release|Any CPU
|
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x86.ActiveCfg = Release|Any CPU
|
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x86.Build.0 = Release|Any CPU
|
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{5253E2A6-9565-45AF-92EA-1BFD3A63AC23} = {9C845D9A-B359-43B3-AE9E-B84CE945AF21}
|
{5253E2A6-9565-45AF-92EA-1BFD3A63AC23} = {9C845D9A-B359-43B3-AE9E-B84CE945AF21}
|
||||||
{0A12108A-9E00-41E9-8935-F4AA7D6208FB} = {4CE102F8-5C70-4696-B85F-93BB10034918}
|
{0A12108A-9E00-41E9-8935-F4AA7D6208FB} = {4CE102F8-5C70-4696-B85F-93BB10034918}
|
||||||
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A} = {4CE102F8-5C70-4696-B85F-93BB10034918}
|
{77DDD61F-AF57-4AE7-A2A8-08C61A630A9A} = {4CE102F8-5C70-4696-B85F-93BB10034918}
|
||||||
|
{1124D139-7557-46C1-906A-39E939E6FFF9} = {9C845D9A-B359-43B3-AE9E-B84CE945AF21}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
22
README.md
22
README.md
|
@ -2,7 +2,27 @@
|
||||||
|
|
||||||
_An opinionated library for easily creating command-line tools in C#._
|
_An opinionated library for easily creating command-line tools in C#._
|
||||||
|
|
||||||
ToolBuilder is a library to encapsulate the setup and running of tools, CLI components arranged with verbs (like `git`). It includes some opinionated decisions on default setup.
|
MfGames.ToolBuilder is a library to encapsulate the setup and running of tools, CLI components arranged with verbs (like `git`). It includes some opinionated decisions on default setup.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To make sure the environment is correctly set up for build:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./scripts/setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
To build the project:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./scripts/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
To test the project:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./scripts/test.sh
|
||||||
|
```
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
|
|
5
TASKS.md
5
TASKS.md
|
@ -1,5 +0,0 @@
|
||||||
- [ ] Split out tables into an assembly
|
|
||||||
- [ ] Switch to GitVersion for release
|
|
||||||
- [ ] Switch to scripts instead of Node for targets
|
|
||||||
- [ ] Clean up the Gitlab setup
|
|
||||||
- [ ] Change configuration back to default
|
|
|
@ -14,6 +14,10 @@ This builds the project and creates the binaries in debug mode.
|
||||||
|
|
||||||
This runs any required tests.
|
This runs any required tests.
|
||||||
|
|
||||||
|
## `format.sh`
|
||||||
|
|
||||||
|
This is used to format the code base using our standards. It matches the commands in the `lefthook` pre-commit hook.
|
||||||
|
|
||||||
## `release.sh`
|
## `release.sh`
|
||||||
|
|
||||||
Intended to run in a CI environment, this creates a NuGet package and publishes it.
|
Intended to run in a CI environment, this creates a NuGet package and publishes it.
|
||||||
|
|
|
@ -6,3 +6,9 @@ cd $(dirname $0)/..
|
||||||
|
|
||||||
# Format the .NET code
|
# Format the .NET code
|
||||||
dotnet format || exit 1
|
dotnet format || exit 1
|
||||||
|
|
||||||
|
# Format using Prettier.
|
||||||
|
prettier . --write --loglevel warn
|
||||||
|
|
||||||
|
# Format the Flake.
|
||||||
|
nixfmt flake.nix
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<Description>Provides a tool service for creating tools that output tabular data to the console.</Description>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Autofac" Version="6.3.0"/>
|
||||||
|
<PackageReference Include="ConsoleTableExt" Version="3.1.9"/>
|
||||||
|
<PackageReference Include="CsvHelper" Version="27.2.1"/>
|
||||||
|
<PackageReference Include="FluentResults" Version="3.3.0"/>
|
||||||
|
<PackageReference Include="Glob" Version="1.1.9"/>
|
||||||
|
<PackageReference Include="Humanizer.Core" Version="2.14.1"/>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||||
|
<PackageReference Include="Roslynator.Analyzers" Version="4.1.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers" Version="4.1.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Roslynator.Formatting.Analyzers" Version="4.1.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Serilog" Version="2.10.0"/>
|
||||||
|
<PackageReference Include="SerilogAnalyzer" Version="0.15.0"/>
|
||||||
|
<PackageReference Include="System.CommandLine" Version="[2.0.0-beta3.22114.1,)"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\MfGames.ToolBuilder\MfGames.ToolBuilder.csproj"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -1,14 +1,10 @@
|
||||||
#pragma warning disable Serilog004 // Constant MessageTemplate verifier
|
#pragma warning disable Serilog004 // Constant MessageTemplate verifier
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.CommandLine;
|
using System.CommandLine;
|
||||||
using System.CommandLine.Invocation;
|
using System.CommandLine.Invocation;
|
||||||
using System.CommandLine.IO;
|
using System.CommandLine.IO;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
using ConsoleTableExt;
|
using ConsoleTableExt;
|
||||||
|
|
||||||
|
@ -152,7 +148,7 @@ namespace MfGames.ToolBuilder.Tables
|
||||||
.Select(x => x.ColumnName)
|
.Select(x => x.ColumnName)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
List<string> expandedNames = tableColumns
|
var expandedNames = tableColumns
|
||||||
.SelectMany(x => IsMatch(allColumns, x))
|
.SelectMany(x => IsMatch(allColumns, x))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
@ -333,7 +329,7 @@ namespace MfGames.ToolBuilder.Tables
|
||||||
var csv = new CsvWriter(stringWriter, configuration);
|
var csv = new CsvWriter(stringWriter, configuration);
|
||||||
|
|
||||||
foreach (DataColumn column in
|
foreach (DataColumn column in
|
||||||
this.table!.Columns.OfType<DataColumn>())
|
this.table!.Columns.OfType<DataColumn>())
|
||||||
{
|
{
|
||||||
csv.WriteField(column.ColumnName);
|
csv.WriteField(column.ColumnName);
|
||||||
}
|
}
|
||||||
|
@ -343,7 +339,7 @@ namespace MfGames.ToolBuilder.Tables
|
||||||
foreach (DataRow row in this.table.AsEnumerable())
|
foreach (DataRow row in this.table.AsEnumerable())
|
||||||
{
|
{
|
||||||
foreach (DataColumn column in this.table.Columns
|
foreach (DataColumn column in this.table.Columns
|
||||||
.OfType<DataColumn>())
|
.OfType<DataColumn>())
|
||||||
{
|
{
|
||||||
csv.WriteField(Convert.ToString(row[column]));
|
csv.WriteField(Convert.ToString(row[column]));
|
||||||
}
|
}
|
||||||
|
@ -402,7 +398,7 @@ namespace MfGames.ToolBuilder.Tables
|
||||||
TableFormatType tableFormat)
|
TableFormatType tableFormat)
|
||||||
{
|
{
|
||||||
// Build the table from options.
|
// Build the table from options.
|
||||||
ConsoleTableBuilder builder = ConsoleTableBuilder.From(this.table);
|
var builder = ConsoleTableBuilder.From(this.table);
|
||||||
|
|
||||||
// Figure out formatting.
|
// Figure out formatting.
|
||||||
if (tableFormat == TableFormatType.Default)
|
if (tableFormat == TableFormatType.Default)
|
|
@ -48,7 +48,7 @@ namespace MfGames.ToolBuilder.Extensions
|
||||||
ICollection<string> possible)
|
ICollection<string> possible)
|
||||||
{
|
{
|
||||||
// Look for a direct match.
|
// Look for a direct match.
|
||||||
List<string> found = possible
|
var found = possible
|
||||||
.Where(
|
.Where(
|
||||||
x => string.Equals(
|
x => string.Equals(
|
||||||
x,
|
x,
|
||||||
|
@ -116,7 +116,7 @@ namespace MfGames.ToolBuilder.Extensions
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attempt a fuzzy search.
|
// Attempt a fuzzy search.
|
||||||
List<string> possible = Enum.GetNames(typeof(TEnum))
|
var possible = Enum.GetNames(typeof(TEnum))
|
||||||
.Select(e => e.ToLower())
|
.Select(e => e.ToLower())
|
||||||
.Where(e => e.StartsWith(input.ToLower()))
|
.Where(e => e.StartsWith(input.ToLower()))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
|
@ -5,24 +5,24 @@
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<Description>A framework for easily creating command line tools using System.CommandLine, Autofac, and Serilog.</Description>
|
<Description>A framework for easily creating command line tools using System.CommandLine, Autofac, and Serilog.</Description>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- System.CommandLine is pre-release and will be for a while. -->
|
<!-- System.CommandLine is pre-release and will be for a while. -->
|
||||||
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Autofac" Version="6.3.0" />
|
<PackageReference Include="Autofac" Version="6.3.0"/>
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
|
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0"/>
|
||||||
<PackageReference Include="ConsoleTableExt" Version="3.1.9" />
|
<PackageReference Include="ConsoleTableExt" Version="3.1.9"/>
|
||||||
<PackageReference Include="CsvHelper" Version="27.2.1" />
|
<PackageReference Include="CsvHelper" Version="27.2.1"/>
|
||||||
<PackageReference Include="FluentResults" Version="3.3.0" />
|
<PackageReference Include="FluentResults" Version="3.3.0"/>
|
||||||
<PackageReference Include="Glob" Version="1.1.9" />
|
<PackageReference Include="Glob" Version="1.1.9"/>
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
|
<PackageReference Include="Humanizer.Core" Version="2.14.1"/>
|
||||||
<PackageReference Include="MfGames.IO" Version="1.2.3" />
|
<PackageReference Include="MfGames.IO" Version="1.2.3"/>
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1"/>
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0"/>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||||
<PackageReference Include="Roslynator.Analyzers" Version="4.1.0">
|
<PackageReference Include="Roslynator.Analyzers" Version="4.1.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
@ -35,15 +35,15 @@
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Serilog" Version="2.10.0" />
|
<PackageReference Include="Serilog" Version="2.10.0"/>
|
||||||
<PackageReference Include="Serilog.Enrichers.Demystifier" Version="1.0.2" />
|
<PackageReference Include="Serilog.Enrichers.Demystifier" Version="1.0.2"/>
|
||||||
<PackageReference Include="Serilog.Exceptions" Version="8.1.0" />
|
<PackageReference Include="Serilog.Exceptions" Version="8.1.0"/>
|
||||||
<PackageReference Include="Serilog.Extensions.Autofac.DependencyInjection" Version="4.0.0" />
|
<PackageReference Include="Serilog.Extensions.Autofac.DependencyInjection" Version="4.0.0"/>
|
||||||
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.2.0" />
|
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.2.0"/>
|
||||||
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
|
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1"/>
|
||||||
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" />
|
<PackageReference Include="SerilogAnalyzer" Version="0.15.0"/>
|
||||||
<PackageReference Include="System.CommandLine" Version="[2.0.0-beta3.22114.1,)" />
|
<PackageReference Include="System.CommandLine" Version="[2.0.0-beta3.22114.1,)"/>
|
||||||
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22114.1" />
|
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22114.1"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\src\MfGames.ToolBuilder.Tables\MfGames.ToolBuilder.Tables.csproj" />
|
||||||
<ProjectReference Include="..\..\src\MfGames.ToolBuilder\MfGames.ToolBuilder.csproj" />
|
<ProjectReference Include="..\..\src\MfGames.ToolBuilder\MfGames.ToolBuilder.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,9 @@ namespace MfGames.ToolBuilder.Tests
|
||||||
.WithArguments(
|
.WithArguments(
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
"run", "--project", projectFile.FullName, "--",
|
"run",
|
||||||
|
"--project", projectFile.FullName,
|
||||||
|
"--",
|
||||||
"crash",
|
"crash",
|
||||||
})
|
})
|
||||||
.WithWorkingDirectory(projectFile.DirectoryName!)
|
.WithWorkingDirectory(projectFile.DirectoryName!)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\src\MfGames.ToolBuilder.Tables\MfGames.ToolBuilder.Tables.csproj" />
|
||||||
<ProjectReference Include="..\..\src\MfGames.ToolBuilder\MfGames.ToolBuilder.csproj" />
|
<ProjectReference Include="..\..\src\MfGames.ToolBuilder\MfGames.ToolBuilder.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
Reference in a new issue