mirror of
https://github.com/denisidoro/navi.git
synced 2026-01-23 02:14:19 +00:00
Allow custom dirs when running make (#214)
This commit is contained in:
parent
4a1bbd39ab
commit
1cbb167b57
4 changed files with 39 additions and 21 deletions
3
Makefile
3
Makefile
|
|
@ -1,6 +1,3 @@
|
|||
install:
|
||||
scripts/install
|
||||
|
||||
install:
|
||||
scripts/make install
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ Alternatively, you can download the binaries manually [here](https://github.com/
|
|||
```bash
|
||||
git clone https://github.com/denisidoro/navi ~/.navi
|
||||
cd ~/.navi
|
||||
make install
|
||||
make install # or make SOURCE_DIR=/opt/navi BIN_DIR=/usr/local/bin install
|
||||
```
|
||||
|
||||
Usage
|
||||
|
|
|
|||
|
|
@ -1,19 +1,32 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
FIRST_INSTALL_DIR="/opt/navi"
|
||||
SECOND_INSTALL_DIR="${HOME}/.navi"
|
||||
FIRST_SOURCE_DIR="/opt/navi"
|
||||
SECOND_SOURCE_DIR="${HOME}/.navi"
|
||||
|
||||
get_install_dir() {
|
||||
local -r useless_folder="${FIRST_INSTALL_DIR}/useless"
|
||||
FIRST_BIN_DIR="/usr/bin"
|
||||
SECOND_BIN_DIR="/usr/local/bin"
|
||||
|
||||
get_dir() {
|
||||
local -r first_dir="$1"
|
||||
local -r second_dir="$1"
|
||||
local -r useless_folder="${first_dir}/useless"
|
||||
local folder
|
||||
mkdir -p "$useless_folder" 2>/dev/null \
|
||||
&& folder="$FIRST_INSTALL_DIR" \
|
||||
|| folder="$SECOND_INSTALL_DIR"
|
||||
&& folder="$first_dir" \
|
||||
|| folder="$second_dir"
|
||||
rm -r "$useless_folder" 2>/dev/null
|
||||
echo "$folder"
|
||||
}
|
||||
|
||||
get_source_dir() {
|
||||
get_dir "$FIRST_SOURCE_DIR" "$SECOND_SOURCE_DIR"
|
||||
}
|
||||
|
||||
get_bin_dir() {
|
||||
get_dir "$FIRST_BIN_DIR" "$SECOND_BIN_DIR"
|
||||
}
|
||||
|
||||
echoerr() {
|
||||
echo "$@" 1>&2
|
||||
}
|
||||
|
|
@ -59,15 +72,14 @@ asset_url() {
|
|||
|
||||
download_asset() {
|
||||
local -r url="$(asset_url "$@")"
|
||||
mkdir -p "$DEFAULT_INSTALL_DIR"
|
||||
cd "$DEFAULT_INSTALL_DIR"
|
||||
mkdir -p "$SOURCE_DIR"
|
||||
cd "$SOURCE_DIR"
|
||||
rm -f navi.tar.gz
|
||||
echoerr "Downloading $url"
|
||||
echoerr "Downloading ${url}..."
|
||||
curl -L "$url" -o navi.tar.gz
|
||||
tar xvzf navi.tar.gz
|
||||
rm -f navi.tar.gz
|
||||
ln -s "${DEFAULT_INSTALL_DIR}/navi" "/usr/bin/navi" \
|
||||
|| ln -s "${DEFAULT_INSTALL_DIR}/navi" "/usr/local/bin/navi"
|
||||
ln -s "${SOURCE_DIR}/navi" "${BIN_DIR}/navi"
|
||||
}
|
||||
|
||||
sha_for_asset_on_github() {
|
||||
|
|
@ -102,17 +114,23 @@ get_shell() {
|
|||
}
|
||||
|
||||
install_navi() {
|
||||
export DEFAULT_INSTALL_DIR="$(get_install_dir)"
|
||||
export SOURCE_DIR="${SOURCE_DIR:-"$(get_source_dir)"}"
|
||||
export BIN_DIR="${BIN_DIR:-"$(get_bin_dir)"}"
|
||||
echoerr "Sources will be downloaded to ${SOURCE_DIR}..."
|
||||
|
||||
local -r target="$(get_target)"
|
||||
|
||||
if [[ -n "$target" ]]; then
|
||||
local -r version="$(latest_version_released)"
|
||||
download_asset "$version" "$target"
|
||||
|
||||
elif command_exists cargo; then
|
||||
no_binary_warning
|
||||
echoerr "Building sources..."
|
||||
git clone https://github.com/denisidoro/navi "$DEFAULT_INSTALL_DIR"
|
||||
cd "$DEFAULT_INSTALL_DIR"
|
||||
git clone https://github.com/denisidoro/navi "$SOURCE_DIR"
|
||||
cd "$SOURCE_DIR"
|
||||
make install
|
||||
|
||||
else
|
||||
no_binary_warning
|
||||
echoerr "You don't have the necessary tools to build it"
|
||||
|
|
|
|||
|
|
@ -8,14 +8,17 @@ export NAVI_HOME="$(cd "$(dirname "$0")/.." && pwd)"
|
|||
source "${NAVI_HOME}/scripts/install"
|
||||
|
||||
install() {
|
||||
export SOURCE_DIR="${SOURCE_DIR:-"$(get_source_dir)"}"
|
||||
export BIN_DIR="${BIN_DIR:-"$(get_bin_dir)"}"
|
||||
echoerr "The final binary will be available at ${BIN_DIR}/navi..."
|
||||
"${NAVI_HOME}/scripts/action" release
|
||||
ln -s "${NAVI_HOME}/target/tar/navi" /usr/bin/navi \
|
||||
|| ln -s "${NAVI_HOME}/target/tar/navi" /usr/local/bin/navi
|
||||
ln -s "${NAVI_HOME}/target/tar/navi" "${BIN_DIR}/navi"
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
export SOURCE_DIR="${SOURCE_DIR:-"$(get_source_dir)"}"
|
||||
rm -rf "${NAVI_HOME}/target"
|
||||
rm /usr/local/bin/navi || rm /usr/bin/navi
|
||||
rm "$SOURCE_DIR"
|
||||
}
|
||||
|
||||
cmd="$1"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue