Antelcat.Parameterization
1.2.5
dotnet add package Antelcat.Parameterization --version 1.2.5
NuGet\Install-Package Antelcat.Parameterization -Version 1.2.5
<PackageReference Include="Antelcat.Parameterization" Version="1.2.5" />
paket add Antelcat.Parameterization --version 1.2.5
#r "nuget: Antelcat.Parameterization, 1.2.5"
// Install Antelcat.Parameterization as a Cake Addin #addin nuget:?package=Antelcat.Parameterization&version=1.2.5 // Install Antelcat.Parameterization as a Cake Tool #tool nuget:?package=Antelcat.Parameterization&version=1.2.5
Antelcat.Parameterization: Effortless Command-Line Application Builder
English | 中文
Welcome to Antelcat.Parameterization, a powerful source generator designed to revolutionize the way you create command-line applications. This tool simplifies the process of building CLI applications by automatically generating parsing methods with just attribute marking on classes and methods.
Features
- Attribute-Driven Development: Easily define commands and arguments using attributes.
- Automatic Parsing: Automatically generates methods for parsing command-line arguments.
- Custom Type Converter: Works well with
System.ComponentModel.StringConverter
.
Demo
The Demo Program implements a simple Docker application to show its features.
Pull an Image:
Command:
> pull ubuntu
Output:
Pulling image ubuntu:latest... Successfully Pulled image ubuntu:latest
In this example, a custom
Image
class is seamlessly converted from astring
, thanks to the[TypeConverter(typeof(ImageConverter))]
attribute applied toImage
. Additionally, for locally use, the[Argument(Converter = typeof(ImageConverter))] Image image
annotation allows the same seamless conversion.Run a Container:
Command:
> run ubuntu
Output:
ubuntu:latest ubuntu running
This demonstrates how the default value for the
name
parameter is automatically used when it's not provided in the input.Display Container Statistics:
Command:
> ps
Output:
CONTAINER_ID IMAGE NAME STATUS 00a57dbe ubuntu:latest ubuntu running
Stop a Container and Run a New One:
Commands:
> stop > stop 00a57dbe > run --name "my container" --image kali
Output:
Argument "id" is not specified. Stopping container 00a57dbe... Pulling image kali:latest... Successfully Pulled image kali:latest kali:latest my container running
This example highlights the use of named switches, allowing argument reordering. Additionally, it showcases how strings enclosed in
""
are correctly parsed.Display Updated Container Statistics:
Command:
> ps --all
Output:
CONTAINER_ID IMAGE NAME STATUS 00a57dbe ubuntu:latest ubuntu stopped 0419fcea kali:latest my container running
First,
Argument(FullName = "all")
replaces the full name of the originalshowAll
.Argument(ShortName = "a")
meansps -a
also works as same.Second, the effect of
ArgumentAttribute.DefaultValue
is evident. When a switch is used without an accompanying value, theArgumentAttribute.DefaultValue
is automatically converted and used to fill the argument, regardless of the default parameter value ofbool showAll = false
.
Installation
Via Nuget (✨Recommanded)
Uploaded to Nuget. You can install via nuget CLI or your favorite IDE.
Via source code
Clone or download zip of the source code.
Reference
Antelcat.Parameterization
andAntelcat.Parameterization.SourceGenerators
as follows.<ItemGroup> <ProjectReference Include="..\Antelcat.Parameterization\Antelcat.Parameterization.csproj"/> <ProjectReference Include="..\Antelcat.Parameterization.SourceGenerators\Antelcat.Parameterization.SourceGenerators.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/> </ItemGroup>
NOTICE that
OutputItemType="Analyzer" ReferenceOutputAssembly="false"
is necessary because it is a Source Generator.Enjoy.
Contributing
We welcome contributions to this project! Whether it's reporting bugs, suggesting enhancements, or adding new features, your input is valuable to us.
TODO
- Nuget package.
- Multiple parameters, use
T[]
. - Automatically generate help documents.
- Check for excess parameters.
- Parameter combination, e.g.
-it
will both open-i
and-t
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.