Add option for calling best match directly (#83)

Fix #62
This commit is contained in:
Denis Isidoro 2019-09-26 12:33:22 -03:00
parent 9dce96a871
commit beab843c1e
3 changed files with 42 additions and 15 deletions

View file

@ -1,13 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
export SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
# please refer to https://github.com/denisidoro/dotfiles/blob/master/scripts/code/beautify
cd "${SCRIPT_DIR}"
find . -iname '*.sh' | xargs -I% dot code beautify %
find scripts/* | xargs -I% dot code beautify %
find shell/* | xargs -I% dot code beautify %
dot code beautify "${SCRIPT_DIR}/test/run"
dot code beautify "${SCRIPT_DIR}/navi"
export SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
files_to_lint() {
find . -iname '*.sh'
find scripts/*
find shell/*
echo "${SCRIPT_DIR}/test/run"
echo "${SCRIPT_DIR}/navi"
}
for f in $(files_to_lint); do
dot code beautify "$f"
done

View file

@ -14,6 +14,8 @@ opts::eval() {
local preview=true
local path="${NAVI_PATH:-${NAVI_DIR:-${SCRIPT_DIR}/cheats}}"
local autoselect=true
local best=false
local query=""
case "${1:-}" in
--version|version) entry_point="version"; shift ;;
@ -22,6 +24,7 @@ opts::eval() {
search) entry_point="search"; wait_for="search"; shift ;;
preview) entry_point="preview"; wait_for="preview"; shift ;;
query|q) wait_for="query"; shift ;;
best|b) best=true; wait_for="best"; shift ;;
home) entry_point="home"; shift ;;
script) entry_point="script"; shift; SCRIPT_ARGS="$@" ;;
esac
@ -31,7 +34,7 @@ opts::eval() {
path) path="$arg"; wait_for="" ;;
preview) query="$(arg::deserialize "$arg")"; wait_for="" ;;
search) query="$arg"; wait_for=""; path="${path}:$(search::full_path "$query")"; ;;
query) query="$arg"; wait_for="" ;;
query|best) query="$arg"; wait_for="" ;;
esac
case $arg in
@ -39,11 +42,19 @@ opts::eval() {
--no-interpolation) interpolation=false ;;
--command-for) wait_for="command-for" ;;
--no-preview) preview=false ;;
--path) wait_for="path" ;;
--path|--dir) wait_for="path" ;;
--no-autoselect) autoselect=false ;;
esac
done
OPTIONS="$(dict::new entry_point "$entry_point" print "$print" interpolation "$interpolation" preview "$preview" autoselect "$autoselect" query "${query:-}")"
OPTIONS="$(dict::new \
entry_point "$entry_point" \
print "$print" \
interpolation "$interpolation" \
preview "$preview" \
autoselect "$autoselect" \
query "$query" \
best "$best")"
export NAVI_PATH="$path"
}

View file

@ -23,6 +23,7 @@ ui::select() {
local -r query="$(dict::get "$OPTIONS" query)"
local -r entry_point="$(dict::get "$OPTIONS" entry_point)"
local -r preview="$(dict::get "$OPTIONS" preview)"
local -r best="$(dict::get "$OPTIONS" best)"
local args=()
args+=("-i")
@ -31,17 +32,27 @@ ui::select() {
args+=("--preview"); args+=("$preview_cmd")
args+=("--preview-window"); args+=("up:1")
fi
if [ -n "$query" ]; then
args+=("--query=${query} ")
if [[ -n "$query" ]] && $best; then
args+=("--filter"); args+=("${query} ")
elif [[ -n "$query" ]] && ! $best; then
args+=("--query"); args+=("${query} ")
fi
if [ "$entry_point" = "search" ]; then
args+=("--header")
args+=("Displaying online results. Please refer to 'navi --help' for details")
args+=("--header"); args+=("Displaying online results. Please refer to 'navi --help' for details")
fi
ui::_select_post() {
if $best; then
head -n1
else
cat
fi
}
echo "$cheats" \
| cheat::read_many \
| ui::pick "${args[@]}" \
| ui::_select_post \
| selection::dict
}