int main (int argc, char** argv) { // Creates runtime and base app pI::Application app; pI::Runtime runtime(app.GetRuntime()); std::cerr << "Plugin dir: " << app.FindPIPluginDir() << std::endl; app.LoadPluginLibraries (app.FindPIPluginDir().c_str()); std::vector<std::string> names(GetPluginNames (runtime)); const pI_int count(names.size()); std::cout << "{" << std::endl; appendValue(std::cout, API_VERSION, runtime.GetRuntimeVersion()); appendValue(std::cout, PLUGIN_COUNT, count); std::cout << "\"" << PLUGINS << "\":" << std::endl << "[" << std::endl; for (pI_int lv = 0; lv < count; ++lv) { std::cout << "{" << std::endl; appendValue(std::cout, NAME, names[lv]); if (names[lv] == "CImg/Functions") { // special treatment for CImg META plugin try { pI::pInPtr p(runtime.SpawnPlugin ((const pI_str) names[lv].c_str())); pI::Arguments params(p->GetParameterSignature()); appendValue(std::cout, DESCRIPTION, p->GetDescription()); appendValue(std::cout, PLUGIN_VERSION, p->GetpInVersion()); appendValue(std::cout, API_VERSION, p->GetAPIVersion()); appendValue(std::cout, AUTHOR, p->GetAuthor()); appendValue(std::cout, COPYRIGHT, p->GetCopyright()); appendValue(std::cout, OPTIONAL_INIT, "false"); appendValue(std::cout, DEFAULT_INIT, "true"); std::cout << "\"parameters\":" << std::endl << "[" << std::endl; for (pI_size lv2 = 0; lv2 < params.size(); ++lv2) { std::cout << runtime.SerializeArgument (params[lv2]); if (lv2 < params.size() - 1) { std::cout << ","; } std::cout << std::endl; } std::cout << "]," << std::endl; pI::StringSelection sts(params[0]); std::cout << "\"CImg functions\":" << std::endl << "[" << std::endl; for (pI_size lv2 = 0; lv2 < sts.GetCount(); ++lv2) { sts.SetIndex (lv2); p->Initialize (params); std::cout << "{" << std::endl; appendValue(std::cout, NAME, sts.GetSymbols (lv2)); std::cout << "\"inputSignature\":" << std::endl << "[" << std::endl; pI::Arguments is(p->GetInputSignature()); for (pI_size lv3 = 0; lv3 < is.size(); ++lv3) { std::cout << runtime.SerializeArgument (is[lv3]); if (lv3 < is.size() - 1) std::cout << ","; } std::cout << std::endl << "]," << std::endl; std::cout << "\"outputSignature\":" << std::endl << "[" << std::endl; pI::Arguments os(p->GetOutputSignature()); for (pI_size lv3 = 0; lv3 < os.size(); ++lv3) { std::cout << runtime.SerializeArgument (os[lv3]); if (lv3 < os.size() - 1) std::cout << ","; } std::cout << std::endl << "]" << std::endl; std::cout << "}"; if (lv2 < sts.GetCount() - 1) std::cout << ","; std::cout << std::endl; } std::cout << "]" << std::endl; } catch (...) {} } else { try { pI::pInPtr p(runtime.SpawnPlugin ((const pI_str) names[lv].c_str())); appendValue(std::cout, DESCRIPTION, p->GetDescription()); appendValue(std::cout, PLUGIN_VERSION, p->GetpInVersion()); appendValue(std::cout, API_VERSION, p->GetAPIVersion()); appendValue(std::cout, AUTHOR, p->GetAuthor()); appendValue(std::cout, COPYRIGHT, p->GetCopyright()); bool optional_init((p->GetInputSignature().size() > 0) || (p->GetOutputSignature().size() > 0)); appendValue(std::cout, OPTIONAL_INIT, (optional_init ? "true" : "false")); std::cout << "\"" << PARAMETERS << "\":" << std::endl << "[" << std::endl; pI::Arguments params(p->GetParameterSignature()); for (pI_size lv2 = 0; lv2 < params.size(); ++lv2) { std::cout << runtime.SerializeArgument (params[lv2]); if (lv2 < params.size() - 1) { std::cout << ","; } std::cout << std::endl; } std::cout << "]," << std::endl; bool default_init; try { p->Initialize (params); default_init = true; } catch (...) { default_init = false; } appendValue(std::cout, DEFAULT_INIT, (default_init ? "true" : "false"), optional_init || default_init); if (optional_init || default_init) { std::cout << "\"" << INPUT_SIGNATURE << "\":" << std::endl << "[" << std::endl; pI::Arguments is(p->GetInputSignature()); for (pI_size lv2 = 0; lv2 < is.size(); ++lv2) { std::cout << runtime.SerializeArgument (is[lv2]); if (lv2 < is.size() - 1) std::cout << ","; } std::cout << std::endl << "]," << std::endl; std::cout << "\"" << OUTPUT_SIGNATURE << "\":" << std::endl << "[" << std::endl; pI::Arguments os(p->GetOutputSignature()); for (pI_size lv2 = 0; lv2 < os.size(); ++lv2) { std::cout << runtime.SerializeArgument (os[lv2]); if (lv2 < os.size() - 1) std::cout << ","; } std::cout << std::endl << "]" << std::endl; } else std::cout << std::endl; } catch (...) {} } std::cout << "}"; if (lv < count - 1) std::cout << ","; std::cout << std::endl; } std::cout << "]" << std::endl << "}" << std::endl; return 0; }
int main(int argc, char **argv) { return runtime(argc, argv); }
int main( int argc, char* argv[] ) { DisplayCopyrightNotice(); std::string configFile = "hh.cfg"; std::string batchBuildId = ""; CTimeSpan totalTimeSpan; enum RunOption { ApproveUnitTest, ExecuteUnitTests, ExecuteUnitTestsInBatchBuildMode, GenerateConfigFile, ViewUnitTestFailures, EditUnitTest }; RunOption runOption = ExecuteUnitTests; bool verbose = false; try { for ( ;; ) { int c = getopt( argc, argv, "ac:b:gefv?" ); if (c == -1) { break; } switch ( c ) { case 'a': runOption = ApproveUnitTest; break; case 'c': configFile = optarg; break; case 'b': runOption = ExecuteUnitTestsInBatchBuildMode; batchBuildId = optarg; break; case 'g': runOption = GenerateConfigFile; break; case 'e': runOption = EditUnitTest; break; case 'f': runOption = ViewUnitTestFailures; break; case 'v': verbose = true; break; case '?': DisplayUsage( argv[0] ); return RESULT_SUCCESS; } } } catch ( HH_CommandLineError& ex ) { std::cout << ex.AsString() << std::endl; std::cout << std::endl; DisplayUsage( argv[0] ); return RESULT_ERROR; } try { HH_CommandLineNotifier commandLineNotifier( verbose ); switch( runOption ) { case ExecuteUnitTests: { HH_Runtime runtime( GetIniFile( verbose ), configFile, commandLineNotifier ); DisplayParameters( runtime, verbose ); totalTimeSpan = runtime.ExecuteUnitTest( batchBuildId ); DisplayElapsedTime( totalTimeSpan, verbose ); } break; case ExecuteUnitTestsInBatchBuildMode: { HH_Runtime runtime( GetIniFile( verbose ), configFile, commandLineNotifier ); DisplayParameters( runtime, verbose ); totalTimeSpan = runtime.ExecuteUnitTest( batchBuildId ); DisplayElapsedTime( totalTimeSpan, verbose ); } break; case ApproveUnitTest: { HH_Runtime runtime( GetIniFile( verbose ), configFile, commandLineNotifier ); DisplayParameters( runtime, verbose ); runtime.ApproveUnitTest(); } break; case GenerateConfigFile: HH_Runtime::GenerateConfigFile( commandLineNotifier ); break; case ViewUnitTestFailures: { HH_Runtime runtime( GetIniFile( verbose ), configFile, commandLineNotifier ); DisplayParameters( runtime, verbose ); runtime.ViewUnitTestFailures(); } break; case EditUnitTest: { HH_Runtime runtime( GetIniFile( verbose ), configFile, commandLineNotifier ); DisplayParameters( runtime, verbose ); runtime.EditDotInFile(); } break; } } catch ( HH_Exception& ex ) { HH_UnitTest::LogException( ex ); DisplayElapsedTime( totalTimeSpan, verbose ); return RESULT_ERROR; } return RESULT_SUCCESS; }