Skip to content

Commit

Permalink
docs: Update README.md for nightly usage
Browse files Browse the repository at this point in the history
  • Loading branch information
hustcer committed Oct 27, 2023
1 parent bcbafc1 commit 888a166
Show file tree
Hide file tree
Showing 3 changed files with 175 additions and 125 deletions.
147 changes: 86 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ This GitHub Action will setup a [Nushell](https://github.com/nushell/nushell) en

### Which Version Should I Choose?

1. `[email protected]` supports `Nu` **v0.60.0 ~ latest**;
2. `[email protected]` supports `Nu` **v0.60.0 ~ 0.70.0**;
3. `setup-nu@v1` supports `Nu` **v0.60.0 ~ 0.63.0**;
- `[email protected]` supports `Nu` **v0.60.0 ~ latest** and latest `nightly` version;
- `[email protected]` supports `Nu` **v0.60.0 ~ latest**;
- `[email protected]` supports `Nu` **v0.60.0 ~ 0.70.0**;
- `setup-nu@v1` supports `Nu` **v0.60.0 ~ 0.63.0**;

### Examples

Expand All @@ -26,7 +27,7 @@ to make the commands be executed by `nu`:
```yaml
- uses: hustcer/[email protected]
with:
version: '0.80' # Don't use 0.80 here, as it was a float number and will be convert to 0.8, you can use v0.80/0.80.0 or '0.80'
version: "0.80" # Don't use 0.80 here, as it was a float number and will be convert to 0.8, you can use v0.80/0.80.0 or '0.80'
- run: print $'Nu version info:(char nl)'; version
shell: nu {0}
- name: Default shell will be `nu`
Expand Down Expand Up @@ -55,17 +56,17 @@ jobs:
basic-usage:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- uses: hustcer/setup-nu@main
with:
version: '*'
- run: version; print $"(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
- uses: actions/[email protected]
- uses: hustcer/setup-nu@main
with:
version: "*"
- run: version; print $"(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
```

#### Use Nu Modules
Expand All @@ -75,65 +76,89 @@ To use modules in `Nu`, please refer to the following examples:
1. Use Nu modules in `nu -c`

```yaml
- name: Setup nu
uses: hustcer/[email protected]
with:
version: 0.86
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')"
- name: Setup nu
uses: hustcer/[email protected]
with:
version: 0.86
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')"
```

You have to wrap the `nu` code in `nu -c ""`, and the nu version should be equal to or above `0.69`.

2. Use modules from absolute path

```yaml
- name: Setup nu
uses: hustcer/[email protected]
with:
version: 0.86
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Use Your Nu Modules by Absolute Path
shell: nu {0}
run: |
use ${{ github.workspace }}/nu/module.nu *
print 'Use module from: ${{ github.workspace }}/nu/module.nu'
print (get-env 'ABC-XYZ' 'DEFAULT-ABC-XYZ-ABSOLUTE-PATH')
- name: Setup nu
uses: hustcer/[email protected]
with:
version: 0.86
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Use Your Nu Modules by Absolute Path
shell: nu {0}
run: |
use ${{ github.workspace }}/nu/module.nu *
print 'Use module from: ${{ github.workspace }}/nu/module.nu'
print (get-env 'ABC-XYZ' 'DEFAULT-ABC-XYZ-ABSOLUTE-PATH')
```

Again, the nu version should be equal to or above `0.69`.

3. Copy your modules to one of the default `$env.NU_LIB_DIRS`

```yaml
- name: Setup nu@latest
uses: hustcer/[email protected]
with:
version: 0.86
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare Nu Modules
shell: nu {0}
run: |
let LIB_DIR = [$nu.default-config-dir 'scripts'] | path join
if not ($LIB_DIR | path exists) { mkdir $LIB_DIR }
cp -r nu/* $LIB_DIR
- name: Use Your Nu Modules
shell: nu {0}
run: |
use module.nu *
print (get-env 'ABC-XYZ' 'DEFAULT-ABC-XYZ')
- name: Setup nu@latest
uses: hustcer/[email protected]
with:
version: 0.86
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare Nu Modules
shell: nu {0}
run: |
let LIB_DIR = [$nu.default-config-dir 'scripts'] | path join
if not ($LIB_DIR | path exists) { mkdir $LIB_DIR }
cp -r nu/* $LIB_DIR
- name: Use Your Nu Modules
shell: nu {0}
run: |
use module.nu *
print (get-env 'ABC-XYZ' 'DEFAULT-ABC-XYZ')
```

To make it work please make sure that the nu version should be equal to or above `0.85`.

They are not perfect yet, but they do work. BTW: Please tell me if you found a better way and PRs are always welcomed.

#### Use Nu Nightly Version

`Nushell` is currently in active development, if you want to use the latest features it's also available by set the version to `nightly`, just as below:

```yaml
- uses: hustcer/[email protected]
with:
version: nightly # Will download and setup the latest nightly version of Nushell
- 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
```
> **Warning**
> Use `Nushell` nightly version with caution: The nu binary may change every other day and this may break your workflow.
> Only the latest nightly version will be downloaded and setup, and the version must be `nightly`.

#### Others

Or, check the following examples:
Expand All @@ -153,7 +178,7 @@ the latest version:
- run: print $'Nu version info:(char nl)'; version
```
**Note**: **Before Nushell reaches 1.0, each version may change a lot, it is recommend that you use a specified version instead**.
**Note**: **Before Nushell reaches 1.0, each version may change a lot, it is recommend that you use a specified version instead**.
In rare circumstances you might get rate limiting errors, this is caused by the
workflow has to make requests to GitHub API in order to list available releases.
Expand All @@ -162,18 +187,18 @@ If this happens you can set the `GITHUB_TOKEN` environment variable.
```yaml
- uses: hustcer/[email protected]
with:
version: '0.80'
version: "0.80"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

### Inputs

| Name | Required | Description | Type | Default |
| ---------------- | -------- | ----------------------------------------------------------- | ------ | ------- |
| `version` | no | A valid NPM-style semver specification. | string | * |
| `check-latest` | no | Set to `true` if you want to use the latest version | bool | false |
| `enable-plugins` | no | Set to `true` if you want to register the bundled plugins, Nu v0.69 and above is required | bool | false |
| Name | Required | Description | Type | Default |
| ---------------- | -------- | ----------------------------------------------------------------------------------------- | ------ | ------- |
| `version` | no | A valid NPM-style semver specification, such as `0.86`, `nightly`, etc. | string | \* |
| `check-latest` | no | Set to `true` if you want to use the latest version | bool | false |
| `enable-plugins` | no | Set to `true` if you want to register the bundled plugins, Nu v0.69 and above is required | bool | false |

The semver specification is passed directly to NPM's [semver package](https://www.npmjs.com/package/semver).
This GitHub Action will install the latest matching release.
Expand Down
Loading

0 comments on commit 888a166

Please sign in to comment.