use scriptpath to locate refine
This commit is contained in:
parent
6ab1ab171c
commit
f1c37c947e
|
@ -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
|
||||
|
|
37
orcli
37
orcli
|
@ -863,22 +863,23 @@ orcli_run_command() {
|
|||
OPENREFINE_URL="http://localhost:${args[--port]}"
|
||||
|
||||
# locate orcli and OpenRefine
|
||||
scriptpath=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
if [[ -x "$0" ]]; then
|
||||
orcli="$0"
|
||||
if [[ -x "${scriptpath}/orcli" ]]; then
|
||||
orcli="${scriptpath}/orcli"
|
||||
else
|
||||
error "orcli is not executable!" "Try: chmod + $0"
|
||||
error "orcli is not executable!" "Try: chmod + ${scriptpath}/orcli"
|
||||
fi
|
||||
fi
|
||||
if [[ -x "refine" ]]; then
|
||||
openrefine="./refine"
|
||||
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 +887,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 [[ $orcli ]]; then
|
||||
echo "alias orcli=$orcli"
|
||||
fi
|
||||
interactive
|
||||
) -i </dev/tty
|
||||
exit
|
||||
|
@ -915,6 +919,9 @@ orcli_run_command() {
|
|||
# case 2: execute scripts and keep shell running
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if [[ $orcli ]]; then
|
||||
echo "alias orcli=$orcli"
|
||||
fi
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
awk 1 "${files[$i]}"
|
||||
|
@ -923,9 +930,13 @@ orcli_run_command() {
|
|||
) -i </dev/tty
|
||||
else
|
||||
# case 3: just execute scripts
|
||||
export orcli
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
bash -e <(awk 1 "${files[$i]}")
|
||||
bash -e <(
|
||||
echo "if [[ $orcli ]]; then alias orcli=$orcli; fi"
|
||||
awk 1 "${files[$i]}"
|
||||
)
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
@ -18,22 +18,23 @@ fi
|
|||
OPENREFINE_URL="http://localhost:${args[--port]}"
|
||||
|
||||
# locate orcli and OpenRefine
|
||||
scriptpath=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
|
||||
if ! command -v orcli &>/dev/null; then
|
||||
if [[ -x "$0" ]]; then
|
||||
orcli="$0"
|
||||
if [[ -x "${scriptpath}/orcli" ]]; then
|
||||
orcli="${scriptpath}/orcli"
|
||||
else
|
||||
error "orcli is not executable!" "Try: chmod + $0"
|
||||
error "orcli is not executable!" "Try: chmod + ${scriptpath}/orcli"
|
||||
fi
|
||||
fi
|
||||
if [[ -x "refine" ]]; then
|
||||
openrefine="./refine"
|
||||
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 +42,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 [[ $orcli ]]; then
|
||||
echo "alias orcli=$orcli"
|
||||
fi
|
||||
interactive
|
||||
) -i </dev/tty
|
||||
exit
|
||||
|
@ -70,6 +74,9 @@ if [[ ${args[--interactive]} ]]; then
|
|||
# case 2: execute scripts and keep shell running
|
||||
bash --rcfile <(
|
||||
cat ~/.bashrc
|
||||
if [[ $orcli ]]; then
|
||||
echo "alias orcli=$orcli"
|
||||
fi
|
||||
for i in "${!files[@]}"; do
|
||||
log "execute script ${files[$i]}"
|
||||
awk 1 "${files[$i]}"
|
||||
|
|
Loading…
Reference in New Issue