Allow custom dirs when running make (#214)

This commit is contained in:
Denis Isidoro 2020-03-09 18:41:06 -03:00 committed by GitHub
parent 4a1bbd39ab
commit 1cbb167b57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 21 deletions

View file

@ -1,6 +1,3 @@
install:
scripts/install
install:
scripts/make install

View file

@ -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

View file

@ -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"

View file

@ -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"