int main(int argc, char *argv[]) { GenericAgentConfig *config = CheckOpts(argc, argv); EvalContext *ctx = EvalContextNew(); GenericAgentConfigApply(ctx, config); GenericAgentDiscoverContext(ctx, config); Policy *policy = LoadPolicy(ctx, config); if (!policy) { Log(LOG_LEVEL_ERR, "Input files contain errors."); exit(EXIT_FAILURE); } if (NULL != config->tag_release_dir) { // write the validated file and the release ID bool tagged = GenericAgentTagReleaseDirectory(config, config->tag_release_dir, true, true); if (tagged) { Log(LOG_LEVEL_VERBOSE, "Release tagging done!"); } else { Log(LOG_LEVEL_ERR, "The given directory could not be tagged, sorry."); exit(EXIT_FAILURE); } } if (SHOWREPORTS) { ShowPromises(policy->bundles, policy->bodies); } switch (config->agent_specific.common.policy_output_format) { case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF: { Policy *output_policy = ParserParseFile(AGENT_TYPE_COMMON, config->input_file, config->agent_specific.common.parser_warnings, config->agent_specific.common.parser_warnings_error); Writer *writer = FileWriter(stdout); PolicyToString(policy, writer); WriterClose(writer); PolicyDestroy(output_policy); } break; case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_JSON: { Policy *output_policy = ParserParseFile(AGENT_TYPE_COMMON, config->input_file, config->agent_specific.common.parser_warnings, config->agent_specific.common.parser_warnings_error); JsonElement *json_policy = PolicyToJson(output_policy); Writer *writer = FileWriter(stdout); JsonWrite(writer, json_policy, 2); WriterClose(writer); JsonDestroy(json_policy); PolicyDestroy(output_policy); } break; case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_NONE: break; } if(config->agent_specific.common.show_classes) { ShowContextsFormatted(ctx); } if(config->agent_specific.common.show_variables) { ShowVariablesFormatted(ctx); } PolicyDestroy(policy); GenericAgentFinalize(ctx, config); }
int main(int argc, char *argv[]) { EvalContext *ctx = EvalContextNew(); GenericAgentConfig *config = CheckOpts(argc, argv); GenericAgentConfigApply(ctx, config); GenericAgentDiscoverContext(ctx, config); Policy *policy = GenericAgentLoadPolicy(ctx, config); if (!policy) { Log(LOG_LEVEL_ERR, "Input files contain errors."); exit(EXIT_FAILURE); } if (SHOWREPORTS) { ShowPromises(policy->bundles, policy->bodies); } switch (config->agent_specific.common.policy_output_format) { case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF: { Policy *output_policy = ParserParseFile(AGENT_TYPE_COMMON, config->input_file, config->agent_specific.common.parser_warnings, config->agent_specific.common.parser_warnings_error); Writer *writer = FileWriter(stdout); PolicyToString(policy, writer); WriterClose(writer); PolicyDestroy(output_policy); } break; case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_JSON: { Policy *output_policy = ParserParseFile(AGENT_TYPE_COMMON, config->input_file, config->agent_specific.common.parser_warnings, config->agent_specific.common.parser_warnings_error); JsonElement *json_policy = PolicyToJson(output_policy); Writer *writer = FileWriter(stdout); JsonWrite(writer, json_policy, 2); WriterClose(writer); JsonDestroy(json_policy); PolicyDestroy(output_policy); } break; case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_NONE: break; } if(config->agent_specific.common.show_classes) { ShowContextsFormatted(ctx); } if(config->agent_specific.common.show_variables) { ShowVariablesFormatted(ctx); } GenericAgentConfigDestroy(config); EvalContextDestroy(ctx); }
int main(int argc, char *argv[]) { SetupSignalsForAgent(); GenericAgentConfig *config = CheckOpts(argc, argv); enum generic_agent_config_common_policy_output_format format = config->agent_specific.common.policy_output_format; if (format == GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF || format == GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_JSON) { // Just parse and write content to output Policy *output_policy = ParserParseFile(AGENT_TYPE_COMMON, config->input_file, config->agent_specific.common.parser_warnings, config->agent_specific.common.parser_warnings_error); Writer *writer = FileWriter(stdout); if (format == GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF) { PolicyToString(output_policy, writer); } else { JsonElement *json_policy = PolicyToJson(output_policy); JsonWrite(writer, json_policy, 2); JsonDestroy(json_policy); } WriterClose(writer); PolicyDestroy(output_policy); return EXIT_SUCCESS; } EvalContext *ctx = EvalContextNew(); GenericAgentConfigApply(ctx, config); GenericAgentDiscoverContext(ctx, config); Policy *policy = LoadPolicy(ctx, config); if (!policy) { Log(LOG_LEVEL_ERR, "Input files contain errors."); exit(EXIT_FAILURE); } GenericAgentPostLoadInit(ctx); if (NULL != config->tag_release_dir) { // write the validated file and the release ID bool tagged = GenericAgentTagReleaseDirectory(config, config->tag_release_dir, true, true); if (tagged) { Log(LOG_LEVEL_VERBOSE, "Release tagging done!"); } else { Log(LOG_LEVEL_ERR, "The given directory could not be tagged, sorry."); exit(EXIT_FAILURE); } } switch (config->agent_specific.common.policy_output_format) { case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF_FULL: { Writer *writer = FileWriter(stdout); PolicyToString(policy, writer); WriterClose(writer); } break; case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_JSON_FULL: { Writer *writer = FileWriter(stdout); JsonElement *json_policy = PolicyToJson(policy); JsonWrite(writer, json_policy, 2); JsonDestroy(json_policy); WriterClose(writer); } break; // already handled, but avoids compiler warnings case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_CF: case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_JSON: case GENERIC_AGENT_CONFIG_COMMON_POLICY_OUTPUT_FORMAT_NONE: break; } if(config->agent_specific.common.show_classes) { ShowContextsFormatted(ctx); } if(config->agent_specific.common.show_variables) { ShowVariablesFormatted(ctx); } PolicyDestroy(policy); GenericAgentFinalize(ctx, config); }