问题标签 [optparse-applicative]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
97 浏览

zsh - optparse-applicative zsh 完成脚本期间的 compadd 失败

所以我不确定这是否与 optparse-applicative 的脚本有问题,或者我是否使用错误。

在 optparse-applicative自述文件中,它指出程序可以通过自动完成脚本获得,并带有 zsh 选项。对于我的程序setup

输出:

我在我的 zshrc 中运行以下内容(我使用了 oh-my-zsh,但我删除了它,这仍然发生在一个最低限度的配置中,只添加了一个小的 PATH 来获取setup脚本)。

我多次收到以下错误:

/dev/fd/11:compadd:24: can only be called from completion function

我已经运行compinit了,完成脚本对我来说似乎是正确的,我环顾四周,但我似乎无法弄清楚为什么会发生这个错误......

0 投票
1 回答
118 浏览

haskell - Parsing CLI options for a product type

I want to parse command line options corresponding to a product type resembling below.

For simplicity I did not add "long" and "help" here with flag'.

The above is what I have right now. It may also be that "d" itself is another sum type. In this the problem is each of the a, b, c values I need to specify on the command line.

How do I specify such that either of a, b or c may not be specified and the CLI parser still works. Currently if I do not pass even one of a, b or c the parser fails with an error message. I understand that my builder construction is incorrect, but, I am not able to grasp how to fix it. Hope I have described the problem correctly, if not please let me know.

0 投票
1 回答
100 浏览

haskell - 如何部分解析产品类型

是否可以部分解析产品类型?Config 是具有成员 a、b 和 c 的产品类型,并假设它来自库,所以我无法重新定义它。我只想解析a和b而不关心c。但是,由于“解析器配置”只能具有如下结构

由于是一种产品类型,如果我不给出“PC”,它就会出错。如何正确处理这种情况?

0 投票
1 回答
123 浏览

haskell - optparse-applicative 非空字符串参数

如何实现非空字符串参数?

如何防止它成功解析空字符串 - ""

以前有 Parsec/Attoparsec 的经验,我假设我可以编写自己的解析器,或者可能使用一些应用程序来检查值以及fail它是否是空字符串(我认为这是不可能的,因为我需要一个 Monad)?

0 投票
1 回答
216 浏览

haskell - 使用 OptParse-Applicative 将用户选项解析为自定义数据类型

我正在尝试构建一个 CLI 食品日记应用程序。

这是我希望解析用户输入的数据类型。

而且因为有很多重叠,所以我总共有 8 个Parser a类型的函数。

像这样的功能

如果最终有这样的功能的想法

MT可以处理error+的单子转换器在哪里IO?还不确定。

问题是:如何设置parseArgs功能

parser功能

这样我就可以解析用户输入JournalCommand,然后将数据返回给相关函数。

我知道我可以fmap这样的数据类型

作为

但是我不确定如何使用我的原始数据结构来做到这一点。

我想我需要一个这样的列表[Mod CommandFields JournalCommand],我可以subparser通过连接列表来传递给函数Mod。我不完全确定。

0 投票
2 回答
197 浏览

haskell - optparse-applicative bash 自动补全是如何工作的?

我正在构建一个brainfuck 编译器。可执行文件接受两个命令$ brainfuck compile ...$ brainfuck run. 我希望可执行文件在按选项卡时自动完成。例如,写入$ brainfuck com然后按 tab 应该生成$ brainfuck compile.

optparse 的 github page here上有一个部分,但我不是很明白。

该功能看起来与我已经在使用的功能completeWith :: Options.Applicative.Builder.Internal.HasCompleter f => [String] -> Mod f a非常相似。command :: String -> ParserInfo a -> Mod CommandFields a所以我想我可以使用它并将它们与它们结合起来,<>但事实证明这CommandFields不是HasCompleter.

你应该如何让自动完成工作?

0 投票
1 回答
199 浏览

haskell - 使用 optparse 应用程序的子命令帮助

我对 optparse-applicative 有两个问题:(我将这些问题放在一起,因为很可能存在一个潜在的误解)。

  1. 据说用法是:(COMMAND | COMMAND)

    犯罪 cli - 处理犯罪模板并部署命令

    用法:(COMMAND | COMMAND) CRIME 的 CLI

我希望它实际列出程序的名称(非交互式)并列出命令,但我不知道如何为特定的子命令添加元数据。

  1. 当我尝试获取特定子命令的帮助时,我收到有关缺少必需参数的消息。(

stack exec 命令行-exe -- DeployStack --help

以下是我构建帮助的方式:

** Main.hs **

0 投票
2 回答
104 浏览

haskell - optparse-applicative 与自定义 monad

我正在尝试将我自己的 monad(而不是IO)与customExecParser https://hackage.haskell.org/package/optparse-applicative-0.15.1.0/docs/Options-Applicative-Extra.html#v:customExecParser一起使用。

所以我最终得到了(重要的功能是fff):

但是,上述方法的唯一缺点是fmap需要所需的次数(匹配xyzzor中的函数参数xyzz)。我确实记得以前遇到过这类问题。有什么方法可以避免这种情况(并且只需要调用一个函数)?

理想情况下,我希望为此有一个 monad 转换器,但不幸的是,这似乎只能实现IO

0 投票
1 回答
69 浏览

haskell - optparse-applicative 解析器由于部分输入被消耗而失败

使用上面的代码和以下参数::set args --aaa test --bbb test2结果:


我怎样才能成功解析第二种情况(关于example2)?

该问题似乎与strOption (long "aaa")两个解析器中都存在的解析器代码有关。是否有替代方案(<|>)可以实现所需的行为?

0 投票
1 回答
55 浏览

haskell - 使用 optparse-applicative 制作“可选”解析器并为递归数据类型构造值

我有一个数据类型叫做EntrySearchableInfo这样写

基本上代表在“搜索”上下文中有意义的事物。

我想用这种类型写一个函数

这(我认为)将是Parser <Type>我已经编写的几个原始函数的组合

所以我有两个问题:

  1. 我如何结合这些解析器来制作entrySearchableInfoParser函数。

  2. EntrySearchableInfoEntrytype 是像这样定义的更大类型的一部分

我已经有一个类型的函数

哪个构造Entry使用Add.

但我不确定如何Entry使用ReplacewithentrySearchableInfoParser和进行类型entryAdd