命令行分析组件IKende.CLI

IKende.CLI是一个简单易用的命令行解析组件,它可以用来解析命令行参数和选项,并提供友好的帮助页面。

安装

可以通过NuGet安装IKende.CLI,输入以下命令即可:

Install-Package IKende.CLI

使用

使用IKende.CLI非常简单,只需定义程序的参数和选项即可。以下是一个简单的示例,演示如何解析名为“person”的命令:

static void Main(string[] args)

{

var cmd = new Command("person")

{

new Argument("name", "The name of the person"),

new Option("age", () => 18, "The age of the person"),

new Option("gender", () => "male", "The gender of the person"),

};

cmd.Handler = CommandHandler.Create((name, age, gender) =>

{

Console.WriteLine($"Name: {name}");

Console.WriteLine($"Age: {age}");

Console.WriteLine($"Gender: {gender}");

});

cmd.Invoke(args);

}

在这个示例中,我们定义了一个名为“person”的命令,该命令包含三个参数:name,age和gender。其中,name参数是必需的,并且是一个字符串;age和gender是可选的,其默认值为18和“male”。

我们还定义了一个命令处理程序,它接受三个参数:name,age和gender。当解析命令后,Command对象会自动调用该处理程序,并将解析得到的参数传递给它。在这个处理程序中,我们只是简单地打印出这些参数。

当我们运行这个程序并传入参数时,它会像这样输出:

> dotnet hello.dll person John --age 25 --gender male

Name: John

Age: 25

Gender: male

除了基本用法外,IKende.CLI还提供了很多其他功能,例如:

1. 子命令(Subcommands)

IKende.CLI允许您创建具有层次结构的命令,其中包含一个主命令和几个子命令。这对于大型应用程序非常有用,因为它可以帮助组织和解析命令行参数。以下是一个简单的示例:

var app = new Command("myapp")

{

new Command("server")

{

new Option("port", () => 8080, "The server port"),

new Option("address", () => "localhost", "The server address"),

new Option("ssl", () => false, "Enable SSL"),

new Option("cert", "The certificate file path"),

new Option("key", "The private key file path"),

},

new Command("client")

{

new Option("url", "The server URL"),

new Option("timeout", () => 30, "The request timeout"),

},

};

在这个示例中,我们创建了一个名为“myapp”的主命令,其中包含两个子命令:server和client。每个子命令都可以包含自己的参数和选项。

2. 帮助文档(Help Text)

IKende.CLI还允许您为命令和选项添加帮助文本,这样用户就可以通过命令行上的--help参数查看帮助文本。以下是一个示例:

var cmd = new Command("person")

{

new Argument("name", "The name of the person"),

new Option("age", () => 18, "The age of the person"),

new Option("gender", () => "male", "The gender of the person"),

};

cmd.Description = "Create a new person record";

cmd.ExtendedHelpText = $"Example usage:{Environment.NewLine} create a new person record with:\n {Process.GetCurrentProcess().ProcessName} person John --age 25";

在这个示例中,我们为“person”命令添加了说明和扩展帮助文本。扩展帮助文本包括一些示例用法,以帮助用户更好地理解命令。

3. 参数转换(Argument Conversion)

由于命令行参数总是以字符串形式传递,IKende.CLI允许您为参数和选项定义转换器。这可以将字符串转换为相应的类型,并提供更好的错误消息。以下是一个示例:

var cmd = new Command("sum")

{

new Argument("x", "The first number") { Arity = ArgumentArity.ExactlyOne },

new Argument("y", "The second number") { Arity = ArgumentArity.ExactlyOne },

};

cmd.Handler = CommandHandler.Create((x, y) =>

{

Console.WriteLine($"{x} + {y} = {x} + {y}");

});

cmd.ConfigureArgument("x", x => ParseInt(x));

cmd.ConfigureArgument("y", y => ParseInt(y));

static int ParseInt(string arg)

{

if (int.TryParse(arg, out int result))

{

return result;

}

throw new ArgumentException($"Invalid value '{arg}' for argument");

}

在这个示例中,我们定义了一个名为“sum”的命令,它包含两个整数参数:“x”和“y”,其处理程序将这两个数字相加。

我们还为这些参数定义了转换器ParseInt。这样,如果用户提供无效的参数值,我们可以提供更好的错误消息。

总结

总的来说,IKende.CLI是一个非常实用的组件,它可以轻松地解析和处理命令行参数和选项。它支持子命令、帮助文本和参数转换,并且易于使用。因此,我强烈建议使用IKende.CLI来简化您的命令行应用程序的开发。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(20) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部