Something went wrong. Try again.
javascript for 🐜's, a tiny runtime with big ambitions antjs.org
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#ifndef ANT_MODULES_PROCESS_PLAN_H#define ANT_MODULES_PROCESS_PLAN_H
#include <stdbool.h>#include <stddef.h>#include <stdint.h>
#include "types.h"
typedef enum { ANT_PROCESS_STDERR_CAPTURE = 0, ANT_PROCESS_STDERR_TO_STDOUT,} ant_process_stderr_mode_t;
typedef enum { ANT_PROCESS_RESULT_TEXT = 0, ANT_PROCESS_RESULT_BYTES,} ant_process_result_mode_t;
typedef enum { ANT_PROCESS_REDIRECT_STDIN = 0, ANT_PROCESS_REDIRECT_STDOUT_TRUNCATE, ANT_PROCESS_REDIRECT_STDOUT_APPEND, ANT_PROCESS_REDIRECT_STDERR_TO_STDOUT,} ant_process_redirect_kind_t;
typedef struct { ant_process_redirect_kind_t kind; char *path;} ant_process_plan_redirect_t;
typedef enum { ANT_PROCESS_PLAN_COMMAND_EXTERNAL = 0, ANT_PROCESS_PLAN_COMMAND_NATIVE,} ant_process_plan_command_kind_t;
typedef struct { ant_process_plan_command_kind_t kind; union { struct { char **argv; size_t argc; } external; struct { char *stdout_data; size_t stdout_len; char *stderr_data; size_t stderr_len; int exit_code; } native; } as;} ant_process_plan_command_t;
typedef struct { ant_process_plan_command_t *commands; size_t command_count; ant_process_plan_redirect_t *redirects; size_t redirect_count; char *cwd; uint8_t stderr_mode; uint8_t result_mode; bool exited;} ant_process_plan_t;
bool ant_process_plan_add_native_stage( ant_process_plan_t *plan, const char *stdout_data, size_t stdout_len, const char *stderr_data, size_t stderr_len, int exit_code);
void ant_process_plan_init(ant_process_plan_t *plan);void ant_process_plan_dispose(ant_process_plan_t *plan);
bool ant_process_plan_add_command(ant_process_plan_t *plan, const char *const *argv, size_t argc);bool ant_process_plan_take_command(ant_process_plan_t *plan, char **argv, size_t argc);bool ant_process_plan_add_redirect(ant_process_plan_t *plan, ant_process_redirect_kind_t kind, const char *path);
ant_value_t ant_process_plan_rejected_result(ant_t *js, ant_value_t error);ant_value_t ant_process_plan_submit(ant_t *js, ant_process_plan_t *plan);
#endif