return result;
}
+void icinga::AddTypeFields(const String& type, boost::program_options::options_description& desc)
+{
+ const Type *ptype = Type::GetByName(type);
+
+ if (!ptype)
+ return;
+
+ for (int i = 0; i < ptype->GetFieldCount(); i++) {
+ Field field = ptype->GetFieldInfo(i);
+
+ if (strcmp(field.Name, "__name") == 0)
+ continue;
+
+ if (!(field.Attributes & FAConfig))
+ continue;
+
+ desc.add_options()
+ (field.Name, po::value<std::string>(), field.Name);
+ }
+}
+
ArgumentCompletionCallback icinga::BashArgumentCompletion(const String& type)
{
return boost::bind(BashArgumentCompletionHelper, type, _1);
typedef std::map<String, ArgumentCompletionCallback> ArgumentCompletionDescription;
I2_BASE_API ArgumentCompletionCallback BashArgumentCompletion(const String& type);
+I2_BASE_API void AddTypeFields(const String& type, boost::program_options::options_description& desc);
/**
* A CLI command.
add_library(cli SHARED ${cli_SOURCES})
-target_link_libraries(cli ${Boost_LIBRARIES} base config remote)
+target_link_libraries(cli ${Boost_LIBRARIES} base config remote icinga)
set_target_properties (
cli PROPERTIES