Changeset 83279 in vbox for trunk/src/VBox/Frontends/VBoxManage
- Timestamp:
- Mar 13, 2020 11:47:05 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136434
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageCloud.cpp
r83170 r83279 111 111 { 112 112 { "--compartment-id", 'c', RTGETOPT_REQ_STRING }, 113 { "--state", 's', RTGETOPT_REQ_STRING } 113 { "--state", 's', RTGETOPT_REQ_STRING }, 114 { "help", 1001, RTGETOPT_REQ_NOTHING }, 115 { "--help", 1002, RTGETOPT_REQ_NOTHING } 114 116 }; 115 117 RTGETOPTSTATE GetState; … … 117 119 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 118 120 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 121 if (a->argc == iFirst) 122 { 123 RTPrintf("Empty command parameter list, show help.\n"); 124 printHelp(g_pStdOut); 125 return RTEXITCODE_SUCCESS; 126 } 119 127 120 128 Utf8Str strCompartmentId; … … 156 164 break; 157 165 } 158 166 case 1001: 167 case 1002: 168 printHelp(g_pStdOut); 169 return RTEXITCODE_SUCCESS; 159 170 case VINF_GETOPT_NOT_OPTION: 160 171 return errorUnknownSubcommand(ValueUnion.psz); … … 166 177 167 178 HRESULT hrc = S_OK; 179 180 /* Delayed check. It allows us to print help information.*/ 181 hrc = checkAndSetCommonOptions(a, pCommonOpts); 182 if (FAILED(hrc)) 183 return RTEXITCODE_FAILURE; 184 168 185 ComPtr<IVirtualBox> pVirtualBox = a->virtualBox; 169 186 … … 266 283 { 267 284 { "--compartment-id", 'c', RTGETOPT_REQ_STRING }, 268 { "--state", 's', RTGETOPT_REQ_STRING } 285 { "--state", 's', RTGETOPT_REQ_STRING }, 286 { "help", 1001, RTGETOPT_REQ_NOTHING }, 287 { "--help", 1002, RTGETOPT_REQ_NOTHING } 269 288 }; 270 289 RTGETOPTSTATE GetState; … … 272 291 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 273 292 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 293 if (a->argc == iFirst) 294 { 295 RTPrintf("Empty command parameter list, show help.\n"); 296 printHelp(g_pStdOut); 297 return RTEXITCODE_SUCCESS; 298 } 274 299 275 300 Utf8Str strCompartmentId; … … 305 330 break; 306 331 } 307 332 case 1001: 333 case 1002: 334 printHelp(g_pStdOut); 335 return RTEXITCODE_SUCCESS; 308 336 case VINF_GETOPT_NOT_OPTION: 309 337 return errorUnknownSubcommand(ValueUnion.psz); … … 316 344 317 345 HRESULT hrc = S_OK; 346 347 /* Delayed check. It allows us to print help information.*/ 348 hrc = checkAndSetCommonOptions(a, pCommonOpts); 349 if (FAILED(hrc)) 350 return RTEXITCODE_FAILURE; 351 318 352 ComPtr<IVirtualBox> pVirtualBox = a->virtualBox; 319 353 … … 411 445 static RTEXITCODE handleCloudLists(HandlerArg *a, int iFirst, PCLOUDCOMMONOPT pCommonOpts) 412 446 { 413 if (a->argc < 1) 414 return errorNoSubcommand(); 447 setCurrentCommand(HELP_CMD_CLOUDLIST); 448 setCurrentSubcommand(HELP_SCOPE_CLOUDLIST); 449 if (a->argc == iFirst) 450 { 451 RTPrintf("Empty command parameter list, show help.\n"); 452 printHelp(g_pStdOut); 453 return RTEXITCODE_SUCCESS; 454 } 415 455 416 456 static const RTGETOPTDEF s_aOptions[] = … … 421 461 { "subnets", 1003, RTGETOPT_REQ_NOTHING }, 422 462 { "vcns", 1004, RTGETOPT_REQ_NOTHING }, 423 { "objects", 1005, RTGETOPT_REQ_NOTHING } 424 }; 425 426 Bstr bstrProvider(pCommonOpts->provider.pszProviderName); 427 Bstr bstrProfile(pCommonOpts->profile.pszProfileName); 428 429 /* check for required options */ 430 if (bstrProvider.isEmpty()) 431 return errorSyntax(USAGE_S_NEWCMD, "Parameter --provider is required"); 432 if (bstrProfile.isEmpty()) 433 return errorSyntax(USAGE_S_NEWCMD, "Parameter --profile is required"); 463 { "objects", 1005, RTGETOPT_REQ_NOTHING }, 464 { "help", 1006, RTGETOPT_REQ_NOTHING }, 465 { "--help", 1007, RTGETOPT_REQ_NOTHING } 466 }; 467 468 // Bstr bstrProvider(pCommonOpts->provider.pszProviderName); 469 // Bstr bstrProfile(pCommonOpts->profile.pszProfileName); 470 // 471 // /* check for required options */ 472 // if (bstrProvider.isEmpty()) 473 // return errorSyntax(USAGE_S_NEWCMD, "Parameter --provider is required"); 474 // if (bstrProfile.isEmpty()) 475 // return errorSyntax(USAGE_S_NEWCMD, "Parameter --profile is required"); 434 476 435 477 RTGETOPTSTATE GetState; … … 444 486 { 445 487 case 1000: 446 // setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_LIST);488 setCurrentSubcommand(HELP_SCOPE_CLOUDLIST_IMAGES); 447 489 return listCloudImages(a, GetState.iNext, pCommonOpts); 448 490 case 1001: 449 // setCurrentSubcommand(HELP_SCOPE_CLOUDINSTANCE_LIST);491 setCurrentSubcommand(HELP_SCOPE_CLOUDLIST_INSTANCES); 450 492 return listCloudInstances(a, GetState.iNext, pCommonOpts); 493 case 1006: 494 case 1007: 495 printHelp(g_pStdOut); 496 return RTEXITCODE_SUCCESS; 451 497 case VINF_GETOPT_NOT_OPTION: 452 498 return errorUnknownSubcommand(ValueUnion.psz); … … 463 509 { 464 510 HRESULT hrc = S_OK; 465 hrc = checkAndSetCommonOptions(a, pCommonOpts);466 if (FAILED(hrc))467 return RTEXITCODE_FAILURE;468 511 469 512 static const RTGETOPTDEF s_aOptions[] = … … 481 524 { "--launch", 'l', RTGETOPT_REQ_STRING }, 482 525 { "--public-ssh-key", 'k', RTGETOPT_REQ_STRING }, 526 { "help", 1001, RTGETOPT_REQ_NOTHING }, 527 { "--help", 1002, RTGETOPT_REQ_NOTHING } 483 528 }; 484 529 RTGETOPTSTATE GetState; … … 486 531 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 487 532 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 533 if (a->argc == iFirst) 534 { 535 RTPrintf("Empty command parameter list, show help.\n"); 536 printHelp(g_pStdOut); 537 return RTEXITCODE_SUCCESS; 538 } 488 539 489 540 ComPtr<IAppliance> pAppliance; … … 560 611 Bstr(ValueUnion.psz).raw(), NULL); 561 612 break; 613 case 1001: 614 case 1002: 615 printHelp(g_pStdOut); 616 return RTEXITCODE_SUCCESS; 562 617 case VINF_GETOPT_NOT_OPTION: 563 618 return errorUnknownSubcommand(ValueUnion.psz); … … 566 621 } 567 622 } 623 624 /* Delayed check. It allows us to print help information.*/ 625 hrc = checkAndSetCommonOptions(a, pCommonOpts); 626 if (FAILED(hrc)) 627 return RTEXITCODE_FAILURE; 568 628 569 629 if (strPublicSSHKey.isEmpty()) … … 640 700 HRESULT hrc = S_OK; 641 701 642 hrc = checkAndSetCommonOptions(a, pCommonOpts);643 if (FAILED(hrc))644 return RTEXITCODE_FAILURE;645 646 702 static const RTGETOPTDEF s_aOptions[] = 647 703 { 648 { "--id", 'i', RTGETOPT_REQ_STRING } 704 { "--id", 'i', RTGETOPT_REQ_STRING }, 705 { "help", 1001, RTGETOPT_REQ_NOTHING }, 706 { "--help", 1002, RTGETOPT_REQ_NOTHING } 649 707 }; 650 708 RTGETOPTSTATE GetState; … … 652 710 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 653 711 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 712 if (a->argc == iFirst) 713 { 714 RTPrintf("Empty command parameter list, show help.\n"); 715 printHelp(g_pStdOut); 716 return RTEXITCODE_SUCCESS; 717 } 654 718 655 719 Utf8Str strInstanceId; … … 671 735 break; 672 736 } 673 737 case 1001: 738 case 1002: 739 printHelp(g_pStdOut); 740 return RTEXITCODE_SUCCESS; 674 741 case VINF_GETOPT_NOT_OPTION: 675 742 return errorUnknownSubcommand(ValueUnion.psz); … … 680 747 } 681 748 749 /* Delayed check. It allows us to print help information.*/ 750 hrc = checkAndSetCommonOptions(a, pCommonOpts); 751 if (FAILED(hrc)) 752 return RTEXITCODE_FAILURE; 753 682 754 if (strInstanceId.isEmpty()) 683 755 return errorArgument("Missing parameter: --id"); 684 685 756 686 757 ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile; … … 779 850 { 780 851 HRESULT hrc = S_OK; 781 hrc = checkAndSetCommonOptions(a, pCommonOpts);782 if (FAILED(hrc))783 return RTEXITCODE_FAILURE;784 852 785 853 static const RTGETOPTDEF s_aOptions[] = 786 854 { 787 { "--id", 'i', RTGETOPT_REQ_STRING } 855 { "--id", 'i', RTGETOPT_REQ_STRING }, 856 { "help", 1001, RTGETOPT_REQ_NOTHING }, 857 { "--help", 1002, RTGETOPT_REQ_NOTHING } 788 858 }; 789 859 RTGETOPTSTATE GetState; … … 791 861 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 792 862 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 863 if (a->argc == iFirst) 864 { 865 RTPrintf("Empty command parameter list, show help.\n"); 866 printHelp(g_pStdOut); 867 return RTEXITCODE_SUCCESS; 868 } 793 869 794 870 Utf8Str strInstanceId; … … 810 886 break; 811 887 } 812 888 case 1001: 889 case 1002: 890 printHelp(g_pStdOut); 891 return RTEXITCODE_SUCCESS; 813 892 case VINF_GETOPT_NOT_OPTION: 814 893 return errorUnknownSubcommand(ValueUnion.psz); … … 819 898 } 820 899 900 /* Delayed check. It allows us to print help information.*/ 901 hrc = checkAndSetCommonOptions(a, pCommonOpts); 902 if (FAILED(hrc)) 903 return RTEXITCODE_FAILURE; 904 821 905 if (strInstanceId.isEmpty()) 822 906 return errorArgument("Missing parameter: --id"); 823 824 907 825 908 ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile; … … 850 933 { 851 934 HRESULT hrc = S_OK; 852 hrc = checkAndSetCommonOptions(a, pCommonOpts);853 854 if (FAILED(hrc))855 return RTEXITCODE_FAILURE;856 935 857 936 static const RTGETOPTDEF s_aOptions[] = 858 937 { 859 { "--id", 'i', RTGETOPT_REQ_STRING } 938 { "--id", 'i', RTGETOPT_REQ_STRING }, 939 { "help", 1001, RTGETOPT_REQ_NOTHING }, 940 { "--help", 1002, RTGETOPT_REQ_NOTHING } 860 941 }; 861 942 RTGETOPTSTATE GetState; … … 863 944 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 864 945 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 946 if (a->argc == iFirst) 947 { 948 RTPrintf("Empty command parameter list, show help.\n"); 949 printHelp(g_pStdOut); 950 return RTEXITCODE_SUCCESS; 951 } 865 952 866 953 Utf8Str strInstanceId; … … 882 969 break; 883 970 } 884 971 case 1001: 972 case 1002: 973 printHelp(g_pStdOut); 974 return RTEXITCODE_SUCCESS; 885 975 case VINF_GETOPT_NOT_OPTION: 886 976 return errorUnknownSubcommand(ValueUnion.psz); … … 891 981 } 892 982 983 /* Delayed check. It allows us to print help information.*/ 984 hrc = checkAndSetCommonOptions(a, pCommonOpts); 985 if (FAILED(hrc)) 986 return RTEXITCODE_FAILURE; 987 893 988 if (strInstanceId.isEmpty()) 894 989 return errorArgument("Missing parameter: --id"); 895 896 990 897 991 ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile; … … 923 1017 HRESULT hrc = S_OK; 924 1018 925 hrc = checkAndSetCommonOptions(a, pCommonOpts);926 if (FAILED(hrc))927 return RTEXITCODE_FAILURE;928 929 1019 static const RTGETOPTDEF s_aOptions[] = 930 1020 { 931 { "--id", 'i', RTGETOPT_REQ_STRING } 1021 { "--id", 'i', RTGETOPT_REQ_STRING }, 1022 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1023 { "--help", 1002, RTGETOPT_REQ_NOTHING } 932 1024 }; 933 1025 RTGETOPTSTATE GetState; … … 935 1027 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 936 1028 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1029 if (a->argc == iFirst) 1030 { 1031 RTPrintf("Empty command parameter list, show help.\n"); 1032 printHelp(g_pStdOut); 1033 return RTEXITCODE_SUCCESS; 1034 } 937 1035 938 1036 Utf8Str strInstanceId; … … 954 1052 break; 955 1053 } 956 1054 case 1001: 1055 case 1002: 1056 printHelp(g_pStdOut); 1057 return RTEXITCODE_SUCCESS; 957 1058 case VINF_GETOPT_NOT_OPTION: 958 1059 return errorUnknownSubcommand(ValueUnion.psz); … … 962 1063 } 963 1064 } 1065 1066 /* Delayed check. It allows us to print help information.*/ 1067 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1068 if (FAILED(hrc)) 1069 return RTEXITCODE_FAILURE; 964 1070 965 1071 if (strInstanceId.isEmpty()) … … 993 1099 static RTEXITCODE handleCloudInstance(HandlerArg *a, int iFirst, PCLOUDCOMMONOPT pCommonOpts) 994 1100 { 995 if (a->argc < 1) 996 return errorNoSubcommand(); 1101 setCurrentCommand(HELP_CMD_CLOUDINSTANCE); 1102 setCurrentSubcommand(HELP_SCOPE_CLOUDINSTANCE); 1103 if (a->argc == iFirst) 1104 { 1105 RTPrintf("Empty command parameter list, show help.\n"); 1106 printHelp(g_pStdOut); 1107 return RTEXITCODE_SUCCESS; 1108 } 997 1109 998 1110 static const RTGETOPTDEF s_aOptions[] = … … 1003 1115 { "info", 1003, RTGETOPT_REQ_NOTHING }, 1004 1116 { "update", 1004, RTGETOPT_REQ_NOTHING }, 1005 { "terminate", 1005, RTGETOPT_REQ_NOTHING } 1117 { "terminate", 1005, RTGETOPT_REQ_NOTHING }, 1118 { "help", 1006, RTGETOPT_REQ_NOTHING }, 1119 { "--help", 1007, RTGETOPT_REQ_NOTHING } 1006 1120 }; 1007 1121 … … 1018 1132 /* Sub-commands: */ 1019 1133 case 1000: 1020 //setCurrentSubcommand(HELP_SCOPE_CLOUDINSTANCE_CREATE);1134 setCurrentSubcommand(HELP_SCOPE_CLOUDINSTANCE_CREATE); 1021 1135 return createCloudInstance(a, GetState.iNext, pCommonOpts); 1022 1136 case 1001: … … 1035 1149 setCurrentSubcommand(HELP_SCOPE_CLOUDINSTANCE_TERMINATE); 1036 1150 return terminateCloudInstance(a, GetState.iNext, pCommonOpts); 1151 case 1006: 1152 case 1007: 1153 printHelp(g_pStdOut); 1154 return RTEXITCODE_SUCCESS; 1037 1155 case VINF_GETOPT_NOT_OPTION: 1038 1156 return errorUnknownSubcommand(ValueUnion.psz); … … 1050 1168 { 1051 1169 HRESULT hrc = S_OK; 1052 hrc = checkAndSetCommonOptions(a, pCommonOpts);1053 if (FAILED(hrc))1054 return RTEXITCODE_FAILURE;1055 1170 1056 1171 static const RTGETOPTDEF s_aOptions[] = … … 1062 1177 { "--display-name", 'd', RTGETOPT_REQ_STRING }, 1063 1178 { "--launch-mode", 'm', RTGETOPT_REQ_STRING }, 1179 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1180 { "--help", 1002, RTGETOPT_REQ_NOTHING } 1064 1181 }; 1065 1182 RTGETOPTSTATE GetState; … … 1067 1184 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 1068 1185 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1186 if (a->argc == iFirst) 1187 { 1188 RTPrintf("Empty command parameter list, show help.\n"); 1189 printHelp(g_pStdOut); 1190 return RTEXITCODE_SUCCESS; 1191 } 1069 1192 1070 1193 Utf8Str strCompartmentId; … … 1104 1227 Bstr(Utf8Str("launch-mode=").append(ValueUnion.psz)).detachTo(parameters.appendedRaw()); 1105 1228 break; 1229 case 1001: 1230 case 1002: 1231 printHelp(g_pStdOut); 1232 return RTEXITCODE_SUCCESS; 1106 1233 case VINF_GETOPT_NOT_OPTION: 1107 1234 return errorUnknownSubcommand(ValueUnion.psz); … … 1110 1237 } 1111 1238 } 1239 1240 /* Delayed check. It allows us to print help information.*/ 1241 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1242 if (FAILED(hrc)) 1243 return RTEXITCODE_FAILURE; 1112 1244 1113 1245 if (strInstanceId.isNotEmpty() && strObjectName.isNotEmpty()) … … 1144 1276 { 1145 1277 HRESULT hrc = S_OK; 1146 hrc = checkAndSetCommonOptions(a, pCommonOpts);1147 if (FAILED(hrc))1148 return RTEXITCODE_FAILURE;1149 1278 1150 1279 static const RTGETOPTDEF s_aOptions[] = … … 1155 1284 { "--display-name", 'd', RTGETOPT_REQ_STRING }, 1156 1285 { "--launch-mode", 'm', RTGETOPT_REQ_STRING }, 1286 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1287 { "--help", 1002, RTGETOPT_REQ_NOTHING } 1157 1288 }; 1158 1289 RTGETOPTSTATE GetState; … … 1160 1291 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 1161 1292 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1293 if (a->argc == iFirst) 1294 { 1295 RTPrintf("Empty command parameter list, show help.\n"); 1296 printHelp(g_pStdOut); 1297 return RTEXITCODE_SUCCESS; 1298 } 1162 1299 1163 1300 Utf8Str strImageId; /* XXX: this is vbox "image", i.e. medium */ … … 1233 1370 } 1234 1371 1372 case 1001: 1373 case 1002: 1374 printHelp(g_pStdOut); 1375 return RTEXITCODE_SUCCESS; 1376 1235 1377 case VINF_GETOPT_NOT_OPTION: 1236 1378 return errorUnknownSubcommand(ValueUnion.psz); … … 1240 1382 } 1241 1383 } 1384 1385 /* Delayed check. It allows us to print help information.*/ 1386 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1387 if (FAILED(hrc)) 1388 return RTEXITCODE_FAILURE; 1242 1389 1243 1390 if (strImageId.isNotEmpty()) … … 1327 1474 { 1328 1475 HRESULT hrc = S_OK; 1329 hrc = checkAndSetCommonOptions(a, pCommonOpts);1330 if (FAILED(hrc))1331 return RTEXITCODE_FAILURE;1332 1476 1333 1477 static const RTGETOPTDEF s_aOptions[] = … … 1335 1479 { "--id", 'i', RTGETOPT_REQ_STRING }, 1336 1480 { "--bucket-name", 'b', RTGETOPT_REQ_STRING }, 1337 { "--object-name", 'o', RTGETOPT_REQ_STRING } 1481 { "--object-name", 'o', RTGETOPT_REQ_STRING }, 1482 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1483 { "--help", 1002, RTGETOPT_REQ_NOTHING } 1338 1484 }; 1339 1485 RTGETOPTSTATE GetState; … … 1341 1487 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 1342 1488 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1489 if (a->argc == iFirst) 1490 { 1491 RTPrintf("Empty command parameter list, show help.\n"); 1492 printHelp(g_pStdOut); 1493 return RTEXITCODE_SUCCESS; 1494 } 1343 1495 1344 1496 Utf8Str strImageId; … … 1365 1517 Bstr(Utf8Str("object-name=").append(ValueUnion.psz)).detachTo(parameters.appendedRaw()); 1366 1518 break; 1519 case 1001: 1520 case 1002: 1521 printHelp(g_pStdOut); 1522 return RTEXITCODE_SUCCESS; 1367 1523 case VINF_GETOPT_NOT_OPTION: 1368 1524 return errorUnknownSubcommand(ValueUnion.psz); … … 1372 1528 } 1373 1529 1530 /* Delayed check. It allows us to print help information.*/ 1531 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1532 if (FAILED(hrc)) 1533 return RTEXITCODE_FAILURE; 1534 1374 1535 ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile; 1375 1536 … … 1401 1562 { 1402 1563 HRESULT hrc = S_OK; 1403 hrc = checkAndSetCommonOptions(a, pCommonOpts);1404 if (FAILED(hrc))1405 return RTEXITCODE_FAILURE;1406 1564 1407 1565 static const RTGETOPTDEF s_aOptions[] = 1408 1566 { 1409 { "--id", 'i', RTGETOPT_REQ_STRING } 1567 { "--id", 'i', RTGETOPT_REQ_STRING }, 1568 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1569 { "--help", 1002, RTGETOPT_REQ_NOTHING } 1410 1570 }; 1411 1571 RTGETOPTSTATE GetState; … … 1413 1573 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 1414 1574 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1575 if (a->argc == iFirst) 1576 { 1577 RTPrintf("Empty command parameter list, show help.\n"); 1578 printHelp(g_pStdOut); 1579 return RTEXITCODE_SUCCESS; 1580 } 1415 1581 1416 1582 Utf8Str strImageId; … … 1424 1590 strImageId = ValueUnion.psz; 1425 1591 break; 1592 case 1001: 1593 case 1002: 1594 printHelp(g_pStdOut); 1595 return RTEXITCODE_SUCCESS; 1426 1596 case VINF_GETOPT_NOT_OPTION: 1427 1597 return errorUnknownSubcommand(ValueUnion.psz); … … 1430 1600 } 1431 1601 } 1602 1603 /* Delayed check. It allows us to print help information.*/ 1604 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1605 if (FAILED(hrc)) 1606 return RTEXITCODE_FAILURE; 1432 1607 1433 1608 ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile; … … 1479 1654 { 1480 1655 HRESULT hrc = S_OK; 1481 hrc = checkAndSetCommonOptions(a, pCommonOpts);1482 if (FAILED(hrc))1483 return RTEXITCODE_FAILURE;1484 1656 1485 1657 static const RTGETOPTDEF s_aOptions[] = 1486 1658 { 1487 { "--id", 'i', RTGETOPT_REQ_STRING } 1659 { "--id", 'i', RTGETOPT_REQ_STRING }, 1660 { "help", 1001, RTGETOPT_REQ_NOTHING }, 1661 { "--help", 1002, RTGETOPT_REQ_NOTHING } 1488 1662 }; 1489 1663 RTGETOPTSTATE GetState; … … 1491 1665 int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0); 1492 1666 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1667 if (a->argc == iFirst) 1668 { 1669 RTPrintf("Empty command parameter list, show help.\n"); 1670 printHelp(g_pStdOut); 1671 return RTEXITCODE_SUCCESS; 1672 } 1493 1673 1494 1674 Utf8Str strImageId; … … 1511 1691 } 1512 1692 1693 case 1001: 1694 case 1002: 1695 printHelp(g_pStdOut); 1696 return RTEXITCODE_SUCCESS; 1513 1697 case VINF_GETOPT_NOT_OPTION: 1514 1698 return errorUnknownSubcommand(ValueUnion.psz); … … 1518 1702 } 1519 1703 } 1704 1705 /* Delayed check. It allows us to print help information.*/ 1706 hrc = checkAndSetCommonOptions(a, pCommonOpts); 1707 if (FAILED(hrc)) 1708 return RTEXITCODE_FAILURE; 1520 1709 1521 1710 if (strImageId.isEmpty()) … … 1546 1735 static RTEXITCODE handleCloudImage(HandlerArg *a, int iFirst, PCLOUDCOMMONOPT pCommonOpts) 1547 1736 { 1548 if (a->argc < 1) 1549 return errorNoSubcommand(); 1737 setCurrentCommand(HELP_CMD_CLOUDIMAGE); 1738 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE); 1739 if (a->argc == iFirst) 1740 { 1741 RTPrintf("Empty command parameter list, show help.\n"); 1742 printHelp(g_pStdOut); 1743 return RTEXITCODE_SUCCESS; 1744 } 1550 1745 1551 1746 static const RTGETOPTDEF s_aOptions[] = … … 1556 1751 { "info", 1003, RTGETOPT_REQ_NOTHING }, 1557 1752 { "update", 1004, RTGETOPT_REQ_NOTHING }, 1558 { "delete", 1005, RTGETOPT_REQ_NOTHING } 1753 { "delete", 1005, RTGETOPT_REQ_NOTHING }, 1754 { "help", 1006, RTGETOPT_REQ_NOTHING }, 1755 { "--help", 1007, RTGETOPT_REQ_NOTHING } 1559 1756 }; 1560 1757 … … 1571 1768 /* Sub-commands: */ 1572 1769 case 1000: 1573 //setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_CREATE);1770 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_CREATE); 1574 1771 return createCloudImage(a, GetState.iNext, pCommonOpts); 1575 1772 case 1001: 1576 //setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_EXPORT);1773 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_EXPORT); 1577 1774 return exportCloudImage(a, GetState.iNext, pCommonOpts); 1578 1775 case 1002: 1579 //setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_IMPORT);1776 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_IMPORT); 1580 1777 return importCloudImage(a, GetState.iNext, pCommonOpts); 1581 1778 case 1003: 1582 //setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_INFO);1779 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_INFO); 1583 1780 return showCloudImageInfo(a, GetState.iNext, pCommonOpts); 1584 1781 case 1004: … … 1586 1783 return updateCloudImage(a, GetState.iNext, pCommonOpts); 1587 1784 case 1005: 1588 //setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_DELETE);1785 setCurrentSubcommand(HELP_SCOPE_CLOUDIMAGE_DELETE); 1589 1786 return deleteCloudImage(a, GetState.iNext, pCommonOpts); 1787 case 1006: 1788 case 1007: 1789 printHelp(g_pStdOut); 1790 return RTEXITCODE_SUCCESS; 1590 1791 case VINF_GETOPT_NOT_OPTION: 1591 1792 return errorUnknownSubcommand(ValueUnion.psz);
Note:
See TracChangeset
for help on using the changeset viewer.