mirror of
https://github.com/denisidoro/navi.git
synced 2026-01-23 10:16:08 +00:00
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:  If the user selects the first option, the user is prompted to download `.cheat`s from https://github.com/denisidoro/cheats:   The config folder is populated:  When run again, cheats are available:  ### 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?
48 lines
956 B
Bash
Executable file
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
|