mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-12 16:50:39 +00:00
170 lines
5.9 KiB
Plaintext
170 lines
5.9 KiB
Plaintext
|
# set to 0 to disable.
|
|||
|
#
|
|||
|
# If set to 1 (or currently any non-zero value), mylyx will read the file and
|
|||
|
# open with the appropriate LyX version. If the format is less than the master
|
|||
|
# format, we don't open with master because we want to know when the file
|
|||
|
# format changes (and when to review lyx2lyx diff).
|
|||
|
_mylyx_veropen_=1
|
|||
|
# TODO: create and use a variable _mylyx_dir_
|
|||
|
# _mylyx_dir_="~/lyxbuilds/"
|
|||
|
|
|||
|
|
|||
|
function _validate_requested_mylyx ()
|
|||
|
{
|
|||
|
potential_dir="/home/${USER}/lyxbuilds/${requested_build}"
|
|||
|
if [ ! -d "${potential_dir}" ]; then
|
|||
|
echo "ERROR: the requested mylyx build does not exist: ${potential_dir}" >&2
|
|||
|
return 1
|
|||
|
fi
|
|||
|
|
|||
|
return 0
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function mylyx ()
|
|||
|
{
|
|||
|
if [ "${_mylyx_veropen_}" = "0" ]; then
|
|||
|
requested_build="$1"
|
|||
|
_validate_requested_mylyx "$1" || return 1
|
|||
|
shift
|
|||
|
else
|
|||
|
if [ -f "$1" ]; then
|
|||
|
# TODO: need to fix tab expansion.
|
|||
|
# we assume user wants the default build
|
|||
|
lyxformat="$( head -n2 "$1" | grep -o -P "\d\d\d" )"
|
|||
|
echo "lyxformat is: ${lyxformat}"
|
|||
|
if [ "${lyxformat}" = "544" ]; then
|
|||
|
requested_build="2.3.x"
|
|||
|
elif [ "${lyxformat}" = "474" ]; then
|
|||
|
requested_build="2.1.0"
|
|||
|
elif [ "${lyxformat}" = "620" ]; then
|
|||
|
requested_build="2.4.x"
|
|||
|
else
|
|||
|
# now we see what format my current master build is in
|
|||
|
master_frmt="$( grep "LYX_FORMAT_LYX" ~/lyxbuilds/master/repo/src/version.h | grep -P -o "\d\d\d" )"
|
|||
|
if [ "${lyxformat}" = "${master_frmt}" ]; then
|
|||
|
requested_build="master"
|
|||
|
else
|
|||
|
echo "No build associated with LyX format ${lyxformat}." >&2
|
|||
|
return 1
|
|||
|
fi
|
|||
|
fi
|
|||
|
echo "Auto-selecting ${requested_build}"
|
|||
|
else
|
|||
|
requested_build="$1"
|
|||
|
shift
|
|||
|
fi
|
|||
|
|
|||
|
_validate_requested_mylyx "${requested_build}" || return 1
|
|||
|
fi
|
|||
|
|
|||
|
if [ -e ~/lyxbuilds/$requested_build/repo/src/lyx ]; then
|
|||
|
echo "starting local autotools binary"
|
|||
|
# This assumes we're using --qt-build-dir when building. Otherwise,
|
|||
|
# mismatch could happen.
|
|||
|
# not sure why need to set LD_LIBRARY_PATH for autotools and not for CMake
|
|||
|
# how does CMake find it?
|
|||
|
LD_LIBRARY_PATH='/usr/BUILD/BuildQt5-dev/qtbase/lib' ~/lyxbuilds/$requested_build/repo/src/lyx -userdir ~/lyxbuilds/$requested_build/user-dir/ "$@"
|
|||
|
else
|
|||
|
# the regex "^lyx(\d\.\d)?" allows for both lyx2.3 and lyx. Depends on what the user sets for -DLYX_PROGRAM_SUFFIX
|
|||
|
LYX_VER="$( ls ~/lyxbuilds/$requested_build/CMakeBuild/bin/ | grep -oP "^lyx(\d\.\d)?$" )"
|
|||
|
if [ -e ~/lyxbuilds/$requested_build/CMakeBuild/bin/${LYX_VER} ]; then
|
|||
|
echo "starting local cmake binary for ${LYX_VER}"
|
|||
|
# Adding the build's bin dir to PATH makes it so e.g., the local build's
|
|||
|
# tex2lyx is used, rather than a system-installed tex2lyx.
|
|||
|
PATH="/home/${USER}/lyxbuilds/${requested_build}/CMakeBuild/bin:${PATH}" ~/lyxbuilds/$requested_build/CMakeBuild/bin/${LYX_VER} -userdir ~/lyxbuilds/$requested_build/user-dir/ "$@"
|
|||
|
else
|
|||
|
echo "ERROR: no autotools or cmake binary available" >&2
|
|||
|
fi
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
_mylyx()
|
|||
|
{
|
|||
|
local cur
|
|||
|
|
|||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|||
|
|
|||
|
if [ "$COMP_CWORD" == "1" ]; then
|
|||
|
COMPREPLY=( $( compgen -W '`ls ~/lyxbuilds`' -- $cur ) )
|
|||
|
|
|||
|
if [ "${_mylyx_veropen_}" != "0" ]; then
|
|||
|
# need to protect against an empty directory, otherwise get the following
|
|||
|
# error:
|
|||
|
# mylyx find: ‘*’: No such file or directory
|
|||
|
if [ "$(ls -A .)" ]; then
|
|||
|
# for find command:
|
|||
|
# https://stackoverflow.com/a/2596474/1376404
|
|||
|
# for case insenstivity, replace ${cur} with ${cur,,}:
|
|||
|
# (this messed something else up so I changed back.
|
|||
|
# https://unix.stackexchange.com/a/128390/197212
|
|||
|
# This one is also useful:
|
|||
|
# https://stackoverflow.com/a/10981916/1376404
|
|||
|
COMPREPLY+=( $( compgen -W '`find * -maxdepth 0 -type f -name "*.lyx"`' -- "${cur}" ) )
|
|||
|
fi
|
|||
|
fi
|
|||
|
else
|
|||
|
_filedir '@(lyx)'
|
|||
|
fi
|
|||
|
}
|
|||
|
complete -F _mylyx ${filenames:-} mylyx
|
|||
|
|
|||
|
|
|||
|
function mylyxcd ()
|
|||
|
{
|
|||
|
requested_build="$1"
|
|||
|
_validate_requested_mylyx "$1" || return 1
|
|||
|
|
|||
|
# TODO could allow for 'repo' to be named anything. Just check for a git folder.
|
|||
|
|
|||
|
cd ~/lyxbuilds/$requested_build/repo
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
_mylyxcd()
|
|||
|
{
|
|||
|
local cur
|
|||
|
|
|||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|||
|
|
|||
|
if [ "$COMP_CWORD" == "1" ]; then
|
|||
|
COMPREPLY=( $( compgen -W '`ls ~/lyxbuilds`' -- $cur ) )
|
|||
|
fi
|
|||
|
}
|
|||
|
complete -F _mylyxcd ${filenames:-} mylyxcd
|
|||
|
|
|||
|
|
|||
|
function mylyx-gdb ()
|
|||
|
{
|
|||
|
# (https://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first-one-in-a-bash-script)
|
|||
|
# the "${@:2}" relays all arguments except the first.
|
|||
|
requested_build="$1"
|
|||
|
_validate_requested_mylyx "$1" || return 1
|
|||
|
PATH="/home/${USER}/lyxbuilds/${requested_build}/CMakeBuild/bin:${PATH}" gdb --args ~/"lyxbuilds/${requested_build}/CMakeBuild/bin/lyx" -userdir ~/"lyxbuilds/${requested_build}/user-dir" "${@:2}"
|
|||
|
}
|
|||
|
complete -F _mylyxcd ${filenames:-} mylyx-gdb
|
|||
|
|
|||
|
|
|||
|
function mylyx-valgrind ()
|
|||
|
{
|
|||
|
# (https://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first-one-in-a-bash-script)
|
|||
|
# the "${@:2}" relays all arguments except the first.
|
|||
|
requested_build="$1"
|
|||
|
_validate_requested_mylyx "$1" || return 1
|
|||
|
PATH="/home/${USER}/lyxbuilds/${requested_build}/CMakeBuild/bin:${PATH}" valgrind --track-origins=yes --log-file=valgrind.log ~/lyxbuilds/${requested_build}/CMakeBuild/bin/lyx -userdir ~/"lyxbuilds/${requested_build}/user-dir" "${@:2}"
|
|||
|
}
|
|||
|
complete -F _mylyxcd ${filenames:-} mylyx-valgrind
|
|||
|
|
|||
|
|
|||
|
function mylyx-valgrind-leak-check-full ()
|
|||
|
{
|
|||
|
# (https://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first-one-in-a-bash-script)
|
|||
|
# the "${@:2}" relays all arguments except the first.
|
|||
|
requested_build="$1"
|
|||
|
_validate_requested_mylyx "$1" || return 1
|
|||
|
PATH="/home/${USER}/lyxbuilds/${requested_build}/CMakeBuild/bin:${PATH}" valgrind --track-origins=yes --log-file=valgrind.log --leak-check=full ~/lyxbuilds/${requested_build}/CMakeBuild/bin/lyx -userdir ~/"lyxbuilds/${requested_build}/user-dir" "${@:2}"
|
|||
|
}
|
|||
|
complete -F _mylyxcd ${filenames:-} mylyx-valgrind-leak-check-full
|