Antelcat.Parameterization
1.1.0
See the version list below for details.
dotnet add package Antelcat.Parameterization --version 1.1.0
NuGet\Install-Package Antelcat.Parameterization -Version 1.1.0
<PackageReference Include="Antelcat.Parameterization" Version="1.1.0" />
<PackageVersion Include="Antelcat.Parameterization" Version="1.1.0" />
<PackageReference Include="Antelcat.Parameterization" />
paket add Antelcat.Parameterization --version 1.1.0
#r "nuget: Antelcat.Parameterization, 1.1.0"
#:package Antelcat.Parameterization@1.1.0
#addin nuget:?package=Antelcat.Parameterization&version=1.1.0
#tool nuget:?package=Antelcat.Parameterization&version=1.1.0
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 ubuntuOutput:
Pulling image ubuntu:latest... Successfully Pulled image ubuntu:latestIn this example, a custom
Imageclass is seamlessly converted from astring, thanks to the[TypeConverter(typeof(ImageConverter))]attribute applied toImage. Additionally, for locally use, the[Argument(Converter = typeof(ImageConverter))] Image imageannotation allows the same seamless conversion.Run a Container:
Command:
> run ubuntuOutput:
ubuntu:latest ubuntu runningThis demonstrates how the default value for the
nameparameter is automatically used when it's not provided in the input.Display Container Statistics:
Command:
> psOutput:
CONTAINER_ID IMAGE NAME STATUS 00a57dbe ubuntu:latest ubuntu runningStop a Container and Run a New One:
Commands:
> stop > stop 00a57dbe > run --name "my container" --image kaliOutput:
Argument "id" is not specified. Stopping container 00a57dbe... Pulling image kali:latest... Successfully Pulled image kali:latest kali:latest my container runningThis 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 --allOutput:
CONTAINER_ID IMAGE NAME STATUS 00a57dbe ubuntu:latest ubuntu stopped 0419fcea kali:latest my container runningFirst,
Argument(FullName = "all")replaces the full name of the originalshowAll.Argument(ShortName = "a")meansps -aalso works as same.Second, the effect of
ArgumentAttribute.DefaultValueis evident. When a switch is used without an accompanying value, theArgumentAttribute.DefaultValueis 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.ParameterizationandAntelcat.Parameterization.SourceGeneratorsas 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.
-itwill both open-iand-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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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.