Comandos 2.1.0

Suggested Alternatives

LineaComando 3.0.9

dotnet add package Comandos --version 2.1.0
                    
NuGet\Install-Package Comandos -Version 2.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Comandos" Version="2.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Comandos" Version="2.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Comandos" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Comandos --version 2.1.0
                    
#r "nuget: Comandos, 2.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Comandos@2.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Comandos&version=2.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Comandos&version=2.1.0
                    
Install as a Cake Tool

PER.Comandos

Librería para crear rápidamente un árbol de comandos y mapear los parámetros pasados por línea de comandos a estructuras de clase.

Estructura de comandos

La estructura esperada por el objeto PER.Comandos.LineaComandos.LineaComandos es la siguiente (sin los corchetes):

  1. [modulo1] [modulo2] [modulo3] [comando] [--parametro1=valor1] [--parametro2]
  2. [modulo1] [modulo2] [modulo3] [comando]
  3. [comando] [--parametro1=valor1] [--parametro2]
  4. [comando]

Al inicializar el objeto, la respectiva ruta y parámetros quedan separados en los parámetros Ruta y Parametros.

Configuracion

La clase abstracta AConfiguracion hereda la interfas IConfiguracion la cual está pensada para un objeto que sea capaz de acceder a la configuración del sistema. Debe ser heredada y creada por el programador.

Nodo

La clase nodo PER.Comandos.LineaComandos.FactoriaComandos.Nodo es el que permite crear una estructura de árbol y cumple dos funciones:

  1. Representa un nodo en el arbol.
  2. Creador de un comando asociado a un nodo superior.

La manera de crear una ruta en el arbol y asociar dos comando al nodo3 es la siguiente:

var nodo = new Nodo<string, string>();
nodo.Add("nodo1").Add("nodo2").Add("nodo3")
                .Add("comando1", new Nodo<string, string>(new ComandoPrueba1()))
                .Padre?.Add("comando2", new Nodo<string, string>(new ComandoPrueba2()));

Los nodos comando1 y comando2 cumplen la función de creadores de comandos, pero, si asocia nodos debajo de estos, también cumplirán la función de nodo en el arbol.

Factoria de comandos

La clase PER.Comandos.LineaComandos.FactoriaComandos.FactoriaComandos utiliza la clase Nodo y este tiene la capacidad de mantener uno o más nodos raiz, pudiendo tener varias estructuras de arboles:

var factoria = new FactoriaComandos<string, string>();
factoria.Add("nodo1").Add("nodo2").Add("nodo3")
    .Add("comando1", new Nodo<string, string>(new ComandoPrueba1()))
    .Padre?.Add("comando2", new Nodo<string, string>(new ComandoPrueba2()));

factoria.Add("comando3", new Nodo<string, string>(new ComandoPrueba2()));

//lineaComando ya tuvo que ser inicializado con la ruta a buscar
IComando<string, string> comando = factoria.Crear(lineaComando, configuracion, logger);

Preparación de comandos

La creación de nuevos comando se consigue heredando la clase abstracta PER.Comandos.LineaComandos.Comando.ComandoBase e implementando las funciones abstractas.

Parámetros

Dentro del comando creado se espera parámetros pasados por el usuario los cuales ya fueron procesados en una colección por LineaComandos. Se puede tener una clase la cual tenga todos los parámetros esperados. Esta clase debe heredar a la interfaz PER.Comandos.LineaComandos.Atributo.IParametro y sus propiedades utilizar el atributo NombreAttribute:

public class ParametrosComando : IParametro 
{
    [Nombre("parametro1")]
    public string Parametro1 { get; set; }

    [Nombre("parametro2")]
    public bool Parametro2 { get; set; }
}

//Comando
private ParametrosComando _parametros;

public override void Preparar(ICollection<Parametro> parametros, IConfiguracion configuracion, ILogger logger) 
{
    _parametros = Parametro.New<ParametrosComando>(parametros);
    //Comprobacion de configuración si hace falta
    //asignación de logger si hace falta
}

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.0 254 9/5/2024 2.1.0 is deprecated because it is no longer maintained.
1.0.1 247 4/29/2024 1.0.1 is deprecated.