# Description
i've almost always wanted to clean up the root of the repo, so here is
my take at it, with some important advice given by @fdncred 😌
- `README.release.txt` is now gone and directly inline in the
`release-pkg` script used in the `release` *workflow*
- `build.rs` has been moved to `scripts/` and its path has been changed
in
[`Cargo.toml`](https://github.com/amtoine/nushell/blob/refactor/clean-root/Cargo.toml#L3)
according to the [*Build Scripts*
section](https://doc.rust-lang.org/cargo/reference/build-scripts.html#build-scripts)
of *The Cargo Book*
- i've merged `images/` into `assets/` and fix the only mention to the
GIF in the README
- i've moved the `docs/README.md` inside the main `README.md` as a new
[*Configuration*
section](https://github.com/amtoine/nushell/tree/refactor/clean-root#configuration)
- the very deprecated `pkg_mgrs/` has been removed
- all the `.nu`, `.sh`, `.ps1` and `.cmd` scripts have been moved to
`scripts/`
### things i've left as-is
- all the other `.md` documents
- the configuration files
- all the Rust and core stuff
- `docker/`
- `toolkit.nu`
- the `wix/` diretory which appears to be important for `winget`
# User-Facing Changes
scripts that used to rely on the paths to some of the scripts should now
call the scripts inside `scripts/` => i think this for the greater good,
it was not pretty nor scalable to have a bunch of scripts in the root of
our main `nushell` 😱
*i even think we might want to move these scripts outside the main
`nushell` repo*
maybe to `nu_scripts` or some other tool 👍
# Tests + Formatting
- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- ⚫ `toolkit test`
- ⚫ `toolkit test stdlib`
# After Submitting
```
$nothing
```
Ran [`shellcheck`](https://github.com/koalaman/shellcheck) on our 3
shell scripts and fixed the warnings. This caught that the scripts were
[broken because of their
shebang](https://www.shellcheck.net/wiki/SC3030):
```
〉./uninstall-all.sh
----------------------------------------------
Uninstall nu and all plugins from cargo/bin...
----------------------------------------------
./uninstall-all.sh: 8: Syntax error: "(" unexpected
```
```
〉shellcheck *.sh
In build-all-maclin.sh line 8:
NU_PLUGINS=(
^-- SC3030 (warning): In POSIX sh, arrays are undefined.
In build-all-maclin.sh line 18:
for plugin in "${NU_PLUGINS[@]}"
^--------------^ SC3054 (warning): In POSIX sh, array references are undefined.
In build-all-maclin.sh line 20:
echo '' && cd crates/$plugin
^---------------^ SC2164 (warning): Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
^-----^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo '' && cd crates/"$plugin" || exit
In install-all.sh line 14:
NU_PLUGINS=(
^-- SC3030 (warning): In POSIX sh, arrays are undefined.
In install-all.sh line 22:
for plugin in "${NU_PLUGINS[@]}"
^--------------^ SC3054 (warning): In POSIX sh, array references are undefined.
In install-all.sh line 28:
cd crates/$plugin && cargo install --path . && cd ../../
^-----^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
cd crates/"$plugin" && cargo install --path . && cd ../../
In uninstall-all.sh line 8:
NU_PLUGINS=(
^-- SC3030 (warning): In POSIX sh, arrays are undefined.
In uninstall-all.sh line 16:
for plugin in "${NU_PLUGINS[@]}"
^--------------^ SC3054 (warning): In POSIX sh, array references are undefined.
In uninstall-all.sh line 18:
cargo uninstall $plugin
^-----^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
cargo uninstall "$plugin"
For more information:
https://www.shellcheck.net/wiki/SC2164 -- Use 'cd ... || exit' or 'cd ... |...
https://www.shellcheck.net/wiki/SC3030 -- In POSIX sh, arrays are undefined.
https://www.shellcheck.net/wiki/SC3054 -- In POSIX sh, array references are...
```
To fix SC2164 I used `set -euo pipefail` as per this Julia Evans suggestion:
![image](https://user-images.githubusercontent.com/26268125/204181003-22283dcb-924d-4c0d-91f6-1ea635dbf0fc.png)
Following up on #7180 with some feature cleanup:
- Move the `database` feature from `plugin` to `default`
- Rename the `database` feature to `sqlite`
- Remove `--features=extra` from a lot of scripts etc.
- No need to specify this, the `extra` feature is now the same as the
default feature set
- Remove the now-redundant 2nd Ubuntu test run