From 250dc2d0bf88d9726696679acfe3d6d90661cdc0 Mon Sep 17 00:00:00 2001 From: Rodolphe Breard Date: Sat, 5 Sep 2015 16:03:34 +0200 Subject: [PATCH] arguments parsing --- vcf_compressor.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 vcf_compressor.sh diff --git a/vcf_compressor.sh b/vcf_compressor.sh new file mode 100755 index 0000000..3ddc164 --- /dev/null +++ b/vcf_compressor.sh @@ -0,0 +1,90 @@ +#!/bin/bash +## Copyright (c) 2015 Rodolphe Breard +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +set -euo pipefail +IFS=$'\n\t' + +version () { + echo "VCF Compressor 0.1.0-dev" + exit 0 +} + +usage () { + exit_status="${1:-1}" + echo "Usage: vcf_compressor [OPTION]... VCF_FILE" + echo "" + echo "Options:" + echo " -o, --output" + echo " -v, --verbose" + echo " -V, --version" + echo " -h, --help" + exit "$exit_status" +} + +echo_verbose () { + if [ $verbose -gt 0 ]; then + echo "$@" + fi +} + +input_file="" +output_file="" +verbose=0 + +while :; do + test $# -gt 0 || break + case "$1" in + -o|--output) + if [ -n "$2" ]; then + output_file="$2" + shift 2 + continue + else + usage + fi + ;; + -v|--verbose) + verbose=1 + shift + ;; + -V|--version) + version + ;; + -h|--help) + usage 0 + ;; + *) + if [ -z "$input_file" ]; then + input_file="$1" + shift + continue + else + usage + fi + ;; + esac +done +test -z "$input_file" && usage +if [ -z "$output_file" ]; then + dir=$(dirname "$input_file") + name=$(basename "$input_file" ".vcf") + output_file="$dir/$name.new.vcf" +fi + +echo "in: $input_file" +echo "out: $output_file" +echo_verbose "verbose mode on"