# Nushell plugins for Provisioning

A [Nushell](https://nushell.sh/) plugins collection for [Provisioning project](https://rlung.librecloud.online/jesus/provisioning)

>[!WARNING]
> This repo contains sub-repos, use git clone --recurse-submodules

```bash 
git clone --recurse-submodules [URL-to-clone-nushell-plugin]
```

> [!CAUTION]
> **nu_plugin_*** have dependencies to nushell source via local path in Cargo.toml
> Nushell and plugins require to be **sync** with same version 

## FILES (content layout)

<pre>
.
├── collect-install.sh      Script to collect all nu_plugin_* and install in /usr/local/bin
├── distribution
│   ├── collect.sh          Script to build and collect nu_plugin_* 
│   ├── LICENSE
│   └── README.txt
├── generate                Template to generate plugins. Used with make_plugin.sh
│   └── nu_plugin_template
├── LICENSE
├── make_plugin.sh          To generate Nushell plugins. Used with generate path
├── nushell                 Nushell repo to be used as path for all nu_plugin_*
├── nu_plugin_clipboard
├── nu_plugin_desktop_notifications
├── nu_plugin_hashes
├── nu_plugin_highlight
├── nu_plugin_image
├── nu_plugin_port_extension
├── nu_plugin_qr_maker
├── nu_plugin_kcl           Repo for nu_plugin_kcl (repo sub-module)
├── nu_plugin_tera          Repo for nu_plugin_tera (repo sub-module)
├── api_nu_plugin_kcl       A try to use API KCL, nu_plugin_kcl is recommended option
└── README.md
</pre>

## Build and Install

- Run [build-all.sh](build-all.sh)
```bash 
./build-all.sh
```
- Collect all target/release with [collect-install.sh](collect-install.sh), this will:
   - Run [distribution/collect.sh](distribution/collect.sh)  to copy into [distribution](distribution) directory
   - install [distribution](distribution) directory **nu_plugin_** into **/usr/local/bin**
```bash 
./collect-install.sh
```
## Nushell install

Plugins have to be added from [Nushell](https://nushell.sh/) 

```nushell
plugin add /usr/local/bin/nu_plugin_clipboard
plugin add /usr/local/bin/nu_plugin_desktop_notifications
plugin add /usr/local/bin/nu_plugin_hashes
plugin add /usr/local/bin/nu_plugin_highlight
plugin add /usr/local/bin/nu_plugin_image
plugin add /usr/local/bin/nu_plugin_kcl
plugin add /usr/local/bin/nu_plugin_port_extension
plugin add /usr/local/bin/nu_plugin_qr_maker
plugin add /usr/local/bin/nu_plugin_tera
```

### TODO

- [ ] Use settings for **platforms-architectures targets**
- [ ] Use param values for **install path**
