Merge pull request #70 from opencultureconsulting/felixlohmeier/run-reliably-locate-69
use scriptpath to locate refine
This commit is contained in:
commit
53e06d7b41
|
@ -34,7 +34,7 @@ wget https://github.com/opencultureconsulting/orcli/raw/main/orcli
|
|||
chmod +x orcli
|
||||
```
|
||||
|
||||
3. Create a symlink in your $PATH (e.g. to ~/.local/bin)
|
||||
3. Optional: Create a symlink in your $PATH (e.g. to ~/.local/bin)
|
||||
|
||||
```sh
|
||||
ln -s "${PWD}/orcli" ~/.local/bin/
|
||||
|
@ -42,8 +42,6 @@ ln -s "${PWD}/orcli" ~/.local/bin/
|
|||
|
||||
## Usage
|
||||
|
||||
Ensure you have OpenRefine running (i.e. available at http://localhost:3333 or another URL) or use the integrated start command first.
|
||||
|
||||
Use integrated help screens for available options and examples for each command.
|
||||
|
||||
```sh
|
||||
|
|
47
orcli
47
orcli
|
@ -590,9 +590,6 @@ function init_import() {
|
|||
# shellcheck shell=bash
|
||||
function interactive() {
|
||||
cat <<'EOF'
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
alias orcli="$orcli"
|
||||
fi
|
||||
PS1="(orcli) [\u@\h \W]\$ "
|
||||
source <(orcli completions)
|
||||
echo '================================================================'
|
||||
|
@ -863,22 +860,16 @@ orcli_run_command() {
|
|||
OPENREFINE_URL="http://localhost:${args[--port]}"
|
||||
|
||||
# locate orcli and OpenRefine
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
if [[ -x "$0" ]]; then
|
||||
orcli="$0"
|
||||
else
|
||||
error "orcli is not executable!" "Try: chmod + $0"
|
||||
fi
|
||||
fi
|
||||
if [[ -x "refine" ]]; then
|
||||
openrefine="./refine"
|
||||
scriptpath=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
|
||||
if [[ -x "${scriptpath}/refine" ]]; then
|
||||
openrefine="${scriptpath}/refine"
|
||||
else
|
||||
error "OpenRefine's startup script (refine) not found!" "Did you put orcli in your OpenRefine app dir?"
|
||||
fi
|
||||
|
||||
# create tmp directory
|
||||
tmpdir="$(mktemp -d)"
|
||||
trap '{ rm -rf "$tmpdir"; }' 0 2 3 15
|
||||
OPENREFINE_TMPDIR="$(mktemp -d)"
|
||||
trap '{ rm -rf "$OPENREFINE_TMPDIR"; }' 0 2 3 15
|
||||
|
||||
# check if OpenRefine is already running
|
||||
if curl -fs "${OPENREFINE_URL}" &>/dev/null; then
|
||||
|
@ -886,26 +877,29 @@ orcli_run_command() {
|
|||
fi
|
||||
|
||||
# start OpenRefine with tmp workspace and autosave period 25 hours
|
||||
REFINE_AUTOSAVE_PERIOD=1440 $openrefine -d "$tmpdir" -m "${args[--memory]}" -p "${args[--port]}" -x refine.headless=true -v warn &>"$tmpdir/openrefine.log" &
|
||||
openrefine_pid="$!"
|
||||
REFINE_AUTOSAVE_PERIOD=1440 $openrefine -d "$OPENREFINE_TMPDIR" -m "${args[--memory]}" -p "${args[--port]}" -x refine.headless=true -v warn &>"$OPENREFINE_TMPDIR/openrefine.log" &
|
||||
OPENREFINE_PID="$!"
|
||||
|
||||
# update trap to kill OpenRefine on error or exit
|
||||
trap '{ rm -rf "$tmpdir"; kill -9 "$openrefine_pid"; }' 0 2 3 15
|
||||
trap '{ rm -rf "$OPENREFINE_TMPDIR"; kill -9 "$OPENREFINE_PID"; }' 0 2 3 15
|
||||
|
||||
# wait until OpenRefine is running (timeout 20s)
|
||||
if ! curl -fs --retry 20 --retry-connrefused --retry-delay 1 "${OPENREFINE_URL}/command/core/get-version" &>/dev/null; then
|
||||
error "starting OpenRefine server failed!"
|
||||
else
|
||||
log "started OpenRefine" "port: ${args[--port]}" "memory: ${args[--memory]}" "tmpdir: ${tmpdir}" "pid: ${openrefine_pid}"
|
||||
log "started OpenRefine" "port: ${args[--port]}" "memory: ${args[--memory]}" "tmpdir: ${OPENREFINE_TMPDIR}" "pid: ${OPENREFINE_PID}"
|
||||
fi
|
||||
|
||||
# execute script(s) in subshell
|
||||
export orcli tmpdir OPENREFINE_URL openrefine_pid
|
||||
export OPENREFINE_TMPDIR OPENREFINE_URL OPENREFINE_PID
|
||||
if [[ ${args[file]} == '-' || ${args[file]} == '"-"' ]]; then
|
||||
if ! read -u 0 -t 0; then
|
||||
# case 1: interactive mode if stdin is selected but not present
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
interactive
|
||||
) -i </dev/tty
|
||||
exit
|
||||
|
@ -915,8 +909,11 @@ orcli_run_command() {
|
|||
# case 2: execute scripts and keep shell running
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
log "executing script ${files[$i]}..."
|
||||
awk 1 "${files[$i]}"
|
||||
done
|
||||
interactive
|
||||
|
@ -924,8 +921,14 @@ orcli_run_command() {
|
|||
else
|
||||
# case 3: just execute scripts
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
bash -e <(awk 1 "${files[$i]}")
|
||||
log "executing script ${files[$i]}..."
|
||||
bash -e <(
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "shopt -s expand_aliases"
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
awk 1 "${files[$i]}"
|
||||
)
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# shellcheck shell=bash
|
||||
function interactive() {
|
||||
cat <<'EOF'
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
alias orcli="$orcli"
|
||||
fi
|
||||
PS1="(orcli) [\u@\h \W]\$ "
|
||||
source <(orcli completions)
|
||||
echo '================================================================'
|
||||
|
|
|
@ -18,22 +18,16 @@ fi
|
|||
OPENREFINE_URL="http://localhost:${args[--port]}"
|
||||
|
||||
# locate orcli and OpenRefine
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
if [[ -x "$0" ]]; then
|
||||
orcli="$0"
|
||||
else
|
||||
error "orcli is not executable!" "Try: chmod + $0"
|
||||
fi
|
||||
fi
|
||||
if [[ -x "refine" ]]; then
|
||||
openrefine="./refine"
|
||||
scriptpath=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
|
||||
if [[ -x "${scriptpath}/refine" ]]; then
|
||||
openrefine="${scriptpath}/refine"
|
||||
else
|
||||
error "OpenRefine's startup script (refine) not found!" "Did you put orcli in your OpenRefine app dir?"
|
||||
fi
|
||||
|
||||
# create tmp directory
|
||||
tmpdir="$(mktemp -d)"
|
||||
trap '{ rm -rf "$tmpdir"; }' 0 2 3 15
|
||||
OPENREFINE_TMPDIR="$(mktemp -d)"
|
||||
trap '{ rm -rf "$OPENREFINE_TMPDIR"; }' 0 2 3 15
|
||||
|
||||
# check if OpenRefine is already running
|
||||
if curl -fs "${OPENREFINE_URL}" &>/dev/null; then
|
||||
|
@ -41,26 +35,29 @@ if curl -fs "${OPENREFINE_URL}" &>/dev/null; then
|
|||
fi
|
||||
|
||||
# start OpenRefine with tmp workspace and autosave period 25 hours
|
||||
REFINE_AUTOSAVE_PERIOD=1440 $openrefine -d "$tmpdir" -m "${args[--memory]}" -p "${args[--port]}" -x refine.headless=true -v warn &>"$tmpdir/openrefine.log" &
|
||||
openrefine_pid="$!"
|
||||
REFINE_AUTOSAVE_PERIOD=1440 $openrefine -d "$OPENREFINE_TMPDIR" -m "${args[--memory]}" -p "${args[--port]}" -x refine.headless=true -v warn &>"$OPENREFINE_TMPDIR/openrefine.log" &
|
||||
OPENREFINE_PID="$!"
|
||||
|
||||
# update trap to kill OpenRefine on error or exit
|
||||
trap '{ rm -rf "$tmpdir"; kill -9 "$openrefine_pid"; }' 0 2 3 15
|
||||
trap '{ rm -rf "$OPENREFINE_TMPDIR"; kill -9 "$OPENREFINE_PID"; }' 0 2 3 15
|
||||
|
||||
# wait until OpenRefine is running (timeout 20s)
|
||||
if ! curl -fs --retry 20 --retry-connrefused --retry-delay 1 "${OPENREFINE_URL}/command/core/get-version" &>/dev/null; then
|
||||
error "starting OpenRefine server failed!"
|
||||
else
|
||||
log "started OpenRefine" "port: ${args[--port]}" "memory: ${args[--memory]}" "tmpdir: ${tmpdir}" "pid: ${openrefine_pid}"
|
||||
log "started OpenRefine" "port: ${args[--port]}" "memory: ${args[--memory]}" "tmpdir: ${OPENREFINE_TMPDIR}" "pid: ${OPENREFINE_PID}"
|
||||
fi
|
||||
|
||||
# execute script(s) in subshell
|
||||
export orcli tmpdir OPENREFINE_URL openrefine_pid
|
||||
export OPENREFINE_TMPDIR OPENREFINE_URL OPENREFINE_PID
|
||||
if [[ ${args[file]} == '-' || ${args[file]} == '"-"' ]]; then
|
||||
if ! read -u 0 -t 0; then
|
||||
# case 1: interactive mode if stdin is selected but not present
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
interactive
|
||||
) -i </dev/tty
|
||||
exit
|
||||
|
@ -70,8 +67,11 @@ if [[ ${args[--interactive]} ]]; then
|
|||
# case 2: execute scripts and keep shell running
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
log "executing script ${files[$i]}..."
|
||||
awk 1 "${files[$i]}"
|
||||
done
|
||||
interactive
|
||||
|
@ -79,7 +79,13 @@ if [[ ${args[--interactive]} ]]; then
|
|||
else
|
||||
# case 3: just execute scripts
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
bash -e <(awk 1 "${files[$i]}")
|
||||
log "executing script ${files[$i]}..."
|
||||
bash -e <(
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
echo "shopt -s expand_aliases"
|
||||
echo "alias orcli=${scriptpath}/orcli"
|
||||
fi
|
||||
awk 1 "${files[$i]}"
|
||||
)
|
||||
done
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue