GithubHelp home page GithubHelp logo

texastoland / setup-nu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hustcer/setup-nu

0.0 0.0 0.0 1.05 MB

This GitHub Action will setup a Nushell environment for you.

License: MIT License

Shell 2.47% TypeScript 51.74% Just 14.54% Nushell 31.25%

setup-nu's Introduction

setup-nu

中文说明

Latest Main Check

This GitHub Action will setup a Nushell environment for you.

Usage

Which Version Should I Choose?

Examples

Basic

In most cases you just need to specify the version of Nushell to be used in your workflow. For example the following installs the v0.80 version of Nushell. Then you can set the command you want to run in the following steps, and don't forget to set shell: nu {0} to make the commands be executed by nu:

- 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'
- 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

Used as Default Shell

Of cause, You can also set the default shell to nu by setting the defaults.run.shell config:

name: basic

on: push
defaults:
  run:
    shell: nu {0}

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

Use Nu Modules

To use modules in Nu, please refer to the following examples:

  1. Use Nu modules in nu -c
- name: Setup nu
  uses: hustcer/[email protected]
  with:
    version: 0.91.0
  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.

  1. Use modules from absolute path
- name: Setup nu
  uses: hustcer/[email protected]
  with:
    version: 0.91.0
  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.

  1. Copy your modules to one of the default $env.NU_LIB_DIRS
- name: Setup nu@latest
  uses: hustcer/[email protected]
  with:
    version: 0.91.0
  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:

- 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:

  1. run-test.yaml
  2. run-matrix.yaml
  3. Advanced example: How Nushell Make a Release? Workflow, Script

If you want to use the latest version of nushell you can specify this by set check-latest to true(it's the same as version: '*', but more readable). For example the following installs the latest version:

- uses: hustcer/[email protected]
  with:
    check-latest: true
- 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.

Inputs

Name Required Description Type Default
version no A valid NPM-style semver specification, such as 0.86.0, etc. and nightly. 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
features no Available choice: default or full, and the full features will include the commands from extra and dataframe. This option support Nu since v0.86 string default
github-token no Your GitHub token or PAT token string ${{ github.token }}

The semver specification is passed directly to NPM's semver package. This GitHub Action will install the latest matching release.

License

Licensed under:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.