Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

No way to make the value of an option optional

未关闭
#69 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
55/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
lua
领域
cli

调研方向

从 optopt.lua 中显示的选项声明和解析调用开始,尤其是 cli:option("-f, --foo=[VALUE]", ...) 和 cli:parse(_G.arg)。跟踪未提供值的选项是如何处理的,然后验证省略 flag、单独使用 -f 以及 -f buz 是否会产生 issue 中描述的三种结果。

由索引模型根据 Issue 内容生成。

描述

In the 2.x series of releases it was possible to setup an option that had no value if not set, a default value if just the flag was added but no value given, and additionally a custom value if a value was passed. In 3.x this does not seem to be possible. Flags cannot take values and options always require a value. The default for options is only parsed in the event the option flag is not even passed.

As an example, I would like the value of a --foo=[VALUE] option to be optional with a default value if set, but allow the user to set (or not set) foo. If this is optopt.lua:

#!/usr/bin/env lua

local cli = require("cliargs")

cli:set_name("optopt")
cli:set_description("optional arg test")
cli:option("-f, --foo=[VALUE]", "foo val default to fiz", "fiz")
cli:flag("-h, --help", "display this help, then exit")

local opts, err = cli:parse(_G.arg)

if not opts and err then
  print(err)
  os.exit(1)
end

print("foo is", opts.foo)

What I get vs. what I expect:

# as expected
$ ./optopt.lua -f buz
foo is  buz

# unexpected, no option should mean no value
$ ./optopt.lua
foo is  fiz

# unexpected, setting the option should enable the default value if no value passed
$ ./optopt.lua -f
option -f requires a value to be set
主要语言
Lua
星标
129
派生
26
平均合并
1 小时 41 分钟
30 天内合并 PR
1

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

lunarmodules/lua_cliargs 的其他 Issue

查看 lunarmodules/lua_cliargs 的全部 Issue

相似的 Issue

更多 Lua Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。