stdout/stderr/stdin file path overrides for targets

This commit is contained in:
Ryan Fleury
2024-10-17 11:25:47 -07:00
parent 23ad094a68
commit e376ad8113
13 changed files with 166 additions and 22 deletions
+25 -7
View File
@@ -36,7 +36,7 @@ RD_CmdKind_Null,
RD_CmdKind_Null,
};
String8 d_entity_kind_display_string_table[31] =
String8 d_entity_kind_display_string_table[34] =
{
str8_lit_comp("Nil"),
str8_lit_comp("Root"),
@@ -55,6 +55,9 @@ str8_lit_comp("Executable"),
str8_lit_comp("Arguments"),
str8_lit_comp("Working Directory"),
str8_lit_comp("Entry Point"),
str8_lit_comp("Standard Output Path"),
str8_lit_comp("Standard Error Path"),
str8_lit_comp("Standard Input Path"),
str8_lit_comp("Window"),
str8_lit_comp("Panel"),
str8_lit_comp("View"),
@@ -71,7 +74,7 @@ str8_lit_comp("Conversion Task"),
str8_lit_comp("Conversion Failure"),
};
String8 d_entity_kind_name_lower_table[31] =
String8 d_entity_kind_name_lower_table[34] =
{
str8_lit_comp("nil"),
str8_lit_comp("root"),
@@ -90,6 +93,9 @@ str8_lit_comp("executable"),
str8_lit_comp("arguments"),
str8_lit_comp("working_directory"),
str8_lit_comp("entry_point"),
str8_lit_comp("stdout_path"),
str8_lit_comp("stderr_path"),
str8_lit_comp("stdin_path"),
str8_lit_comp("window"),
str8_lit_comp("panel"),
str8_lit_comp("view"),
@@ -106,7 +112,7 @@ str8_lit_comp("conversion_task"),
str8_lit_comp("conversion_fail"),
};
String8 d_entity_kind_name_lower_plural_table[31] =
String8 d_entity_kind_name_lower_plural_table[34] =
{
str8_lit_comp("nils"),
str8_lit_comp("roots"),
@@ -125,6 +131,9 @@ str8_lit_comp("executables"),
str8_lit_comp("argumentses"),
str8_lit_comp("working_directories"),
str8_lit_comp("entry_points"),
str8_lit_comp("stdout_paths"),
str8_lit_comp("stderr_paths"),
str8_lit_comp("stdin_paths"),
str8_lit_comp("windows"),
str8_lit_comp("panels"),
str8_lit_comp("views"),
@@ -141,7 +150,7 @@ str8_lit_comp("conversion_tasks"),
str8_lit_comp("conversion_fails"),
};
String8 d_entity_kind_name_label_table[31] =
String8 d_entity_kind_name_label_table[34] =
{
str8_lit_comp("Label"),
str8_lit_comp("Label"),
@@ -158,8 +167,11 @@ str8_lit_comp("Location"),
str8_lit_comp("Label"),
str8_lit_comp("Executable"),
str8_lit_comp("Arguments"),
str8_lit_comp("Execution Path"),
str8_lit_comp("Path"),
str8_lit_comp("Symbol Name"),
str8_lit_comp("Path"),
str8_lit_comp("Path"),
str8_lit_comp("Path"),
str8_lit_comp("Label"),
str8_lit_comp("Label"),
str8_lit_comp("Label"),
@@ -176,7 +188,7 @@ str8_lit_comp("Label"),
str8_lit_comp("Label"),
};
RD_EntityKindFlags rd_entity_kind_flags_table[31] =
RD_EntityKindFlags rd_entity_kind_flags_table[34] =
{
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (0*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (0*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
@@ -195,6 +207,9 @@ RD_EntityKindFlags rd_entity_kind_flags_table[31] =
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (1*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (1*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (1*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(0*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (0*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (1*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (0*RD_EntityKindFlag_IsSerializedToConfig),
(1*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (1*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (1*RD_EntityKindFlag_IsSerializedToConfig),
(1*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (1*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (1*RD_EntityKindFlag_IsSerializedToConfig),
(1*RD_EntityKindFlag_CanDelete) | (0*RD_EntityKindFlag_CanFreeze) | (0*RD_EntityKindFlag_CanEdit) | (0*RD_EntityKindFlag_CanRename) | (0*RD_EntityKindFlag_CanEnable) | (0*RD_EntityKindFlag_CanCondition) | (1*RD_EntityKindFlag_CanDuplicate) | (0*RD_EntityKindFlag_NameIsCode) | (0*RD_EntityKindFlag_NameIsPath) | (1*RD_EntityKindFlag_UserDefinedLifetime) | (1*RD_EntityKindFlag_IsSerializedToConfig),
@@ -870,7 +885,7 @@ RD_ViewRuleInfo rd_view_rule_kind_info_table[35] =
{str8_lit_comp("geo3d"), str8_lit_comp("Visualizes memory as 3D geometry."), str8_lit_comp("Geometry (3D)"), str8_lit_comp("x:{'count':expr, 'vtx':expr, 'vtx_size':expr}"), RD_IconKind_Binoculars, (RD_ViewRuleInfoFlag_ShowInDocs*1|RD_ViewRuleInfoFlag_CanFilter*0|RD_ViewRuleInfoFlag_FilterIsCode*0|RD_ViewRuleInfoFlag_TypingAutomaticallyFilters*0|RD_ViewRuleInfoFlag_CanUseInWatchTable*1|RD_ViewRuleInfoFlag_CanFillValueCell*0|RD_ViewRuleInfoFlag_CanExpand*1), EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(geo3d) , RD_VIEW_RULE_UI_FUNCTION_NAME(geo3d)},
};
RD_IconKind rd_entity_kind_icon_kind_table[31] =
RD_IconKind rd_entity_kind_icon_kind_table[34] =
{
RD_IconKind_Null,
RD_IconKind_Null,
@@ -889,6 +904,9 @@ RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Null,
RD_IconKind_Window,
RD_IconKind_XSplit,
RD_IconKind_Null,
+9 -6
View File
@@ -34,6 +34,9 @@ RD_EntityKind_Executable,
RD_EntityKind_Arguments,
RD_EntityKind_WorkingDirectory,
RD_EntityKind_EntryPoint,
RD_EntityKind_StdoutPath,
RD_EntityKind_StderrPath,
RD_EntityKind_StdinPath,
RD_EntityKind_Window,
RD_EntityKind_Panel,
RD_EntityKind_View,
@@ -763,11 +766,11 @@ extern String8 rd_cfg_src_string_table[4];
extern RD_CmdKind rd_cfg_src_load_cmd_kind_table[4];
extern RD_CmdKind rd_cfg_src_write_cmd_kind_table[4];
extern RD_CmdKind rd_cfg_src_apply_cmd_kind_table[4];
extern String8 d_entity_kind_display_string_table[31];
extern String8 d_entity_kind_name_lower_table[31];
extern String8 d_entity_kind_name_lower_plural_table[31];
extern String8 d_entity_kind_name_label_table[31];
extern RD_EntityKindFlags rd_entity_kind_flags_table[31];
extern String8 d_entity_kind_display_string_table[34];
extern String8 d_entity_kind_name_lower_table[34];
extern String8 d_entity_kind_name_lower_plural_table[34];
extern String8 d_entity_kind_name_label_table[34];
extern RD_EntityKindFlags rd_entity_kind_flags_table[34];
extern Rng1U64 rd_reg_slot_range_table[34];
extern RD_StringBindingPair rd_default_binding_table[110];
extern String8 rd_binding_version_remap_old_name_table[8];
@@ -781,7 +784,7 @@ extern EV_ViewRuleExprExpandRangeInfoHookFunctionType * rd_collection_expr_expan
extern EV_ViewRuleExprExpandIDFromNumHookFunctionType * rd_collection_expr_expand_id_from_num_hook_function_table[18];
extern EV_ViewRuleExprExpandIDFromNumHookFunctionType * rd_collection_expr_expand_num_from_id_hook_function_table[18];
extern RD_ViewRuleInfo rd_view_rule_kind_info_table[35];
extern RD_IconKind rd_entity_kind_icon_kind_table[31];
extern RD_IconKind rd_entity_kind_icon_kind_table[34];
extern String8 rd_theme_preset_display_string_table[9];
extern String8 rd_theme_preset_code_string_table[9];
extern String8 rd_theme_color_version_remap_old_name_table[22];
+4 -1
View File
@@ -93,8 +93,11 @@ RD_EntityKindTable:
{Target target targets 1 0 1 1 1 0 1 0 0 1 1 "Label" Target "Target" }
{Executable executable executables 0 0 0 0 0 0 0 0 1 1 0 "Executable" Null "Executable" }
{Arguments arguments argumentses 0 0 0 0 0 0 0 0 0 1 0 "Arguments" Null "Arguments" }
{WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 1 1 0 "Execution Path" Null "Working Directory" }
{WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 1 1 0 "Path" Null "Working Directory" }
{EntryPoint entry_point entry_points 0 0 0 0 0 0 0 0 0 1 0 "Symbol Name" Null "Entry Point" }
{StdoutPath stdout_path stdout_paths 0 0 0 0 0 0 0 0 1 1 0 "Path" Null "Standard Output Path" }
{StderrPath stderr_path stderr_paths 0 0 0 0 0 0 0 0 1 1 0 "Path" Null "Standard Error Path" }
{StdinPath stdin_path stdin_paths 0 0 0 0 0 0 0 0 1 1 0 "Path" Null "Standard Input Path" }
//- rjf: frontend containers (windows, panels, views)
{Window window windows 1 0 0 0 0 0 1 0 0 1 1 "Label" Window "Window" }
+15
View File
@@ -1895,12 +1895,18 @@ rd_d_target_from_entity(RD_Entity *entity)
RD_Entity *src_target_exe = rd_entity_child_from_kind(entity, RD_EntityKind_Executable);
RD_Entity *src_target_args = rd_entity_child_from_kind(entity, RD_EntityKind_Arguments);
RD_Entity *src_target_wdir = rd_entity_child_from_kind(entity, RD_EntityKind_WorkingDirectory);
RD_Entity *src_target_stdo = rd_entity_child_from_kind(entity, RD_EntityKind_StdoutPath);
RD_Entity *src_target_stde = rd_entity_child_from_kind(entity, RD_EntityKind_StderrPath);
RD_Entity *src_target_stdi = rd_entity_child_from_kind(entity, RD_EntityKind_StdinPath);
RD_Entity *src_target_entry = rd_entity_child_from_kind(entity, RD_EntityKind_EntryPoint);
D_Target target = {0};
target.exe = src_target_exe->string;
target.args = src_target_args->string;
target.working_directory = src_target_wdir->string;
target.custom_entry_point_name = src_target_entry->string;
target.stdout_path = src_target_stdo->string;
target.stderr_path = src_target_stde->string;
target.stdin_path = src_target_stdi->string;
return target;
}
@@ -2301,6 +2307,9 @@ rd_ctrl_meta_eval_from_entity(Arena *arena, RD_Entity *entity)
RD_Entity *args= rd_entity_child_from_kind(entity, RD_EntityKind_Arguments);
RD_Entity *wdir= rd_entity_child_from_kind(entity, RD_EntityKind_WorkingDirectory);
RD_Entity *entr= rd_entity_child_from_kind(entity, RD_EntityKind_EntryPoint);
RD_Entity *stdo= rd_entity_child_from_kind(entity, RD_EntityKind_StdoutPath);
RD_Entity *stde= rd_entity_child_from_kind(entity, RD_EntityKind_StderrPath);
RD_Entity *stdi= rd_entity_child_from_kind(entity, RD_EntityKind_StdinPath);
RD_Entity *loc = rd_entity_child_from_kind(entity, RD_EntityKind_Location);
RD_Entity *cnd = rd_entity_child_from_kind(entity, RD_EntityKind_Condition);
RD_Entity *src = rd_entity_child_from_kind(entity, RD_EntityKind_Source);
@@ -2330,6 +2339,9 @@ rd_ctrl_meta_eval_from_entity(Arena *arena, RD_Entity *entity)
meval->args = args->string;
meval->working_directory = wdir->string;
meval->entry_point = entr->string;
meval->stdout_path = stdo->string;
meval->stderr_path = stde->string;
meval->stdin_path = stdi->string;
meval->source_location = src_loc_string;
meval->address_location = vaddr_loc_string;
meval->function_location = function_loc_string;
@@ -2600,6 +2612,9 @@ rd_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
StringMemberCase(args) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Arguments), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(working_directory) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_WorkingDirectory), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(entry_point) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_EntryPoint), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(stdout_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_StdoutPath), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(stderr_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_StderrPath), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(stdin_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_StdinPath), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(source_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Source), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(destination_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Dest), str8_cstring_capped(in, (U8 *)in + 4096));}
StringMemberCase(type) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Source), str8_cstring_capped(in, (U8 *)in + 4096));}
+2
View File
@@ -4,6 +4,8 @@
////////////////////////////////
//~ rjf: post-0.9.12 TODO notes
//
// [ ] fix quote input in quoteless watch window value editors
//
// [ ] per-target stdout/stderr file output paths
//
// [ ] double click on breakpoints/watch-pins/etc. to go to location
+5 -1
View File
@@ -5361,7 +5361,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(targets)
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.75f, .dequote_string = 1, .is_non_code = 0);
}
rd_watch_view_build(wv, RD_WatchViewFlag_NoHeader|RD_WatchViewFlag_PrettyNameMembers|RD_WatchViewFlag_PrettyEntityRows|RD_WatchViewFlag_DisableCacheLines,
str8_lit("targets"), str8_lit("only: label exe args working_directory entry_point str"), 1, 10, rect);
str8_lit("targets"), str8_lit("only: label exe args working_directory entry_point stdout_path stderr_path stdin_path str"), 1, 10, rect);
ProfEnd();
}
@@ -5823,6 +5823,10 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(text)
rd_regs()->cursor.column = rd_value_from_params_key(params, str8_lit("cursor_column")).s64;
rd_regs()->mark.line = rd_value_from_params_key(params, str8_lit("mark_line")).s64;
rd_regs()->mark.column = rd_value_from_params_key(params, str8_lit("mark_column")).s64;
if(rd_regs()->cursor.line == 0) { rd_regs()->cursor.line = 1; }
if(rd_regs()->cursor.column == 0) { rd_regs()->cursor.column = 1; }
if(rd_regs()->mark.line == 0) { rd_regs()->mark.line = 1; }
if(rd_regs()->mark.column == 0) { rd_regs()->mark.column = 1; }
E_Eval eval = e_eval_from_string(scratch.arena, string);
Rng1U64 range = rd_range_from_eval_params(eval, params);
rd_regs()->text_key = rd_key_from_eval_space_range(eval.space, range, 1);