1- #!/usr/bin/env python
1+ #!/usr/bin/env/ python
22
33import argparse
44import json
@@ -17,6 +17,10 @@ def parse_config():
1717 home = os .path .expanduser ("~" )
1818 config_file = os .path .join (home , ".osdf" )
1919
20+ if not os .path .isfile (config_file ):
21+ sys .stderr .write ("No configuration file. Please execute 'osdf init'.\n " )
22+ sys .exit (1 )
23+
2024 perms = oct (os .stat (config_file ).st_mode & 0777 )
2125 if perms != '0400' :
2226 msg = "Permissions on config {} are too loose. Should be 0400."
@@ -309,14 +313,33 @@ def cat(args):
309313 """
310314 # TODO: Honor multiple node IDs?
311315 node_id = args .node
316+ version = args .version
312317
313- try :
314- client = get_client ()
315- data = client .get_node (node_id )
316- print (json .dumps (data , indent = 2 , sort_keys = True ))
317- except Exception as e :
318- sys .stderr .write ("Unable to retrieve node \" {}\" .\n " .format (node_id ))
319- sys .exit (1 )
318+ def node_getter (node_id , version ):
319+ data = None
320+
321+ try :
322+ client = get_client ()
323+
324+ if version is None :
325+ data = client .get_node (node_id )
326+ else :
327+ data = client .get_node_by_version (node_id , version )
328+ except Exception as e :
329+ if version is not None :
330+ msg = "Unable to retrieve node \" {}\" version {}.\n "
331+ sys .stderr .write (msg .format (node_id , version ))
332+ else :
333+ msg = "Unable to retrieve node \" {}\" .\n "
334+ sys .stderr .write (msg .format (node_id ))
335+
336+ sys .exit (1 )
337+
338+ return data ;
339+
340+ data = node_getter (node_id , version )
341+
342+ print (json .dumps (data , indent = 2 , sort_keys = True ))
320343
321344def delete (args ):
322345 """
@@ -345,6 +368,9 @@ def main():
345368 # Create the parser for the "cat" command
346369 parser_cat = subparsers .add_parser ('cat' , help = 'Dump a node to STDOUT.' )
347370 parser_cat .add_argument ('node' , type = str , help = 'A node ID.' )
371+ parser_cat .add_argument ('-v' , '--version' , type = str ,
372+ help = "Specify a specific version of the node to retrieve. " +
373+ "Defaults to the latest version if not provided." )
348374 parser_cat .set_defaults (func = cat )
349375
350376 parser_info = subparsers .add_parser ('info' ,
0 commit comments