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