navi/scripts/action
Denis Isidoro de16846aba
Initial cheat repo support (#258)
This PR makes navi stop bundling `.cheat` files and makes it able to download from repos on GitHub, using a standardized config directory.

- it fixes #233 and #237
- it makes #52, #256 and #257 much easier to implement
- it makes #40 harder to implement
- it's an alternate solution to #140 
- it's influenced by #238 and #254.

This PR ended up being much bigger than I would like so if you could review only this description it would be already very nice!

When navi is started for the first time, a welcome cheatsheet is shown:
![Screenshot at 2020-03-15 10-20-04](https://user-images.githubusercontent.com/3226564/76702240-19fffd80-66a7-11ea-884f-97c565bc1ead.png)

If the user selects the first option, the user is prompted to download `.cheat`s from https://github.com/denisidoro/cheats: 
![Screenshot at 2020-03-15 10-20-35](https://user-images.githubusercontent.com/3226564/76702239-19fffd80-66a7-11ea-8f69-324f669b1e01.png)
![Screenshot at 2020-03-15 10-22-59](https://user-images.githubusercontent.com/3226564/76702236-18363a00-66a7-11ea-8ff4-53b497f85888.png)

The config folder is populated:
![Screenshot at 2020-03-15 10-21-11](https://user-images.githubusercontent.com/3226564/76702238-19676700-66a7-11ea-8367-3e7b5733f2b4.png)

When run again, cheats are available:
![Screenshot at 2020-03-15 10-21-34](https://user-images.githubusercontent.com/3226564/76702237-19676700-66a7-11ea-9c2a-d8829340f3e9.png)

### Breaking changes

In order to make navi stop bundling shell widgets as well, a breaking change has been introduced: `source $(navi widget bash)` won't work anymore. It should be `source <(navi widget bash)` now. Any ideas on how to make this transition more graceful?
2020-03-15 13:46:58 -03:00

48 lines
956 B
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
##? action release
export NAVI_HOME="$(cd "$(dirname "$0")/.." && pwd)"
source "${NAVI_HOME}/scripts/install"
release() {
TAR_DIR="${NAVI_HOME}/target/tar"
target="${1:-}"
if [[ $target == *"osx"* ]]; then
echoerr "OSX cross-compile is impossible. Fallbacking to cargo..."
target=""
fi
cd "$NAVI_HOME"
rm -rf "${NAVI_HOME}/target" 2> /dev/null || true
if [ -n "$target" ]; then
cargo install cross 2> /dev/null || true
cross build --release --locked --target "$target"
bin_folder="${target}/release"
else
cargo build --release --locked
bin_folder="release"
fi
bin_path="${NAVI_HOME}/target/${bin_folder}/navi"
chmod +x "$bin_path"
mkdir -p "$TAR_DIR" 2> /dev/null || true
cp "$bin_path" "$TAR_DIR"
cd "${NAVI_HOME}/target/tar"
tar -czf navi.tar.gz *
}
cmd="$1"
shift
case "$cmd" in
"release") release "$@" ;;
esac