Lines Matching +refs:module +refs:path

81     char *path = NULL;  in GetInterpreterAndPath()  local
100 free(path); in GetInterpreterAndPath()
101 path = ExpandScalar(ctx, NULL, NULL, value, NULL); in GetInterpreterAndPath()
109 if (path == NULL) in GetInterpreterAndPath()
115 free(path); in GetInterpreterAndPath()
120 *path_out = path; in GetInterpreterAndPath()
174 static JsonElement *PromiseModule_Receive(PromiseModule *module, const Promise *pp) in PromiseModule_Receive() argument
176 assert(module != NULL); in PromiseModule_Receive()
178 bool line_based = !(module->json); in PromiseModule_Receive()
195 && ((bytes = getline(&line, &size, module->output)) > 0)) in PromiseModule_Receive()
283 module->path); in PromiseModule_Receive()
301 module->path); in PromiseModule_Receive()
357 static void PromiseModule_SendMessage(PromiseModule *module, Seq *message) in PromiseModule_SendMessage() argument
359 assert(module != NULL); in PromiseModule_SendMessage()
367 fprintf(module->input, "%s\n", line); in PromiseModule_SendMessage()
369 fprintf(module->input, "\n"); in PromiseModule_SendMessage()
370 fflush(module->input); in PromiseModule_SendMessage()
373 static Seq *PromiseModule_ReceiveHeader(PromiseModule *module) in PromiseModule_ReceiveHeader() argument
375 assert(module != NULL); in PromiseModule_ReceiveHeader()
380 ssize_t bytes = getline(&line, &size, module->output); in PromiseModule_ReceiveHeader()
385 module->path); in PromiseModule_ReceiveHeader()
393 module->interpreter, in PromiseModule_ReceiveHeader()
394 module->path, in PromiseModule_ReceiveHeader()
409 bytes = getline(&line, &size, module->output); in PromiseModule_ReceiveHeader()
414 module->interpreter, in PromiseModule_ReceiveHeader()
415 module->path, in PromiseModule_ReceiveHeader()
427 static void PromiseModule_DestroyInternal(PromiseModule *module) in PromiseModule_DestroyInternal() argument
429 assert(module != NULL); in PromiseModule_DestroyInternal()
431 free(module->path); in PromiseModule_DestroyInternal()
432 free(module->interpreter); in PromiseModule_DestroyInternal()
434 cf_pclose_full_duplex(&(module->fds)); in PromiseModule_DestroyInternal()
435 free(module); in PromiseModule_DestroyInternal()
438 static PromiseModule *PromiseModule_Start(char *interpreter, char *path) in PromiseModule_Start() argument
440 assert(path != NULL); in PromiseModule_Start()
450 if ((interpreter == NULL) && (access(path, X_OK) != 0)) in PromiseModule_Start()
454 path); in PromiseModule_Start()
458 if (access(path, F_OK) != 0) in PromiseModule_Start()
462 path); in PromiseModule_Start()
466 PromiseModule *module = xcalloc(1, sizeof(PromiseModule)); in PromiseModule_Start() local
468 module->interpreter = interpreter; in PromiseModule_Start()
469 module->path = path; in PromiseModule_Start()
474 snprintf(command, CF_BUFSIZE, "%s", path); in PromiseModule_Start()
478 snprintf(command, CF_BUFSIZE, "%s %s", interpreter, path); in PromiseModule_Start()
482 path, command); in PromiseModule_Start()
483 module->fds = cf_popen_full_duplex_streams(command, false, true); in PromiseModule_Start()
484 module->output = module->fds.read_stream; in PromiseModule_Start()
485 module->input = module->fds.write_stream; in PromiseModule_Start()
486 module->message = NULL; in PromiseModule_Start()
488 fprintf(module->input, "cf-agent %s v1\n\n", Version()); in PromiseModule_Start()
489 fflush(module->input); in PromiseModule_Start()
491 Seq *header = PromiseModule_ReceiveHeader(module); in PromiseModule_Start()
499 module->path = NULL; in PromiseModule_Start()
500 module->interpreter = NULL; in PromiseModule_Start()
501 PromiseModule_DestroyInternal(module); in PromiseModule_Start()
513 module->json = true; in PromiseModule_Start()
517 module->json = false; in PromiseModule_Start()
524 return module; in PromiseModule_Start()
528 PromiseModule *module, const char *key, const char *value) in PromiseModule_AppendString() argument
530 assert(module != NULL); in PromiseModule_AppendString()
532 if (module->message == NULL) in PromiseModule_AppendString()
534 module->message = JsonObjectCreate(10); in PromiseModule_AppendString()
536 JsonObjectAppendString(module->message, key, value); in PromiseModule_AppendString()
540 PromiseModule *module, const char *key, int64_t value) in PromiseModule_AppendInteger() argument
542 assert(module != NULL); in PromiseModule_AppendInteger()
544 if (module->message == NULL) in PromiseModule_AppendInteger()
546 module->message = JsonObjectCreate(10); in PromiseModule_AppendInteger()
548 JsonObjectAppendInteger64(module->message, key, value); in PromiseModule_AppendInteger()
552 PromiseModule *module, const char *key, JsonElement *value) in PromiseModule_AppendAttribute() argument
554 assert(module != NULL); in PromiseModule_AppendAttribute()
556 if (module->message == NULL) in PromiseModule_AppendAttribute()
558 module->message = JsonObjectCreate(10); in PromiseModule_AppendAttribute()
561 JsonElement *attributes = JsonObjectGet(module->message, "attributes"); in PromiseModule_AppendAttribute()
565 JsonObjectAppendObject(module->message, "attributes", attributes); in PromiseModule_AppendAttribute()
571 static void PromiseModule_Send(PromiseModule *module) in PromiseModule_Send() argument
573 assert(module != NULL); in PromiseModule_Send()
575 if (module->json) in PromiseModule_Send()
577 Writer *w = FileWriter(module->input); in PromiseModule_Send()
578 JsonWriteCompact(w, module->message); in PromiseModule_Send()
580 DESTROY_AND_NULL(JsonDestroy, module->message); in PromiseModule_Send()
581 fprintf(module->input, "\n\n"); in PromiseModule_Send()
582 fflush(module->input); in PromiseModule_Send()
588 JsonIterator iter = JsonIteratorInit(module->message); in PromiseModule_Send()
617 PromiseModule_SendMessage(module, message); in PromiseModule_Send()
619 DESTROY_AND_NULL(JsonDestroy, module->message); in PromiseModule_Send()
649 PromiseModule *module, const EvalContext *ctx, const Promise *pp) in PromiseModule_AppendAllAttributes() argument
651 assert(module != NULL); in PromiseModule_AppendAllAttributes()
696 PromiseModule_AppendAttribute(module, name, value); in PromiseModule_AppendAllAttributes()
833 static bool PromiseModule_Validate(PromiseModule *module, const EvalContext *ctx, const Promise *pp) in PromiseModule_Validate() argument
835 assert(module != NULL); in PromiseModule_Validate()
841 PromiseModule_AppendString(module, "operation", "validate_promise"); in PromiseModule_Validate()
842 PromiseModule_AppendString(module, "log_level", LogLevelToRequestFromModule(pp)); in PromiseModule_Validate()
843 PromiseModule_AppendString(module, "promise_type", promise_type); in PromiseModule_Validate()
844 PromiseModule_AppendString(module, "promiser", promiser); in PromiseModule_Validate()
845 PromiseModule_AppendInteger(module, "line_number", pp->offset.line); in PromiseModule_Validate()
846 PromiseModule_AppendString(module, "filename", PromiseGetBundle(pp)->source_path); in PromiseModule_Validate()
847 PromiseModule_AppendAllAttributes(module, ctx, pp); in PromiseModule_Validate()
848 PromiseModule_Send(module); in PromiseModule_Validate()
851 JsonElement *response = PromiseModule_Receive(module, pp); in PromiseModule_Validate()
894 PromiseModule *module, EvalContext *ctx, const Promise *pp) in PromiseModule_Evaluate() argument
896 assert(module != NULL); in PromiseModule_Evaluate()
902 PromiseModule_AppendString(module, "operation", "evaluate_promise"); in PromiseModule_Evaluate()
904 module, "log_level", LogLevelToRequestFromModule(pp)); in PromiseModule_Evaluate()
905 PromiseModule_AppendString(module, "promise_type", promise_type); in PromiseModule_Evaluate()
906 PromiseModule_AppendString(module, "promiser", promiser); in PromiseModule_Evaluate()
907 PromiseModule_AppendInteger(module, "line_number", pp->offset.line); in PromiseModule_Evaluate()
908 PromiseModule_AppendString(module, "filename", PromiseGetBundle(pp)->source_path); in PromiseModule_Evaluate()
910 PromiseModule_AppendAllAttributes(module, ctx, pp); in PromiseModule_Evaluate()
911 PromiseModule_Send(module); in PromiseModule_Evaluate()
913 JsonElement *response = PromiseModule_Receive(module, pp); in PromiseModule_Evaluate()
953 module->path); in PromiseModule_Evaluate()
966 module->path); in PromiseModule_Evaluate()
979 module->path); in PromiseModule_Evaluate()
1004 module->path); in PromiseModule_Evaluate()
1018 module->path); in PromiseModule_Evaluate()
1033 module->path); in PromiseModule_Evaluate()
1040 static void PromiseModule_Terminate(PromiseModule *module, const Promise *pp) in PromiseModule_Terminate() argument
1042 if (module != NULL) in PromiseModule_Terminate()
1044 PromiseModule_AppendString(module, "operation", "terminate"); in PromiseModule_Terminate()
1045 PromiseModule_Send(module); in PromiseModule_Terminate()
1047 JsonElement *response = PromiseModule_Receive(module, pp); in PromiseModule_Terminate()
1050 PromiseModule_DestroyInternal(module); in PromiseModule_Terminate()
1056 PromiseModule *module = data; in PromiseModule_Terminate_untyped() local
1057 PromiseModule_Terminate(module, NULL); in PromiseModule_Terminate_untyped()
1095 char *path = NULL; in EvaluateCustomPromise() local
1097 bool success = GetInterpreterAndPath(ctx, promise_block, &interpreter, &path); in EvaluateCustomPromise()
1101 assert(interpreter == NULL && path == NULL); in EvaluateCustomPromise()
1107 PromiseModule *module = MapGet(custom_modules, path); in EvaluateCustomPromise() local
1108 if (module == NULL) in EvaluateCustomPromise()
1110 module = PromiseModule_Start(interpreter, path); in EvaluateCustomPromise()
1111 if (module != NULL) in EvaluateCustomPromise()
1113 MapInsert(custom_modules, xstrdup(path), module); in EvaluateCustomPromise()
1118 free(path); in EvaluateCustomPromise()
1126 if (!StringEqual(interpreter, module->interpreter)) in EvaluateCustomPromise()
1130 path, module->interpreter, interpreter, pp->promiser, PromiseGetPromiseType(pp)); in EvaluateCustomPromise()
1132 free(path); in EvaluateCustomPromise()
1137 free(path); in EvaluateCustomPromise()
1141 bool valid = PromiseModule_Validate(module, ctx, pp); in EvaluateCustomPromise()
1145 valid = CustomPromise_IsFullyResolved(ctx, pp, module->json); in EvaluateCustomPromise()
1158 result = PromiseModule_Evaluate(module, ctx, pp); in EvaluateCustomPromise()