@@ -1224,6 +1224,7 @@ int main(int argc, char** argv)
12241224 po::variables_map variables;
12251225 bool showUsage = false ;
12261226 bool showVersion = false ;
1227+ bool buildCustom = false ;
12271228 bool verbose = false ;
12281229 bool noIntrospection = false ;
12291230 std::string schemaFileName;
@@ -1264,21 +1265,28 @@ int main(int argc, char** argv)
12641265 variables);
12651266 po::notify (variables);
12661267
1267- if (schemaFileName.empty ())
1268- {
1269- throw po::required_option (" schema" );
1270- }
1271- else if (requestFileName.empty ())
1272- {
1273- throw po::required_option (" request" );
1274- }
1275- else if (filenamePrefix.empty ())
1276- {
1277- throw po::required_option (" prefix" );
1278- }
1279- else if (schemaNamespace.empty ())
1268+ // If you specify any of these parameters, you must specify all four.
1269+ buildCustom = !schemaFileName.empty () || !requestFileName.empty () || !filenamePrefix.empty ()
1270+ || !schemaNamespace.empty ();
1271+
1272+ if (buildCustom)
12801273 {
1281- throw po::required_option (" namespace" );
1274+ if (schemaFileName.empty ())
1275+ {
1276+ throw po::required_option (" schema" );
1277+ }
1278+ else if (requestFileName.empty ())
1279+ {
1280+ throw po::required_option (" request" );
1281+ }
1282+ else if (filenamePrefix.empty ())
1283+ {
1284+ throw po::required_option (" prefix" );
1285+ }
1286+ else if (schemaNamespace.empty ())
1287+ {
1288+ throw po::required_option (" namespace" );
1289+ }
12821290 }
12831291 }
12841292 catch (const po::error& oe)
@@ -1293,7 +1301,7 @@ int main(int argc, char** argv)
12931301 outputVersion (std::cout);
12941302 return 0 ;
12951303 }
1296- else if (showUsage)
1304+ else if (showUsage || !buildCustom )
12971305 {
12981306 outputUsage (std::cout, options);
12991307 return 0 ;
0 commit comments