gpt4 book ai didi

rust - 包含具有不同要求和冲突的参数的 Clap arg 组

转载 作者:行者123 更新时间:2023-11-29 08:20:31 25 4
gpt4 key购买 nike

我正在尝试在 Clap 和 YAML 的帮助下用 Rust 编写 CLI。我的输入将需要一个参数(文件路径)和标志之一 -s-r-g。标志 -s-r 将需要两个标志之一 -t-m,但是标志 -g-t-m 冲突。我正在尝试配置它,以便在选择 -t-m 时不接受 -g,但它不允许使用-s-r-t-m

如何配置我的 YAML 文件,以便我可以禁止 -gt-gm 但允许(并要求)使用 -t-m-s-r

cli.yml:

name: mfm
version: "0.1.0"
author: Jonathan Marple <elpramnoj@gmail.com>
about: Media file manager written in rust.
args:
- INPUT:
help: Sets the input file(s) to use
required: true
- scrape:
short: s
long: scrape
help: Scrape information on show/movie
requires:
- DB
- rename:
short: r
long: rename
help: Rename file(s)
requires:
- DB
- generate:
short: g
long: generate
help: Generate folders for file(s)
conflicts_with:
- tvdb
- tmdb
- tvdb:
short: t
long: tvdb
help: Pull from tvdb
- tmdb:
short: m
long: tmdb
help: Pull from tmdb
groups:
- CMD:
required: true
args:
- scrape
- rename
- generate
- DB:
args:
- tvdb
- tmdb

我也试过在 conflicts_with: 下标记 DB,但无论如何它的行为都是一样的。

最佳答案

根据 Francois 的建议,我转而使用子命令。我必须写出我的 -t-m 标志以及它们的 DB 组两次,每个使用它们的子命令一次。我试图避免这种情况,以保持我的 YAML 文件干净且重复性较低,但功能更为重要。

工作 YAML 文件:

name: mfm
version: "0.1.0"
author: Jonathan Marple <elpramnoj@gmail.com>
about: Media file manager written in rust.
args:
- INPUT:
help: Sets the input file(s) to use
required: true
min_values: 1
subcommands:
- scrape:
about: Scrape information on show/movie
args:
- tvdb:
short: t
long: tvdb
help: Pull from tvdb
- tmdb:
short: m
long: tmdb
help: Pull from tmdb
groups:
- DB:
required: true
args:
- tvdb
- tmdb
- rename:
about: Rename file(s)
args:
- tvdb:
short: t
long: tvdb
help: Pull from tvdb
- tmdb:
short: m
long: tmdb
help: Pull from tmdb
groups:
- DB:
required: true
args:
- tvdb
- tmdb
- generate:
about: Generate folders for file(s)

关于rust - 包含具有不同要求和冲突的参数的 Clap arg 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51143220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com