136 lines
3.4 KiB
Bash
Executable file
136 lines
3.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
SAVED_PIPELINE_DIR="$DOTFILES_PATH/bin/pipelines"
|
|
mkdir -p "$SAVED_PIPELINE_DIR"
|
|
|
|
if [[ ! -z "${1+x}" ]]; then
|
|
pdir="$SAVED_PIPELINE_DIR/$1"; shift
|
|
mkdir -p "$pdir"
|
|
if [[ -z ${1+x} ]]; then
|
|
td="$(mktemp -p "$pdir" -d "tmp_pipeline.XXXXXXXX")"
|
|
cleanup_trap="rm -rf \"$td\""
|
|
else
|
|
td="$pdir/$1"; shift
|
|
mkdir -p "$td"
|
|
fi
|
|
transform="$pdir/transform"
|
|
else
|
|
td="$(mktemp --tmpdir -d pipeline.XXXXXXXX)"
|
|
transform="$td/transform"
|
|
cleanup_trap="rm -rf \"$td\""
|
|
fi
|
|
|
|
if [[ ! -e "$transform" ]]; then
|
|
echo -e "#!/usr/bin/env bash\n# for ${td}\n\nbase64" > "$transform"
|
|
fi
|
|
|
|
in="$td/in"
|
|
if [[ ! -z "${1+x}" ]]; then
|
|
in="${1}"; shift
|
|
fi
|
|
out="$td/out"
|
|
if [[ ! -z "${1+x}" ]]; then
|
|
out="${1}"; shift
|
|
fi
|
|
|
|
# TODO: if no logging, log="/dev/null"
|
|
log="$td/log"
|
|
|
|
chmod +x "$transform"
|
|
echo "Hello World" > "$in"
|
|
touch "$log"
|
|
|
|
fswi \
|
|
"bash -c 'cd \"$td\" && < \"$in\" \"$transform\" | tee \"$out\"'" \
|
|
'in$|transform$' \
|
|
"$td" "$pdir" &> "$log" &
|
|
watcher="$!"
|
|
|
|
if [[ -z ${cleanup_trap+x} ]]; then
|
|
trap "kill \"$watcher\"" EXIT
|
|
else
|
|
trap "${cleanup_trap}; kill \"$watcher\"" EXIT
|
|
fi
|
|
|
|
job="$(echo "let g:pipeline_job_id = jobstart(['inotifywait', '-m', '-e', 'close_write', '${out}'], {'detach':1,'on_stdout':{j,d,e->execute('checktime')}})")"
|
|
|
|
echo $job >> "$log"
|
|
|
|
# this will only autosave (and therefore autoreload) for the out buffer (since
|
|
# it was opened last) - autosaving (and therefore autorunning) is potentially
|
|
# very scary
|
|
nvim -V9"$td/vimlog" \
|
|
-o "$in" "$transform" "$out" \
|
|
--cmd 'set autoread' \
|
|
--cmd 'set updatetime=250' \
|
|
--cmd 'autocmd CursorHold,CursorHoldI <buffer> silent write' \
|
|
--cmd 'autocmd VimLeave call jobstop(g:pipeline_job_id)' \
|
|
--cmd "$job"
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
# SAVED_PIPELINE_DIR="$EDFP/pipelines"
|
|
# mkdir -p "$SAVED_PIPELINE_DIR"
|
|
|
|
# if [[ ! -z "${1+x}" ]]; then
|
|
# pdir="$SAVED_PIPELINE_DIR/$1"; shift
|
|
# mkdir -p "$pdir"
|
|
# if [[ -z ${1+x} ]]; then
|
|
# td="$(mktemp -p "$pdir" -d "tmp_pipeline.XXXXXXXX")"
|
|
# cleanup_trap="rm -rf \"$td\""
|
|
# else
|
|
# td="$pdir/$1"; shift
|
|
# mkdir -p "$td"
|
|
# fi
|
|
# transform="$pdir/transform"
|
|
# else
|
|
# td="$(mktemp --tmpdir -d pipeline.XXXXXXXX)"
|
|
# transform="$td/transform"
|
|
# cleanup_trap="rm -rf \"$td\""
|
|
# fi
|
|
|
|
# if [[ ! -e "$transform" ]]; then
|
|
# echo -e "#!/usr/bin/env bash\n# for ${td}\n\nbase64" > "$transform"
|
|
# fi
|
|
|
|
# in="$td/in"
|
|
# if [[ ! -z "${1+x}" ]]; then
|
|
# in="${1}"; shift
|
|
# fi
|
|
# out="$td/out"
|
|
# if [[ ! -z "${1+x}" ]]; then
|
|
# out="${1}"; shift
|
|
# fi
|
|
|
|
# # TODO: if no logging, log="/dev/null"
|
|
# log="$td/log"
|
|
|
|
# chmod +x "$transform"
|
|
# echo "Hello World" > "$in"
|
|
# touch "$log"
|
|
|
|
# fswi \
|
|
# "bash -c 'cd \"$td\" && < \"$in\" \"$transform\" | tee \"$out\"'" \
|
|
# 'in$|transform$' \
|
|
# "$td" "$pdir" &> "$log" &
|
|
# watcher="$!"
|
|
|
|
# if [[ -z ${cleanup_trap+x} ]]; then
|
|
# trap "kill \"$watcher\"" EXIT
|
|
# else
|
|
# trap "${cleanup_trap}; kill \"$watcher\"" EXIT
|
|
# fi
|
|
|
|
# job="call jobstart(['inotifywait', '-m', '-e', 'close_write', '${out}'], {'on_stdout':{j,d,e->execute('checktime')}})"
|
|
|
|
# # this will only autosave (and therefore autoreload) for the out buffer (since
|
|
# # it was opened last) - autosaving (and therefore autorunning) is potentially
|
|
# # very scary
|
|
# nvim \
|
|
# --cmd 'set shm+=atIWF' \
|
|
# --cmd 'set shm-=Oo' \
|
|
# -o "$in" "$transform" "$out" \
|
|
# --cmd 'set autoread' \
|
|
# --cmd 'set updatetime=250' \
|
|
# --cmd 'autocmd CursorHold,CursorHoldI <buffer> silent write' \
|
|
# --cmd "$(<<< "$job" tr "'" '"')"
|