Skip to content

Latest commit

 

History

History
128 lines (96 loc) · 4.85 KB

README.zh-CN.md

File metadata and controls

128 lines (96 loc) · 4.85 KB

setup-nu

main分支测试

此 GitHub Action 将为您配置 Nushell 运行环境。

使用说明

版本选择

  1. setup-nu@v3 支持 Nu v0.60.0 ~ latest;
  2. setup-nu@v2 支持 Nu v0.60.0 ~ 0.70.0;
  3. setup-nu@v1 支持 Nu v0.60.0 ~ 0.63.0;

例子

基础使用

在大多数情况下,你只需要在工作流程中通过 version 字段指定要使用的 Nushell 的版本即可。比如下面的例子将会安装 Nushellv0.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

设为默认 Shell

当然,更简洁的办法是通过设置 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 就更好啦!

其它

或者你也可以查看下面几个例子:

  1. run-test.yaml
  2. run-matrix.yaml
  3. 进阶使用: 看看 Nushell 是如何发版的吧 工作流, 脚本

如果你想使用最新版本的 Nushell,你可以通过设置 check-latesttrue 来做到(它与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: