annotate extract-from-isa @ 0:deb654d58b15 draft default tip

"planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
author prog
date Wed, 08 Jan 2020 12:47:49 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
1 #!/bin/bash
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
2 # vi: fdm=marker
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
3
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
4 # Constants {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
5 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
6
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
7 PROG_NAME=$(basename $0)
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
8 PROG_PATH=$(dirname $0)
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
9 YES=yes
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
10 NO=no
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
11
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
12 # Global variables {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
13 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
14
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
15 DEBUG=0
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
16 EXT=
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
17 INPUT_DIR=
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
18 OUTPUT_DIR=
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
19 SYMLINK=$NO
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
20
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
21 # Print help {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
22 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
23
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
24 function print_help {
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
25 echo "Usage: $PROG_NAME -i <ISA_DIR> -e <EXT> -o <OUTPUT_DIR>"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
26 echo
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
27 echo "Extract files with a given extension from ISA-Tab archives into a collection."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
28 echo
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
29 echo "Options:"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
30 echo " -e, --ext EXT The extension of the files to find."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
31 echo " -h, --help Print this help message."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
32 echo " -i, --input DIR Input directory containing ISA archive."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
33 echo " -o, --output DIR Set the output directory to use."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
34 echo " -s, --symlink Create symbolic links instead of copying files."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
35 }
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
36
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
37 # Error {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
38 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
39
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
40 function error {
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
41
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
42 local msg=$1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
43
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
44 echo "ERROR: $msg" >&2
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
45
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
46 exit 1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
47 }
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
48
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
49 # Print debug msg {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
50 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
51
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
52 function print_debug_msg {
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
53
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
54 local dbglvl=$1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
55 local dbgmsg=$2
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
56
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
57 [ $DEBUG -ge $dbglvl ] && echo "[DEBUG] $dbgmsg" >&2
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
58 }
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
59
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
60 # Read args {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
61 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
62
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
63 function read_args {
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
64
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
65 local args="$*" # save arguments for debugging purpose
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
66
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
67 # Read options
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
68 while true ; do
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
69 shift_count=1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
70 case $1 in
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
71 -e|--ext) EXT="$2" ; shift_count=2 ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
72 -g|--debug) DEBUG=$((DEBUG + 1)) ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
73 -h|--help) print_help ; exit 0 ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
74 -i|--input) INPUT_DIR="$2" ; shift_count=2 ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
75 -o|--output) OUTPUT_DIR="$2" ; shift_count=2 ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
76 -s|--symlink) SYMLINK=$YES ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
77 -) error "Illegal option $1." ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
78 --) error "Illegal option $1." ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
79 --*) error "Illegal option $1." ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
80 -?) error "Unknown option $1." ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
81 -[^-]*) split_opt=$(echo $1 | sed 's/^-//' | sed 's/\([a-zA-Z]\)/ -\1/g') ; set -- $1$split_opt "${@:2}" ;;
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
82 *) break
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
83 esac
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
84 shift $shift_count
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
85 done
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
86 shift $((OPTIND - 1))
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
87
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
88 # Debug
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
89 print_debug_msg 1 "Arguments are : $args"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
90
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
91 # Check input params
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
92 [[ $# -eq 0 ]] || error "No remaining arguments are allowed."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
93 [[ -n $INPUT_DIR ]] || error "You must specify an input directory, using -i option."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
94 [[ -d $INPUT_DIR ]] || error "\"$INPUT_DIR\" is not a valid directory."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
95 [[ -n $OUTPUT_DIR ]] || error "You must specify an output directory, using -o option."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
96 [[ ! -e $OUTPUT_DIR ]] || error "\"$OUTPUT_DIR\" already exists."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
97 [[ -n $EXT ]] || error "You must specify the extension of the files you are looking for, with the -e option."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
98 }
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
99
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
100 # MAIN {{{1
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
101 ################################################################
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
102
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
103 read_args "$@"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
104
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
105 # Create output directory
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
106 print_debug_msg 1 "Create output directory \"$OUTPUT_DIR\"."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
107 mkdir -p "$OUTPUT_DIR"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
108
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
109 # Find files to extract
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
110 print_debug_msg 1 "Find \"$EXT\" files to extract in \"$INPUT_DIR\"."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
111 files_to_extract=$(mktemp -t tmp.XXXXXX)
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
112 find "$(realpath $INPUT_DIR)" -iname "*.$EXT" >files_to_extract
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
113 print_debug_msg 1 "Files to extract:"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
114 if [[ $DEBUG -ge 1 ]] ; then
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
115 cat files_to_extract >&2
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
116 fi
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
117
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
118 # Extract files
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
119 if [[ $SYMLINK == $YES ]] ; then
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
120 print_debug_msg 1 "Create symbolic links of all \"$EXT\" files to extract into \"$OUTPUT_DIR\"."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
121 xargs -I % ln -s % "$OUTPUT_DIR" <files_to_extract
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
122 else
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
123 print_debug_msg 1 "Copy all \"$EXT\" files to extract to \"$OUTPUT_DIR\"."
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
124 xargs -I % cp % "$OUTPUT_DIR" <files_to_extract
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
125 fi
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
126 rm files_to_extract
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
127 print_debug_msg 1 "Files extracted:"
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
128 if [[ $DEBUG -ge 1 ]] ; then
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
129 ls -1 "$OUTPUT_DIR" >&2
deb654d58b15 "planemo upload commit c2694fb4aa55c4f25eb53db73496eaf5e56d7872"
prog
parents:
diff changeset
130 fi