此 GitHub Action 将为您配置 Nushell 运行环境。
setup-nu@v3
支持Nu
v0.60.0 ~ latest;setup-nu@v2
支持Nu
v0.60.0 ~ 0.70.0;setup-nu@v1
支持Nu
v0.60.0 ~ 0.63.0;
在大多数情况下,你只需要在工作流程中通过 version
字段指定要使用的 Nushell 的版本即可。比如下面的例子将会安装 Nushell 的v0.80
版本。然后你可以在后续步骤中配置你想运行的命令,最后别忘了设置shell: nu {0}
以使命令被nu
执行:
- uses: hustcer/setup-nu@v3
with:
version: '0.80' # 不要使用 0.80, 它会被认为是一个浮点数并转换为 0.8, 你可以使用 v0.80/0.80.0 或者 '0.80'(加了引号变成字符串)
- run: print $'Nu version info:(char nl)'; version
shell: nu {0}
- name: Default shell will be `nu`
shell: nu {0}
run: |
print $'Nu path:(which nu)(char nl)'
def greeting [name: string] {
print $'Hello ($name)'
}
greeting hustcer
当然,更简洁的办法是通过设置 defaults.run.shell
来让您的脚本或者命令默认由 nu
来执行,如下:
name: basic
on: push
defaults:
run:
shell: nu {0}
jobs:
basic-usage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- uses: hustcer/setup-nu@main
with:
version: '*'
- run: version; $"(char nl)Dir contents:(char nl)"; ls ((which nu).path.0 | path dirname)
- run: |
print $'Current env:(char nl)'
print $env
- name: You can run bash commands, too
run: pwd && ls -la
shell: bash
若想在 Nu
中使用模块, 可以参考如下示例:
- name: Setup nu
uses: hustcer/setup-nu@v3.5
with:
version: 0.83
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Use Your Nu Modules
shell: nu {0}
run: |
nu -c "use nu/module.nu *; print (get-env 'ABC-XYZ' 'DEFAULT-ABC-XYZ')"
你需要将 nu
代码包裹在 nu -c ""
中并执行, 而且要求你使用的 Nu 版本在 0.69
及以上。这种方式并不完美, 不过也是我目前找到的唯一可行的方式,如果你有更好的办法(我相信一定有的)请告诉我,或者如果能提个 PR 就更好啦!
或者你也可以查看下面几个例子:
- run-test.yaml
- run-matrix.yaml
- 进阶使用: 看看 Nushell 是如何发版的吧 工作流, 脚本
如果你想使用最新版本的 Nushell,你可以通过设置 check-latest
为 true
来做到(它与version: '*'
配置的效果相同,但更易读)。例如,以下将会安装最新版本的 Nushell:
- uses: hustcer/setup-nu@v3
with:
check-latest: true
- run: print $'Nu version info:(char nl)'; version
备注: 在 Nushell 1.0 发布之前,每个版本可能会有较大的变化,所以建议您使用指定的 Nushell 版本。
在极少数情况下,你可能会看到速率限制之类的错误,这是因为这个工作流程必须向 GitHub API 发出请求,以便查询可用的 Nushell 版本。如果发生这种情况,你可以通过设置 GITHUB_TOKEN
环境变量来避免该问题:
- uses: hustcer/setup-nu@v3
with:
version: '0.80'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
名称 | 必填 | 描述 | 类型 | 默认值 |
---|---|---|---|---|
version |
否 | 合法的 NPM 风格的 semver 版本 | string | * |
check-latest |
否 | 可以设置为 true 如果你想使用最新的 Nushell 版本 |
bool | false |
enable-plugins |
否 | 可以设置为 true 如果你需要注册二进制包内的插件, 需要 Nu 版本 >= v0.69 |
bool | false |
您在 version
字段指定的 semver 版本 会直接传递给 NPM 的 semver包。此 GitHub Action 将安装最新的匹配版本。
Licensed under:
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)