Build pipeline: vsh-ci-template-xxl9g
Source commit: 73b07a96e0
Source message: Fix quotes in test (#4)
* Fix quotes in test
* query the first output file to pick up the 'name' value again and output it
grep with start and end position constaints
1342 lines
54 KiB
Bash
Executable File
1342 lines
54 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# bgzip main
|
|
#
|
|
# This wrapper script is auto-generated by viash 0.9.0-RC6 and is thus a
|
|
# derivative work thereof. This software comes with ABSOLUTELY NO WARRANTY from
|
|
# Data Intuitive.
|
|
#
|
|
# The component may contain files which fall under a different license. The
|
|
# authors of this component should specify the license in the header of such
|
|
# files, or include a separate license file detailing the licenses of all included
|
|
# files.
|
|
|
|
set -e
|
|
|
|
if [ -z "$VIASH_TEMP" ]; then
|
|
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMPDIR}
|
|
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TEMPDIR}
|
|
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMP}
|
|
VIASH_TEMP=${VIASH_TEMP:-$TMPDIR}
|
|
VIASH_TEMP=${VIASH_TEMP:-$TMP}
|
|
VIASH_TEMP=${VIASH_TEMP:-$TEMPDIR}
|
|
VIASH_TEMP=${VIASH_TEMP:-$TEMP}
|
|
VIASH_TEMP=${VIASH_TEMP:-/tmp}
|
|
fi
|
|
|
|
# define helper functions
|
|
# ViashQuote: put quotes around non flag values
|
|
# $1 : unquoted string
|
|
# return : possibly quoted string
|
|
# examples:
|
|
# ViashQuote --foo # returns --foo
|
|
# ViashQuote bar # returns 'bar'
|
|
# Viashquote --foo=bar # returns --foo='bar'
|
|
function ViashQuote {
|
|
if [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+=.+$ ]]; then
|
|
echo "$1" | sed "s#=\(.*\)#='\1'#"
|
|
elif [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+$ ]]; then
|
|
echo "$1"
|
|
else
|
|
echo "'$1'"
|
|
fi
|
|
}
|
|
# ViashRemoveFlags: Remove leading flag
|
|
# $1 : string with a possible leading flag
|
|
# return : string without possible leading flag
|
|
# examples:
|
|
# ViashRemoveFlags --foo=bar # returns bar
|
|
function ViashRemoveFlags {
|
|
echo "$1" | sed 's/^--*[a-zA-Z0-9_\-]*=//'
|
|
}
|
|
# ViashSourceDir: return the path of a bash file, following symlinks
|
|
# usage : ViashSourceDir ${BASH_SOURCE[0]}
|
|
# $1 : Should always be set to ${BASH_SOURCE[0]}
|
|
# returns : The absolute path of the bash file
|
|
function ViashSourceDir {
|
|
SOURCE="$1"
|
|
while [ -h "$SOURCE" ]; do
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
SOURCE="$(readlink "$SOURCE")"
|
|
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
|
|
done
|
|
cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd
|
|
}
|
|
# ViashFindTargetDir: return the path of the '.build.yaml' file, following symlinks
|
|
# usage : ViashFindTargetDir 'ScriptPath'
|
|
# $1 : The location from where to start the upward search
|
|
# returns : The absolute path of the '.build.yaml' file
|
|
function ViashFindTargetDir {
|
|
SOURCE="$1"
|
|
while [[ "$SOURCE" != "" && ! -e "$SOURCE/.build.yaml" ]]; do
|
|
SOURCE=${SOURCE%/*}
|
|
done
|
|
echo $SOURCE
|
|
}
|
|
# see https://en.wikipedia.org/wiki/Syslog#Severity_level
|
|
VIASH_LOGCODE_EMERGENCY=0
|
|
VIASH_LOGCODE_ALERT=1
|
|
VIASH_LOGCODE_CRITICAL=2
|
|
VIASH_LOGCODE_ERROR=3
|
|
VIASH_LOGCODE_WARNING=4
|
|
VIASH_LOGCODE_NOTICE=5
|
|
VIASH_LOGCODE_INFO=6
|
|
VIASH_LOGCODE_DEBUG=7
|
|
VIASH_VERBOSITY=$VIASH_LOGCODE_NOTICE
|
|
|
|
# ViashLog: Log events depending on the verbosity level
|
|
# usage: ViashLog 1 alert Oh no something went wrong!
|
|
# $1: required verbosity level
|
|
# $2: display tag
|
|
# $3+: messages to display
|
|
# stdout: Your input, prepended by '[$2] '.
|
|
function ViashLog {
|
|
local required_level="$1"
|
|
local display_tag="$2"
|
|
shift 2
|
|
if [ $VIASH_VERBOSITY -ge $required_level ]; then
|
|
>&2 echo "[$display_tag]" "$@"
|
|
fi
|
|
}
|
|
|
|
# ViashEmergency: log events when the system is unstable
|
|
# usage: ViashEmergency Oh no something went wrong.
|
|
# stdout: Your input, prepended by '[emergency] '.
|
|
function ViashEmergency {
|
|
ViashLog $VIASH_LOGCODE_EMERGENCY emergency "$@"
|
|
}
|
|
|
|
# ViashAlert: log events when actions must be taken immediately (e.g. corrupted system database)
|
|
# usage: ViashAlert Oh no something went wrong.
|
|
# stdout: Your input, prepended by '[alert] '.
|
|
function ViashAlert {
|
|
ViashLog $VIASH_LOGCODE_ALERT alert "$@"
|
|
}
|
|
|
|
# ViashCritical: log events when a critical condition occurs
|
|
# usage: ViashCritical Oh no something went wrong.
|
|
# stdout: Your input, prepended by '[critical] '.
|
|
function ViashCritical {
|
|
ViashLog $VIASH_LOGCODE_CRITICAL critical "$@"
|
|
}
|
|
|
|
# ViashError: log events when an error condition occurs
|
|
# usage: ViashError Oh no something went wrong.
|
|
# stdout: Your input, prepended by '[error] '.
|
|
function ViashError {
|
|
ViashLog $VIASH_LOGCODE_ERROR error "$@"
|
|
}
|
|
|
|
# ViashWarning: log potentially abnormal events
|
|
# usage: ViashWarning Something may have gone wrong.
|
|
# stdout: Your input, prepended by '[warning] '.
|
|
function ViashWarning {
|
|
ViashLog $VIASH_LOGCODE_WARNING warning "$@"
|
|
}
|
|
|
|
# ViashNotice: log significant but normal events
|
|
# usage: ViashNotice This just happened.
|
|
# stdout: Your input, prepended by '[notice] '.
|
|
function ViashNotice {
|
|
ViashLog $VIASH_LOGCODE_NOTICE notice "$@"
|
|
}
|
|
|
|
# ViashInfo: log normal events
|
|
# usage: ViashInfo This just happened.
|
|
# stdout: Your input, prepended by '[info] '.
|
|
function ViashInfo {
|
|
ViashLog $VIASH_LOGCODE_INFO info "$@"
|
|
}
|
|
|
|
# ViashDebug: log all events, for debugging purposes
|
|
# usage: ViashDebug This just happened.
|
|
# stdout: Your input, prepended by '[debug] '.
|
|
function ViashDebug {
|
|
ViashLog $VIASH_LOGCODE_DEBUG debug "$@"
|
|
}
|
|
|
|
# find source folder of this component
|
|
VIASH_META_RESOURCES_DIR=`ViashSourceDir ${BASH_SOURCE[0]}`
|
|
|
|
# find the root of the built components & dependencies
|
|
VIASH_TARGET_DIR=`ViashFindTargetDir $VIASH_META_RESOURCES_DIR`
|
|
|
|
# define meta fields
|
|
VIASH_META_NAME="bgzip"
|
|
VIASH_META_FUNCTIONALITY_NAME="bgzip"
|
|
VIASH_META_EXECUTABLE="$VIASH_META_RESOURCES_DIR/$VIASH_META_NAME"
|
|
VIASH_META_CONFIG="$VIASH_META_RESOURCES_DIR/.config.vsh.yaml"
|
|
VIASH_META_TEMP_DIR="$VIASH_TEMP"
|
|
|
|
|
|
# ViashHelp: Display helpful explanation about this executable
|
|
function ViashHelp {
|
|
echo "bgzip main"
|
|
echo ""
|
|
echo "Block compression/decompression utility"
|
|
echo ""
|
|
echo "Inputs:"
|
|
echo " --input"
|
|
echo " type: file, required parameter, file must exist"
|
|
echo " file to be compressed or decompressed"
|
|
echo ""
|
|
echo "Outputs:"
|
|
echo " --output"
|
|
echo " type: file, required parameter, output, file must exist"
|
|
echo " compressed or decompressed output"
|
|
echo ""
|
|
echo " -I, --index_name"
|
|
echo " type: file, output, file must exist"
|
|
echo " name of BGZF index file [file.gz.gzi]"
|
|
echo ""
|
|
echo "Arguments:"
|
|
echo " -b, --offset"
|
|
echo " type: integer"
|
|
echo " decompress at virtual file pointer (0-based uncompressed offset)"
|
|
echo ""
|
|
echo " -d, --decompress"
|
|
echo " type: boolean_true"
|
|
echo " decompress the input file"
|
|
echo ""
|
|
echo " -g, --rebgzip"
|
|
echo " type: boolean_true"
|
|
echo " use an index file to bgzip a file"
|
|
echo ""
|
|
echo " -i, --index"
|
|
echo " type: boolean_true"
|
|
echo " compress and create BGZF index"
|
|
echo ""
|
|
echo " -l, --compress_level"
|
|
echo " type: integer"
|
|
echo " min: -1"
|
|
echo " max: 9"
|
|
echo " compression level to use when compressing; 0 to 9, or -1 for default"
|
|
echo " [-1]"
|
|
echo ""
|
|
echo " -r, --reindex"
|
|
echo " type: boolean_true"
|
|
echo " (re)index the output file"
|
|
echo ""
|
|
echo " -s, --size"
|
|
echo " type: integer"
|
|
echo " min: 0"
|
|
echo " decompress INT bytes (uncompressed size)"
|
|
echo ""
|
|
echo " -t, --test"
|
|
echo " type: boolean_true"
|
|
echo " test integrity of compressed file"
|
|
echo ""
|
|
echo " --binary"
|
|
echo " type: boolean_true"
|
|
echo " Don't align blocks with text lines"
|
|
}
|
|
|
|
# initialise variables
|
|
VIASH_MODE='run'
|
|
VIASH_ENGINE_ID='docker'
|
|
|
|
######## Helper functions for setting up Docker images for viash ########
|
|
# expects: ViashDockerBuild
|
|
|
|
# ViashDockerInstallationCheck: check whether Docker is installed correctly
|
|
#
|
|
# examples:
|
|
# ViashDockerInstallationCheck
|
|
function ViashDockerInstallationCheck {
|
|
ViashDebug "Checking whether Docker is installed"
|
|
if [ ! command -v docker &> /dev/null ]; then
|
|
ViashCritical "Docker doesn't seem to be installed. See 'https://docs.docker.com/get-docker/' for instructions."
|
|
exit 1
|
|
fi
|
|
|
|
ViashDebug "Checking whether the Docker daemon is running"
|
|
save=$-; set +e
|
|
docker_version=$(docker version --format '{{.Client.APIVersion}}' 2> /dev/null)
|
|
out=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $out -ne 0 ]; then
|
|
ViashCritical "Docker daemon does not seem to be running. Try one of the following:"
|
|
ViashCritical "- Try running 'dockerd' in the command line"
|
|
ViashCritical "- See https://docs.docker.com/config/daemon/"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# ViashDockerRemoteTagCheck: check whether a Docker image is available
|
|
# on a remote. Assumes `docker login` has been performed, if relevant.
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# exit code $? : whether or not the image was found
|
|
# examples:
|
|
# ViashDockerRemoteTagCheck python:latest
|
|
# echo $? # returns '0'
|
|
# ViashDockerRemoteTagCheck sdaizudceahifu
|
|
# echo $? # returns '1'
|
|
function ViashDockerRemoteTagCheck {
|
|
docker manifest inspect $1 > /dev/null 2> /dev/null
|
|
}
|
|
|
|
# ViashDockerLocalTagCheck: check whether a Docker image is available locally
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# exit code $? : whether or not the image was found
|
|
# examples:
|
|
# docker pull python:latest
|
|
# ViashDockerLocalTagCheck python:latest
|
|
# echo $? # returns '0'
|
|
# ViashDockerLocalTagCheck sdaizudceahifu
|
|
# echo $? # returns '1'
|
|
function ViashDockerLocalTagCheck {
|
|
[ -n "$(docker images -q $1)" ]
|
|
}
|
|
|
|
# ViashDockerPull: pull a Docker image
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# exit code $? : whether or not the image was found
|
|
# examples:
|
|
# ViashDockerPull python:latest
|
|
# echo $? # returns '0'
|
|
# ViashDockerPull sdaizudceahifu
|
|
# echo $? # returns '1'
|
|
function ViashDockerPull {
|
|
ViashNotice "Checking if Docker image is available at '$1'"
|
|
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
|
|
docker pull $1 && return 0 || return 1
|
|
else
|
|
save=$-; set +e
|
|
docker pull $1 2> /dev/null > /dev/null
|
|
out=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $out -ne 0 ]; then
|
|
ViashWarning "Could not pull from '$1'. Docker image doesn't exist or is not accessible."
|
|
fi
|
|
return $out
|
|
fi
|
|
}
|
|
|
|
# ViashDockerPush: push a Docker image
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# exit code $? : whether or not the image was found
|
|
# examples:
|
|
# ViashDockerPush python:latest
|
|
# echo $? # returns '0'
|
|
# ViashDockerPush sdaizudceahifu
|
|
# echo $? # returns '1'
|
|
function ViashDockerPush {
|
|
ViashNotice "Pushing image to '$1'"
|
|
save=$-; set +e
|
|
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
|
|
docker push $1
|
|
out=$?
|
|
else
|
|
docker push $1 2> /dev/null > /dev/null
|
|
out=$?
|
|
fi
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $out -eq 0 ]; then
|
|
ViashNotice "Container '$1' push succeeded."
|
|
else
|
|
ViashError "Container '$1' push errored. You might not be logged in or have the necessary permissions."
|
|
fi
|
|
return $out
|
|
}
|
|
|
|
# ViashDockerPullElseBuild: pull a Docker image, else build it
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# ViashDockerBuild : a Bash function which builds a docker image, takes image identifier as argument.
|
|
# examples:
|
|
# ViashDockerPullElseBuild mynewcomponent
|
|
function ViashDockerPullElseBuild {
|
|
save=$-; set +e
|
|
ViashDockerPull $1
|
|
out=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $out -ne 0 ]; then
|
|
ViashDockerBuild $@
|
|
fi
|
|
}
|
|
|
|
# ViashDockerSetup: create a Docker image, according to specified docker setup strategy
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# $2 : docker setup strategy, see DockerSetupStrategy.scala
|
|
# examples:
|
|
# ViashDockerSetup mynewcomponent alwaysbuild
|
|
function ViashDockerSetup {
|
|
local image_id="$1"
|
|
local setup_strategy="$2"
|
|
if [ "$setup_strategy" == "alwaysbuild" -o "$setup_strategy" == "build" -o "$setup_strategy" == "b" ]; then
|
|
ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "alwayspull" -o "$setup_strategy" == "pull" -o "$setup_strategy" == "p" ]; then
|
|
ViashDockerPull $image_id
|
|
elif [ "$setup_strategy" == "alwayspullelsebuild" -o "$setup_strategy" == "pullelsebuild" ]; then
|
|
ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "alwayspullelsecachedbuild" -o "$setup_strategy" == "pullelsecachedbuild" ]; then
|
|
ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "alwayscachedbuild" -o "$setup_strategy" == "cachedbuild" -o "$setup_strategy" == "cb" ]; then
|
|
ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id")
|
|
elif [[ "$setup_strategy" =~ ^ifneedbe ]]; then
|
|
local save=$-; set +e
|
|
ViashDockerLocalTagCheck $image_id
|
|
local outCheck=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $outCheck -eq 0 ]; then
|
|
ViashInfo "Image $image_id already exists"
|
|
elif [ "$setup_strategy" == "ifneedbebuild" ]; then
|
|
ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "ifneedbecachedbuild" ]; then
|
|
ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "ifneedbepull" ]; then
|
|
ViashDockerPull $image_id
|
|
elif [ "$setup_strategy" == "ifneedbepullelsebuild" ]; then
|
|
ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
|
|
elif [ "$setup_strategy" == "ifneedbepullelsecachedbuild" ]; then
|
|
ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id")
|
|
else
|
|
ViashError "Unrecognised Docker strategy: $setup_strategy"
|
|
exit 1
|
|
fi
|
|
elif [ "$setup_strategy" == "push" -o "$setup_strategy" == "forcepush" -o "$setup_strategy" == "alwayspush" ]; then
|
|
ViashDockerPush "$image_id"
|
|
elif [ "$setup_strategy" == "pushifnotpresent" -o "$setup_strategy" == "gentlepush" -o "$setup_strategy" == "maybepush" ]; then
|
|
local save=$-; set +e
|
|
ViashDockerRemoteTagCheck $image_id
|
|
local outCheck=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $outCheck -eq 0 ]; then
|
|
ViashNotice "Container '$image_id' exists, doing nothing."
|
|
else
|
|
ViashNotice "Container '$image_id' does not yet exist."
|
|
ViashDockerPush "$image_id"
|
|
fi
|
|
elif [ "$setup_strategy" == "donothing" -o "$setup_strategy" == "meh" ]; then
|
|
ViashNotice "Skipping setup."
|
|
else
|
|
ViashError "Unrecognised Docker strategy: $setup_strategy"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# ViashDockerCheckCommands: Check whether a docker container has the required commands
|
|
#
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# $@ : commands to verify being present
|
|
# examples:
|
|
# ViashDockerCheckCommands bash:4.0 bash ps foo
|
|
function ViashDockerCheckCommands {
|
|
local image_id="$1"
|
|
shift 1
|
|
local commands="$@"
|
|
local save=$-; set +e
|
|
local missing # mark 'missing' as local in advance, otherwise the exit code of the command will be missing and always be '0'
|
|
missing=$(docker run --rm --entrypoint=sh "$image_id" -c "for command in $commands; do command -v \$command >/dev/null 2>&1; if [ \$? -ne 0 ]; then echo \$command; exit 1; fi; done")
|
|
local outCheck=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $outCheck -ne 0 ]; then
|
|
ViashError "Docker container '$image_id' does not contain command '$missing'."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# ViashDockerBuild: build a docker image
|
|
# $1 : image identifier with format `[registry/]image[:tag]`
|
|
# $... : additional arguments to pass to docker build
|
|
# $VIASH_META_TEMP_DIR : temporary directory to store dockerfile & optional resources in
|
|
# $VIASH_META_NAME : name of the component
|
|
# $VIASH_META_RESOURCES_DIR : directory containing the resources
|
|
# $VIASH_VERBOSITY : verbosity level
|
|
# exit code $? : whether or not the image was built successfully
|
|
function ViashDockerBuild {
|
|
local image_id="$1"
|
|
shift 1
|
|
|
|
# create temporary directory to store dockerfile & optional resources in
|
|
local tmpdir=$(mktemp -d "$VIASH_META_TEMP_DIR/dockerbuild-$VIASH_META_NAME-XXXXXX")
|
|
local dockerfile="$tmpdir/Dockerfile"
|
|
function clean_up {
|
|
rm -rf "$tmpdir"
|
|
}
|
|
trap clean_up EXIT
|
|
|
|
# store dockerfile and resources
|
|
ViashDockerfile "$VIASH_ENGINE_ID" > "$dockerfile"
|
|
|
|
# generate the build command
|
|
local docker_build_cmd="docker build -t '$image_id' $@ '$VIASH_META_RESOURCES_DIR' -f '$dockerfile'"
|
|
|
|
# build the container
|
|
ViashNotice "Building container '$image_id' with Dockerfile"
|
|
ViashInfo "$docker_build_cmd"
|
|
local save=$-; set +e
|
|
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
|
|
eval $docker_build_cmd
|
|
else
|
|
eval $docker_build_cmd &> "$tmpdir/docker_build.log"
|
|
fi
|
|
|
|
# check exit code
|
|
local out=$?
|
|
[[ $save =~ e ]] && set -e
|
|
if [ $out -ne 0 ]; then
|
|
ViashError "Error occurred while building container '$image_id'"
|
|
if [ $VIASH_VERBOSITY -lt $VIASH_LOGCODE_INFO ]; then
|
|
ViashError "Transcript: --------------------------------"
|
|
cat "$tmpdir/docker_build.log"
|
|
ViashError "End of transcript --------------------------"
|
|
fi
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
######## End of helper functions for setting up Docker images for viash ########
|
|
|
|
# ViashDockerFile: print the dockerfile to stdout
|
|
# $1 : engine identifier
|
|
# return : dockerfile required to run this component
|
|
# examples:
|
|
# ViashDockerFile
|
|
function ViashDockerfile {
|
|
local engine_id="$1"
|
|
|
|
if [[ "$engine_id" == "docker" ]]; then
|
|
cat << 'VIASHDOCKER'
|
|
FROM quay.io/biocontainers/htslib:1.19--h81da01d_0
|
|
ENTRYPOINT []
|
|
RUN bgzip -h | grep 'Version:' 2>&1 | sed 's/Version:\s\(.*\)/bgzip: "\1"/' > /var/software_versions.txt
|
|
|
|
LABEL org.opencontainers.image.description="Companion container for running component bgzip"
|
|
LABEL org.opencontainers.image.created="2024-06-25T12:35:57Z"
|
|
LABEL org.opencontainers.image.source="https://github.com/samtools/htslib"
|
|
LABEL org.opencontainers.image.revision="73b07a96e07de3b4429499795ef9fee678a96366"
|
|
LABEL org.opencontainers.image.version="main"
|
|
|
|
VIASHDOCKER
|
|
fi
|
|
}
|
|
|
|
# ViashDockerBuildArgs: return the arguments to pass to docker build
|
|
# $1 : engine identifier
|
|
# return : arguments to pass to docker build
|
|
function ViashDockerBuildArgs {
|
|
local engine_id="$1"
|
|
|
|
if [[ "$engine_id" == "docker" ]]; then
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
# ViashAbsolutePath: generate absolute path from relative path
|
|
# borrowed from https://stackoverflow.com/a/21951256
|
|
# $1 : relative filename
|
|
# return : absolute path
|
|
# examples:
|
|
# ViashAbsolutePath some_file.txt # returns /path/to/some_file.txt
|
|
# ViashAbsolutePath /foo/bar/.. # returns /foo
|
|
function ViashAbsolutePath {
|
|
local thePath
|
|
if [[ ! "$1" =~ ^/ ]]; then
|
|
thePath="$PWD/$1"
|
|
else
|
|
thePath="$1"
|
|
fi
|
|
echo "$thePath" | (
|
|
IFS=/
|
|
read -a parr
|
|
declare -a outp
|
|
for i in "${parr[@]}"; do
|
|
case "$i" in
|
|
''|.) continue ;;
|
|
..)
|
|
len=${#outp[@]}
|
|
if ((len==0)); then
|
|
continue
|
|
else
|
|
unset outp[$((len-1))]
|
|
fi
|
|
;;
|
|
*)
|
|
len=${#outp[@]}
|
|
outp[$len]="$i"
|
|
;;
|
|
esac
|
|
done
|
|
echo /"${outp[*]}"
|
|
)
|
|
}
|
|
# ViashDockerAutodetectMount: auto configuring docker mounts from parameters
|
|
# $1 : The parameter value
|
|
# returns : New parameter
|
|
# $VIASH_DIRECTORY_MOUNTS : Added another parameter to be passed to docker
|
|
# examples:
|
|
# ViashDockerAutodetectMount /path/to/bar # returns '/viash_automount/path/to/bar'
|
|
# ViashDockerAutodetectMountArg /path/to/bar # returns '--volume="/path/to:/viash_automount/path/to"'
|
|
function ViashDockerAutodetectMount {
|
|
abs_path=$(ViashAbsolutePath "$1")
|
|
if [ -d "$abs_path" ]; then
|
|
mount_source="$abs_path"
|
|
base_name=""
|
|
else
|
|
mount_source=`dirname "$abs_path"`
|
|
base_name=`basename "$abs_path"`
|
|
fi
|
|
mount_target="/viash_automount$mount_source"
|
|
if [ -z "$base_name" ]; then
|
|
echo "$mount_target"
|
|
else
|
|
echo "$mount_target/$base_name"
|
|
fi
|
|
}
|
|
function ViashDockerAutodetectMountArg {
|
|
abs_path=$(ViashAbsolutePath "$1")
|
|
if [ -d "$abs_path" ]; then
|
|
mount_source="$abs_path"
|
|
base_name=""
|
|
else
|
|
mount_source=`dirname "$abs_path"`
|
|
base_name=`basename "$abs_path"`
|
|
fi
|
|
mount_target="/viash_automount$mount_source"
|
|
ViashDebug "ViashDockerAutodetectMountArg $1 -> $mount_source -> $mount_target"
|
|
echo "--volume=\"$mount_source:$mount_target\""
|
|
}
|
|
function ViashDockerStripAutomount {
|
|
abs_path=$(ViashAbsolutePath "$1")
|
|
echo "${abs_path#/viash_automount}"
|
|
}
|
|
# initialise variables
|
|
VIASH_DIRECTORY_MOUNTS=()
|
|
|
|
# initialise docker variables
|
|
VIASH_DOCKER_RUN_ARGS=(-i --rm)
|
|
|
|
# initialise array
|
|
VIASH_POSITIONAL_ARGS=''
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-h|--help)
|
|
ViashHelp
|
|
exit
|
|
;;
|
|
---v|---verbose)
|
|
let "VIASH_VERBOSITY=VIASH_VERBOSITY+1"
|
|
shift 1
|
|
;;
|
|
---verbosity)
|
|
VIASH_VERBOSITY="$2"
|
|
shift 2
|
|
;;
|
|
---verbosity=*)
|
|
VIASH_VERBOSITY="$(ViashRemoveFlags "$1")"
|
|
shift 1
|
|
;;
|
|
--version)
|
|
echo "bgzip main"
|
|
exit
|
|
;;
|
|
--input)
|
|
[ -n "$VIASH_PAR_INPUT" ] && ViashError Bad arguments for option \'--input\': \'$VIASH_PAR_INPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INPUT="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --input. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--input=*)
|
|
[ -n "$VIASH_PAR_INPUT" ] && ViashError Bad arguments for option \'--input=*\': \'$VIASH_PAR_INPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INPUT=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
--output)
|
|
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_OUTPUT="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--output=*)
|
|
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output=*\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_OUTPUT=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
--index_name)
|
|
[ -n "$VIASH_PAR_INDEX_NAME" ] && ViashError Bad arguments for option \'--index_name\': \'$VIASH_PAR_INDEX_NAME\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INDEX_NAME="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --index_name. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--index_name=*)
|
|
[ -n "$VIASH_PAR_INDEX_NAME" ] && ViashError Bad arguments for option \'--index_name=*\': \'$VIASH_PAR_INDEX_NAME\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INDEX_NAME=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
-I)
|
|
[ -n "$VIASH_PAR_INDEX_NAME" ] && ViashError Bad arguments for option \'-I\': \'$VIASH_PAR_INDEX_NAME\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INDEX_NAME="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to -I. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--offset)
|
|
[ -n "$VIASH_PAR_OFFSET" ] && ViashError Bad arguments for option \'--offset\': \'$VIASH_PAR_OFFSET\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_OFFSET="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --offset. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--offset=*)
|
|
[ -n "$VIASH_PAR_OFFSET" ] && ViashError Bad arguments for option \'--offset=*\': \'$VIASH_PAR_OFFSET\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_OFFSET=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
-b)
|
|
[ -n "$VIASH_PAR_OFFSET" ] && ViashError Bad arguments for option \'-b\': \'$VIASH_PAR_OFFSET\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_OFFSET="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to -b. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--decompress)
|
|
[ -n "$VIASH_PAR_DECOMPRESS" ] && ViashError Bad arguments for option \'--decompress\': \'$VIASH_PAR_DECOMPRESS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_DECOMPRESS=true
|
|
shift 1
|
|
;;
|
|
-d)
|
|
[ -n "$VIASH_PAR_DECOMPRESS" ] && ViashError Bad arguments for option \'-d\': \'$VIASH_PAR_DECOMPRESS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_DECOMPRESS=true
|
|
shift 1
|
|
;;
|
|
--rebgzip)
|
|
[ -n "$VIASH_PAR_REBGZIP" ] && ViashError Bad arguments for option \'--rebgzip\': \'$VIASH_PAR_REBGZIP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_REBGZIP=true
|
|
shift 1
|
|
;;
|
|
-g)
|
|
[ -n "$VIASH_PAR_REBGZIP" ] && ViashError Bad arguments for option \'-g\': \'$VIASH_PAR_REBGZIP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_REBGZIP=true
|
|
shift 1
|
|
;;
|
|
--index)
|
|
[ -n "$VIASH_PAR_INDEX" ] && ViashError Bad arguments for option \'--index\': \'$VIASH_PAR_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INDEX=true
|
|
shift 1
|
|
;;
|
|
-i)
|
|
[ -n "$VIASH_PAR_INDEX" ] && ViashError Bad arguments for option \'-i\': \'$VIASH_PAR_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_INDEX=true
|
|
shift 1
|
|
;;
|
|
--compress_level)
|
|
[ -n "$VIASH_PAR_COMPRESS_LEVEL" ] && ViashError Bad arguments for option \'--compress_level\': \'$VIASH_PAR_COMPRESS_LEVEL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_COMPRESS_LEVEL="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --compress_level. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--compress_level=*)
|
|
[ -n "$VIASH_PAR_COMPRESS_LEVEL" ] && ViashError Bad arguments for option \'--compress_level=*\': \'$VIASH_PAR_COMPRESS_LEVEL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_COMPRESS_LEVEL=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
-l)
|
|
[ -n "$VIASH_PAR_COMPRESS_LEVEL" ] && ViashError Bad arguments for option \'-l\': \'$VIASH_PAR_COMPRESS_LEVEL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_COMPRESS_LEVEL="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to -l. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--reindex)
|
|
[ -n "$VIASH_PAR_REINDEX" ] && ViashError Bad arguments for option \'--reindex\': \'$VIASH_PAR_REINDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_REINDEX=true
|
|
shift 1
|
|
;;
|
|
-r)
|
|
[ -n "$VIASH_PAR_REINDEX" ] && ViashError Bad arguments for option \'-r\': \'$VIASH_PAR_REINDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_REINDEX=true
|
|
shift 1
|
|
;;
|
|
--size)
|
|
[ -n "$VIASH_PAR_SIZE" ] && ViashError Bad arguments for option \'--size\': \'$VIASH_PAR_SIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_SIZE="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to --size. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--size=*)
|
|
[ -n "$VIASH_PAR_SIZE" ] && ViashError Bad arguments for option \'--size=*\': \'$VIASH_PAR_SIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_SIZE=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
-s)
|
|
[ -n "$VIASH_PAR_SIZE" ] && ViashError Bad arguments for option \'-s\': \'$VIASH_PAR_SIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_SIZE="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to -s. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
--test)
|
|
[ -n "$VIASH_PAR_TEST" ] && ViashError Bad arguments for option \'--test\': \'$VIASH_PAR_TEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_TEST=true
|
|
shift 1
|
|
;;
|
|
-t)
|
|
[ -n "$VIASH_PAR_TEST" ] && ViashError Bad arguments for option \'-t\': \'$VIASH_PAR_TEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_TEST=true
|
|
shift 1
|
|
;;
|
|
--binary)
|
|
[ -n "$VIASH_PAR_BINARY" ] && ViashError Bad arguments for option \'--binary\': \'$VIASH_PAR_BINARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_PAR_BINARY=true
|
|
shift 1
|
|
;;
|
|
---engine)
|
|
VIASH_ENGINE_ID="$2"
|
|
shift 2
|
|
;;
|
|
---engine=*)
|
|
VIASH_ENGINE_ID="$(ViashRemoveFlags "$1")"
|
|
shift 1
|
|
;;
|
|
---setup)
|
|
VIASH_MODE='setup'
|
|
VIASH_SETUP_STRATEGY="$2"
|
|
shift 2
|
|
;;
|
|
---setup=*)
|
|
VIASH_MODE='setup'
|
|
VIASH_SETUP_STRATEGY="$(ViashRemoveFlags "$1")"
|
|
shift 1
|
|
;;
|
|
---dockerfile)
|
|
VIASH_MODE='dockerfile'
|
|
shift 1
|
|
;;
|
|
---debug)
|
|
VIASH_MODE='debug'
|
|
shift 1
|
|
;;
|
|
---cpus)
|
|
[ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_META_CPUS="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to ---cpus. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
---cpus=*)
|
|
[ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus=*\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_META_CPUS=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
---memory)
|
|
[ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_META_MEMORY="$2"
|
|
[ $# -lt 2 ] && ViashError Not enough arguments passed to ---memory. Use "--help" to get more information on the parameters. && exit 1
|
|
shift 2
|
|
;;
|
|
---memory=*)
|
|
[ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory=*\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
|
VIASH_META_MEMORY=$(ViashRemoveFlags "$1")
|
|
shift 1
|
|
;;
|
|
*) # positional arg or unknown option
|
|
# since the positional args will be eval'd, can we always quote, instead of using ViashQuote
|
|
VIASH_POSITIONAL_ARGS="$VIASH_POSITIONAL_ARGS '$1'"
|
|
[[ $1 == -* ]] && ViashWarning $1 looks like a parameter but is not a defined parameter and will instead be treated as a positional argument. Use "--help" to get more information on the parameters.
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# parse positional parameters
|
|
eval set -- $VIASH_POSITIONAL_ARGS
|
|
|
|
|
|
if [ "$VIASH_ENGINE_ID" == "native" ] ; then
|
|
VIASH_ENGINE_TYPE='native'
|
|
elif [ "$VIASH_ENGINE_ID" == "docker" ] ; then
|
|
VIASH_ENGINE_TYPE='docker'
|
|
else
|
|
ViashError "Engine '$VIASH_ENGINE_ID' is not recognized. Options are: docker, native."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
# check if docker is installed properly
|
|
ViashDockerInstallationCheck
|
|
|
|
# determine docker image id
|
|
if [[ "$VIASH_ENGINE_ID" == 'docker' ]]; then
|
|
VIASH_DOCKER_IMAGE_ID='images.viash-hub.com/vsh/toolbox/bgzip:main'
|
|
fi
|
|
|
|
# print dockerfile
|
|
if [ "$VIASH_MODE" == "dockerfile" ]; then
|
|
ViashDockerfile "$VIASH_ENGINE_ID"
|
|
exit 0
|
|
|
|
# enter docker container
|
|
elif [[ "$VIASH_MODE" == "debug" ]]; then
|
|
VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} -v '$(pwd)':/pwd --workdir /pwd -t $VIASH_DOCKER_IMAGE_ID"
|
|
ViashNotice "+ $VIASH_CMD"
|
|
eval $VIASH_CMD
|
|
exit
|
|
|
|
# build docker image
|
|
elif [ "$VIASH_MODE" == "setup" ]; then
|
|
ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" "$VIASH_SETUP_STRATEGY"
|
|
ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash'
|
|
exit 0
|
|
fi
|
|
|
|
# check if docker image exists
|
|
ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" ifneedbepullelsecachedbuild
|
|
ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash'
|
|
fi
|
|
|
|
# setting computational defaults
|
|
|
|
# helper function for parsing memory strings
|
|
function ViashMemoryAsBytes {
|
|
local memory=`echo "$1" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]'`
|
|
local memory_regex='^([0-9]+)([kmgtp]i?b?|b)$'
|
|
if [[ $memory =~ $memory_regex ]]; then
|
|
local number=${memory/[^0-9]*/}
|
|
local symbol=${memory/*[0-9]/}
|
|
|
|
case $symbol in
|
|
b) memory_b=$number ;;
|
|
kb|k) memory_b=$(( $number * 1000 )) ;;
|
|
mb|m) memory_b=$(( $number * 1000 * 1000 )) ;;
|
|
gb|g) memory_b=$(( $number * 1000 * 1000 * 1000 )) ;;
|
|
tb|t) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 )) ;;
|
|
pb|p) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 * 1000 )) ;;
|
|
kib|ki) memory_b=$(( $number * 1024 )) ;;
|
|
mib|mi) memory_b=$(( $number * 1024 * 1024 )) ;;
|
|
gib|gi) memory_b=$(( $number * 1024 * 1024 * 1024 )) ;;
|
|
tib|ti) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 )) ;;
|
|
pib|pi) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 * 1024 )) ;;
|
|
esac
|
|
echo "$memory_b"
|
|
fi
|
|
}
|
|
# compute memory in different units
|
|
if [ ! -z ${VIASH_META_MEMORY+x} ]; then
|
|
VIASH_META_MEMORY_B=`ViashMemoryAsBytes $VIASH_META_MEMORY`
|
|
# do not define other variables if memory_b is an empty string
|
|
if [ ! -z "$VIASH_META_MEMORY_B" ]; then
|
|
VIASH_META_MEMORY_KB=$(( ($VIASH_META_MEMORY_B+999) / 1000 ))
|
|
VIASH_META_MEMORY_MB=$(( ($VIASH_META_MEMORY_KB+999) / 1000 ))
|
|
VIASH_META_MEMORY_GB=$(( ($VIASH_META_MEMORY_MB+999) / 1000 ))
|
|
VIASH_META_MEMORY_TB=$(( ($VIASH_META_MEMORY_GB+999) / 1000 ))
|
|
VIASH_META_MEMORY_PB=$(( ($VIASH_META_MEMORY_TB+999) / 1000 ))
|
|
VIASH_META_MEMORY_KIB=$(( ($VIASH_META_MEMORY_B+1023) / 1024 ))
|
|
VIASH_META_MEMORY_MIB=$(( ($VIASH_META_MEMORY_KIB+1023) / 1024 ))
|
|
VIASH_META_MEMORY_GIB=$(( ($VIASH_META_MEMORY_MIB+1023) / 1024 ))
|
|
VIASH_META_MEMORY_TIB=$(( ($VIASH_META_MEMORY_GIB+1023) / 1024 ))
|
|
VIASH_META_MEMORY_PIB=$(( ($VIASH_META_MEMORY_TIB+1023) / 1024 ))
|
|
else
|
|
# unset memory if string is empty
|
|
unset $VIASH_META_MEMORY_B
|
|
fi
|
|
fi
|
|
# unset nproc if string is empty
|
|
if [ -z "$VIASH_META_CPUS" ]; then
|
|
unset $VIASH_META_CPUS
|
|
fi
|
|
|
|
|
|
# check whether required parameters exist
|
|
if [ -z ${VIASH_PAR_INPUT+x} ]; then
|
|
ViashError '--input' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_PAR_OUTPUT+x} ]; then
|
|
ViashError '--output' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_NAME+x} ]; then
|
|
ViashError 'name' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then
|
|
ViashError 'functionality_name' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_RESOURCES_DIR+x} ]; then
|
|
ViashError 'resources_dir' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_EXECUTABLE+x} ]; then
|
|
ViashError 'executable' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_CONFIG+x} ]; then
|
|
ViashError 'config' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [ -z ${VIASH_META_TEMP_DIR+x} ]; then
|
|
ViashError 'temp_dir' is a required argument. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
|
|
# filling in defaults
|
|
if [ -z ${VIASH_PAR_DECOMPRESS+x} ]; then
|
|
VIASH_PAR_DECOMPRESS="false"
|
|
fi
|
|
if [ -z ${VIASH_PAR_REBGZIP+x} ]; then
|
|
VIASH_PAR_REBGZIP="false"
|
|
fi
|
|
if [ -z ${VIASH_PAR_INDEX+x} ]; then
|
|
VIASH_PAR_INDEX="false"
|
|
fi
|
|
if [ -z ${VIASH_PAR_REINDEX+x} ]; then
|
|
VIASH_PAR_REINDEX="false"
|
|
fi
|
|
if [ -z ${VIASH_PAR_TEST+x} ]; then
|
|
VIASH_PAR_TEST="false"
|
|
fi
|
|
if [ -z ${VIASH_PAR_BINARY+x} ]; then
|
|
VIASH_PAR_BINARY="false"
|
|
fi
|
|
|
|
# check whether required files exist
|
|
if [ ! -z "$VIASH_PAR_INPUT" ] && [ ! -e "$VIASH_PAR_INPUT" ]; then
|
|
ViashError "Input file '$VIASH_PAR_INPUT' does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# check whether parameters values are of the right type
|
|
if [[ -n "$VIASH_PAR_OFFSET" ]]; then
|
|
if ! [[ "$VIASH_PAR_OFFSET" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError '--offset' has to be an integer. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_DECOMPRESS" ]]; then
|
|
if ! [[ "$VIASH_PAR_DECOMPRESS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--decompress' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_REBGZIP" ]]; then
|
|
if ! [[ "$VIASH_PAR_REBGZIP" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--rebgzip' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_INDEX" ]]; then
|
|
if ! [[ "$VIASH_PAR_INDEX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--index' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_COMPRESS_LEVEL" ]]; then
|
|
if ! [[ "$VIASH_PAR_COMPRESS_LEVEL" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError '--compress_level' has to be an integer. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [[ $VIASH_PAR_COMPRESS_LEVEL -lt -1 ]]; then
|
|
ViashError '--compress_level' has be more than or equal to -1. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [[ $VIASH_PAR_COMPRESS_LEVEL -gt 9 ]]; then
|
|
ViashError '--compress_level' has be less than or equal to 9. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_REINDEX" ]]; then
|
|
if ! [[ "$VIASH_PAR_REINDEX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--reindex' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_SIZE" ]]; then
|
|
if ! [[ "$VIASH_PAR_SIZE" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError '--size' has to be an integer. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
if [[ $VIASH_PAR_SIZE -lt 0 ]]; then
|
|
ViashError '--size' has be more than or equal to 0. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_TEST" ]]; then
|
|
if ! [[ "$VIASH_PAR_TEST" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--test' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_PAR_BINARY" ]]; then
|
|
if ! [[ "$VIASH_PAR_BINARY" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
|
ViashError '--binary' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_CPUS" ]]; then
|
|
if ! [[ "$VIASH_META_CPUS" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'cpus' has to be an integer. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_B" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_B" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_b' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_KB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_KB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_kb' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_MB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_MB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_mb' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_GB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_GB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_gb' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_TB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_TB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_tb' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_PB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_PB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_pb' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_KIB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_KIB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_kib' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_MIB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_MIB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_mib' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_GIB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_GIB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_gib' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_TIB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_TIB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_tib' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ -n "$VIASH_META_MEMORY_PIB" ]]; then
|
|
if ! [[ "$VIASH_META_MEMORY_PIB" =~ ^[-+]?[0-9]+$ ]]; then
|
|
ViashError 'memory_pib' has to be a long. Use "--help" to get more information on the parameters.
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# create parent directories of output files, if so desired
|
|
if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT")" ]; then
|
|
mkdir -p "$(dirname "$VIASH_PAR_OUTPUT")"
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_INDEX_NAME" ] && [ ! -d "$(dirname "$VIASH_PAR_INDEX_NAME")" ]; then
|
|
mkdir -p "$(dirname "$VIASH_PAR_INDEX_NAME")"
|
|
fi
|
|
|
|
if [ "$VIASH_ENGINE_ID" == "native" ] ; then
|
|
if [ "$VIASH_MODE" == "run" ]; then
|
|
VIASH_CMD="bash"
|
|
else
|
|
ViashError "Engine '$VIASH_ENGINE_ID' does not support mode '$VIASH_MODE'."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
# detect volumes from file arguments
|
|
VIASH_CHOWN_VARS=()
|
|
if [ ! -z "$VIASH_PAR_INPUT" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_INPUT")" )
|
|
VIASH_PAR_INPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_INPUT")
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT")" )
|
|
VIASH_PAR_OUTPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT")
|
|
VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT" )
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_INDEX_NAME" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_INDEX_NAME")" )
|
|
VIASH_PAR_INDEX_NAME=$(ViashDockerAutodetectMount "$VIASH_PAR_INDEX_NAME")
|
|
VIASH_CHOWN_VARS+=( "$VIASH_PAR_INDEX_NAME" )
|
|
fi
|
|
if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_RESOURCES_DIR")" )
|
|
VIASH_META_RESOURCES_DIR=$(ViashDockerAutodetectMount "$VIASH_META_RESOURCES_DIR")
|
|
fi
|
|
if [ ! -z "$VIASH_META_EXECUTABLE" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_EXECUTABLE")" )
|
|
VIASH_META_EXECUTABLE=$(ViashDockerAutodetectMount "$VIASH_META_EXECUTABLE")
|
|
fi
|
|
if [ ! -z "$VIASH_META_CONFIG" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_CONFIG")" )
|
|
VIASH_META_CONFIG=$(ViashDockerAutodetectMount "$VIASH_META_CONFIG")
|
|
fi
|
|
if [ ! -z "$VIASH_META_TEMP_DIR" ]; then
|
|
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_TEMP_DIR")" )
|
|
VIASH_META_TEMP_DIR=$(ViashDockerAutodetectMount "$VIASH_META_TEMP_DIR")
|
|
fi
|
|
|
|
# get unique mounts
|
|
VIASH_UNIQUE_MOUNTS=($(for val in "${VIASH_DIRECTORY_MOUNTS[@]}"; do echo "$val"; done | sort -u))
|
|
fi
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
# change file ownership
|
|
function ViashPerformChown {
|
|
if (( ${#VIASH_CHOWN_VARS[@]} )); then
|
|
set +e
|
|
VIASH_CMD="docker run --entrypoint=bash --rm ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID -c 'chown $(id -u):$(id -g) --silent --recursive ${VIASH_CHOWN_VARS[@]}'"
|
|
ViashDebug "+ $VIASH_CMD"
|
|
eval $VIASH_CMD
|
|
set -e
|
|
fi
|
|
}
|
|
trap ViashPerformChown EXIT
|
|
fi
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
# helper function for filling in extra docker args
|
|
if [ ! -z "$VIASH_META_MEMORY_B" ]; then
|
|
VIASH_DOCKER_RUN_ARGS+=("--memory=${VIASH_META_MEMORY_B}")
|
|
fi
|
|
if [ ! -z "$VIASH_META_CPUS" ]; then
|
|
VIASH_DOCKER_RUN_ARGS+=("--cpus=${VIASH_META_CPUS}")
|
|
fi
|
|
fi
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID"
|
|
fi
|
|
|
|
|
|
# set dependency paths
|
|
|
|
|
|
ViashDebug "Running command: $(echo $VIASH_CMD)"
|
|
cat << VIASHEOF | eval $VIASH_CMD
|
|
set -e
|
|
tempscript=\$(mktemp "$VIASH_META_TEMP_DIR/viash-run-bgzip-XXXXXX").sh
|
|
function clean_up {
|
|
rm "\$tempscript"
|
|
}
|
|
function interrupt {
|
|
echo -e "\nCTRL-C Pressed..."
|
|
exit 1
|
|
}
|
|
trap clean_up EXIT
|
|
trap interrupt INT SIGINT
|
|
cat > "\$tempscript" << 'VIASHMAIN'
|
|
## VIASH START
|
|
# The following code has been auto-generated by Viash.
|
|
$( if [ ! -z ${VIASH_PAR_INPUT+x} ]; then echo "${VIASH_PAR_INPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_input='&'#" ; else echo "# par_input="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_INDEX_NAME+x} ]; then echo "${VIASH_PAR_INDEX_NAME}" | sed "s#'#'\"'\"'#g;s#.*#par_index_name='&'#" ; else echo "# par_index_name="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_OFFSET+x} ]; then echo "${VIASH_PAR_OFFSET}" | sed "s#'#'\"'\"'#g;s#.*#par_offset='&'#" ; else echo "# par_offset="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_DECOMPRESS+x} ]; then echo "${VIASH_PAR_DECOMPRESS}" | sed "s#'#'\"'\"'#g;s#.*#par_decompress='&'#" ; else echo "# par_decompress="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_REBGZIP+x} ]; then echo "${VIASH_PAR_REBGZIP}" | sed "s#'#'\"'\"'#g;s#.*#par_rebgzip='&'#" ; else echo "# par_rebgzip="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_INDEX+x} ]; then echo "${VIASH_PAR_INDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_index='&'#" ; else echo "# par_index="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_COMPRESS_LEVEL+x} ]; then echo "${VIASH_PAR_COMPRESS_LEVEL}" | sed "s#'#'\"'\"'#g;s#.*#par_compress_level='&'#" ; else echo "# par_compress_level="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_REINDEX+x} ]; then echo "${VIASH_PAR_REINDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_reindex='&'#" ; else echo "# par_reindex="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_SIZE+x} ]; then echo "${VIASH_PAR_SIZE}" | sed "s#'#'\"'\"'#g;s#.*#par_size='&'#" ; else echo "# par_size="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_TEST+x} ]; then echo "${VIASH_PAR_TEST}" | sed "s#'#'\"'\"'#g;s#.*#par_test='&'#" ; else echo "# par_test="; fi )
|
|
$( if [ ! -z ${VIASH_PAR_BINARY+x} ]; then echo "${VIASH_PAR_BINARY}" | sed "s#'#'\"'\"'#g;s#.*#par_binary='&'#" ; else echo "# par_binary="; fi )
|
|
$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi )
|
|
$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi )
|
|
$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi )
|
|
$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\"'\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi )
|
|
$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi )
|
|
$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi )
|
|
$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\"'\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi )
|
|
$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi )
|
|
|
|
## VIASH END
|
|
#!/bin/bash
|
|
|
|
[[ "\$par_decompress" == "false" ]] && unset par_decompress
|
|
[[ "\$par_rebgzip" == "false" ]] && unset par_rebgzip
|
|
[[ "\$par_index" == "false" ]] && unset par_index
|
|
[[ "\$par_reindex" == "false" ]] && unset par_reindex
|
|
[[ "\$par_test" == "false" ]] && unset par_test
|
|
[[ "\$par_binary" == "false" ]] && unset par_binary
|
|
bgzip -c \\
|
|
\${meta_cpus:+--threads "\${meta_cpus}"} \\
|
|
\${par_offset:+-b "\${par_offset}"} \\
|
|
\${par_decompress:+-d} \\
|
|
\${par_rebgzip:+-g} \\
|
|
\${par_index:+-i} \\
|
|
\${par_index_name:+-I "\${par_index_name}"} \\
|
|
\${par_compress_level:+-l "\${par_compress_level}"} \\
|
|
\${par_reindex:+-r} \\
|
|
\${par_size:+-s "\${par_size}"} \\
|
|
\${par_test:+-t} \\
|
|
\${par_binary:+--binary} \\
|
|
"\$par_input" > "\$par_output"
|
|
VIASHMAIN
|
|
bash "\$tempscript" &
|
|
wait "\$!"
|
|
|
|
VIASHEOF
|
|
|
|
|
|
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
|
# strip viash automount from file paths
|
|
|
|
if [ ! -z "$VIASH_PAR_INPUT" ]; then
|
|
VIASH_PAR_INPUT=$(ViashDockerStripAutomount "$VIASH_PAR_INPUT")
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
|
|
VIASH_PAR_OUTPUT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT")
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_INDEX_NAME" ]; then
|
|
VIASH_PAR_INDEX_NAME=$(ViashDockerStripAutomount "$VIASH_PAR_INDEX_NAME")
|
|
fi
|
|
if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then
|
|
VIASH_META_RESOURCES_DIR=$(ViashDockerStripAutomount "$VIASH_META_RESOURCES_DIR")
|
|
fi
|
|
if [ ! -z "$VIASH_META_EXECUTABLE" ]; then
|
|
VIASH_META_EXECUTABLE=$(ViashDockerStripAutomount "$VIASH_META_EXECUTABLE")
|
|
fi
|
|
if [ ! -z "$VIASH_META_CONFIG" ]; then
|
|
VIASH_META_CONFIG=$(ViashDockerStripAutomount "$VIASH_META_CONFIG")
|
|
fi
|
|
if [ ! -z "$VIASH_META_TEMP_DIR" ]; then
|
|
VIASH_META_TEMP_DIR=$(ViashDockerStripAutomount "$VIASH_META_TEMP_DIR")
|
|
fi
|
|
fi
|
|
|
|
|
|
# check whether required files exist
|
|
if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -e "$VIASH_PAR_OUTPUT" ]; then
|
|
ViashError "Output file '$VIASH_PAR_OUTPUT' does not exist."
|
|
exit 1
|
|
fi
|
|
if [ ! -z "$VIASH_PAR_INDEX_NAME" ] && [ ! -e "$VIASH_PAR_INDEX_NAME" ]; then
|
|
ViashError "Output file '$VIASH_PAR_INDEX_NAME' does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
exit 0
|