1
1
import argparse
2
2
from datetime import datetime
3
3
import json
4
+ import logging
5
+ import sys
4
6
5
7
from client import GenomeSpaceClient
6
8
import util
9
+ log = logging .getLogger (__name__ )
7
10
8
11
9
12
def get_client (args ):
@@ -33,7 +36,8 @@ def genomespace_list_files(args):
33
36
last_modified = dir .get ("lastModified" , "" ),
34
37
name = dir .get ("name" )))
35
38
36
- if __name__ == "__main__" :
39
+
40
+ def process_args (args ):
37
41
parser = argparse .ArgumentParser ()
38
42
39
43
grp_auth_userpass = parser .add_argument_group (
@@ -49,6 +53,10 @@ def genomespace_list_files(args):
49
53
'-t' , '--token' , type = str ,
50
54
help = "GenomeSpace auth token" ,
51
55
required = False )
56
+
57
+ parser .add_argument ("-v" , "--verbose" , action = "count" ,
58
+ dest = "verbosity_count" , default = 0 ,
59
+ help = "increases log verbosity for each occurrence" )
52
60
subparsers = parser .add_subparsers (metavar = '<subcommand>' )
53
61
54
62
# upload commands
@@ -91,5 +99,33 @@ def genomespace_list_files(args):
91
99
help = "GenomeSpace URI of file/folder to delete" )
92
100
gs_list_parser .set_defaults (func = genomespace_delete_files )
93
101
94
- args = parser .parse_args ()
95
- args .func (args )
102
+ args = parser .parse_args (args [1 :])
103
+ return args
104
+
105
+
106
+ def configure_logging (verbosity_count ):
107
+ if verbosity_count < 3 :
108
+ logging .getLogger ('requests' ).setLevel (logging .ERROR )
109
+ # set global logging level
110
+ logging .basicConfig (
111
+ stream = sys .stdout ,
112
+ level = logging .DEBUG if verbosity_count > 3 else logging .INFO ,
113
+ format = '%(levelname)-5s: %(name)s: %(message)s' )
114
+ # Set client log level
115
+ if verbosity_count :
116
+ log .setLevel (max (4 - verbosity_count , 1 ) * 10 )
117
+ else :
118
+ log .setLevel (logging .INFO )
119
+
120
+
121
+ def main ():
122
+ try :
123
+ args = process_args (sys .argv )
124
+ configure_logging (args .verbosity_count )
125
+ # invoke subcommand
126
+ args .func (args )
127
+ finally :
128
+ logging .shutdown ()
129
+
130
+ if __name__ == "__main__" :
131
+ sys .exit (main ())
0 commit comments