@@ -55,6 +55,7 @@ int usage()
55
55
std::cerr << " get_block <slot_number> [options]" << std::endl;
56
56
std::cerr << " get_product <prod_key> [options]" << std::endl;
57
57
std::cerr << " get_product_list [options]" << std::endl;
58
+ std::cerr << " get_all_products [options]" << std::endl;
58
59
std::cerr << " get_pub_key <key_pair_file>" << std::endl;
59
60
std::cerr << " version" << std::endl;
60
61
std::cerr << std::endl;
@@ -74,6 +75,8 @@ int usage()
74
75
std::cerr << " -j\n "
75
76
<< " Output results in json format where applicable\n "
76
77
<< std::endl;
78
+ std::cerr << " -d" << std::endl;
79
+ std::cerr << " Turn on debug logging\n " << std::endl;
77
80
return 1 ;
78
81
}
79
82
@@ -311,12 +314,13 @@ int on_get_balance( int argc, char **argv )
311
314
commitment cmt = commitment::e_confirmed;
312
315
std::string rpc_host = get_rpc_host ();
313
316
std::string key_dir = get_key_store ();
314
- while ( (opt = ::getopt (argc,argv, " r:k:p:c:h " )) != -1 ) {
317
+ while ( (opt = ::getopt (argc,argv, " r:k:p:c:dh " )) != -1 ) {
315
318
switch (opt) {
316
319
case ' r' : rpc_host = optarg; break ;
317
320
case ' k' : key_dir = optarg; break ;
318
321
case ' p' : knm = optarg; break ;
319
322
case ' c' : cmt = str_to_commitment (optarg); break ;
323
+ case ' d' : log::set_level ( PC_LOG_DBG_LVL ); break ;
320
324
default : return usage ();
321
325
}
322
326
}
@@ -1011,6 +1015,11 @@ int on_get_product_list( int argc, char **argv )
1011
1015
std::cerr << " pyth: " << mgr.get_err_msg () << std::endl;
1012
1016
return 1 ;
1013
1017
}
1018
+ if ( !mgr.has_status ( PC_PYTH_HAS_MAPPING ) ) {
1019
+ std::cerr << " pyth: mapping not ready, check mapping key ["
1020
+ << mgr.get_mapping_pub_key_file () << " ]" << std::endl;
1021
+ return 1 ;
1022
+ }
1014
1023
// list key/symbol pairs
1015
1024
if ( !do_json ) {
1016
1025
std::string astr;
@@ -1203,6 +1212,11 @@ int on_get_product( int argc, char **argv )
1203
1212
std::cerr << " pyth: " << mgr.get_err_msg () << std::endl;
1204
1213
return 1 ;
1205
1214
}
1215
+ if ( !mgr.has_status ( PC_PYTH_HAS_MAPPING ) ) {
1216
+ std::cerr << " pyth: mapping not ready, check mapping key ["
1217
+ << mgr.get_mapping_pub_key_file () << " ]" << std::endl;
1218
+ return 1 ;
1219
+ }
1206
1220
// get product and serialize to stdout
1207
1221
product *prod = mgr.get_product ( pub );
1208
1222
if ( !prod ) {
@@ -1217,6 +1231,68 @@ int on_get_product( int argc, char **argv )
1217
1231
return 0 ;
1218
1232
}
1219
1233
1234
+ int on_get_all_products ( int argc, char **argv )
1235
+ {
1236
+ int opt = 0 ;
1237
+ bool do_json = false ;
1238
+ commitment cmt = commitment::e_confirmed;
1239
+ std::string rpc_host = get_rpc_host ();
1240
+ std::string key_dir = get_key_store ();
1241
+ while ( (opt = ::getopt (argc,argv, " r:k:c:djh" )) != -1 ) {
1242
+ switch (opt) {
1243
+ case ' r' : rpc_host = optarg; break ;
1244
+ case ' k' : key_dir = optarg; break ;
1245
+ case ' d' : log::set_level ( PC_LOG_DBG_LVL ); break ;
1246
+ case ' j' : do_json = true ; break ;
1247
+ case ' c' : cmt = str_to_commitment (optarg); break ;
1248
+ default : return usage ();
1249
+ }
1250
+ }
1251
+ if ( cmt == commitment::e_unknown ) {
1252
+ std::cerr << " pyth: unknown commitment level" << std::endl;
1253
+ return usage ();
1254
+ }
1255
+
1256
+ // initialize connection to block-chain
1257
+ manager mgr;
1258
+ mgr.set_rpc_host ( rpc_host );
1259
+ mgr.set_dir ( key_dir );
1260
+ mgr.set_do_tx ( false );
1261
+ mgr.set_commitment ( cmt );
1262
+ if ( !mgr.init () || !mgr.bootstrap () ) {
1263
+ std::cerr << " pyth: " << mgr.get_err_msg () << std::endl;
1264
+ return 1 ;
1265
+ }
1266
+ if ( !mgr.has_status ( PC_PYTH_HAS_MAPPING ) ) {
1267
+ std::cerr << " pyth: mapping not ready, check mapping key ["
1268
+ << mgr.get_mapping_pub_key_file () << " ]" << std::endl;
1269
+ return 1 ;
1270
+ }
1271
+
1272
+ // get all products and serialize to stdout
1273
+ if ( !do_json ) {
1274
+ for (unsigned i=0 ; i != mgr.get_num_product (); ++i ) {
1275
+ product *prod = mgr.get_product (i);
1276
+ print_product ( prod );
1277
+ std::cout << std::endl;
1278
+ }
1279
+ } else {
1280
+ std::cout << " [" ;
1281
+ bool first = true ;
1282
+ for (unsigned i=0 ; i != mgr.get_num_product (); ++i ) {
1283
+ product *prod = mgr.get_product (i);
1284
+ if ( !first ) {
1285
+ std::cout << " ," ;
1286
+ }
1287
+ print_product_json ( prod );
1288
+ first = false ;
1289
+ }
1290
+ std::cout << " ]" ;
1291
+ }
1292
+
1293
+ return 0 ;
1294
+ }
1295
+
1220
1296
class get_block_print : public get_block
1221
1297
{
1222
1298
public:
@@ -1434,6 +1510,8 @@ int main(int argc, char **argv)
1434
1510
rc = on_get_product ( argc, argv );
1435
1511
} else if ( cmd == " get_product_list" ) {
1436
1512
rc = on_get_product_list ( argc, argv );
1513
+ } else if ( cmd == " get_all_products" ) {
1514
+ rc = on_get_all_products ( argc, argv );
1437
1515
} else if ( cmd == " get_block" ) {
1438
1516
rc = on_get_block ( argc, argv );
1439
1517
} else if ( cmd == " version" ) {
0 commit comments