11import  argparse 
22from  datetime  import  datetime 
33import  json 
4+ import  logging 
5+ import  sys 
46
57from  client  import  GenomeSpaceClient 
68import  util 
9+ log  =  logging .getLogger (__name__ )
710
811
912def  get_client (args ):
@@ -33,7 +36,8 @@ def genomespace_list_files(args):
3336            last_modified = dir .get ("lastModified" , "" ),
3437            name = dir .get ("name" )))
3538
36- if  __name__  ==  "__main__" :
39+ 
40+ def  process_args (args ):
3741    parser  =  argparse .ArgumentParser ()
3842
3943    grp_auth_userpass  =  parser .add_argument_group (
@@ -49,6 +53,10 @@ def genomespace_list_files(args):
4953        '-t' , '--token' , type = str ,
5054        help = "GenomeSpace auth token" ,
5155        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" )
5260    subparsers  =  parser .add_subparsers (metavar = '<subcommand>' )
5361
5462    # upload commands 
@@ -91,5 +99,33 @@ def genomespace_list_files(args):
9199                                help = "GenomeSpace URI of file/folder to delete" )
92100    gs_list_parser .set_defaults (func = genomespace_delete_files )
93101
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